I have no knowledge of PCIExpress protocol. The questions I have are: (1) where do I start to learn PCIE protocol ? (2) I am an experienced embedded systems programmer. How long would it take to implement PCIE stack in C/C++ ?
(3) Any pointers to documentation of this protocol or examples would be useful
thanks in advance
Abdex
--------------------------------------- Posted through
PCIe doesn't have a "stack" like Ethernet or USB. The hardware uses the serial lanes to make the end device look like old PCI, which is itself a memory/IO bus without protocol. There is a lot of protocol, but it's done in hardware on both ends, for instance inside an x86 CPU, and in some hardcore logic in an FPGA or ASIC.
You can program an FPGA to be a PCIe endpoint (assuming it has the hard IP) and it can become a memory-mapped region in the CPU address space. All your program has to do is map it from its physical space (assigned by the BIOS) into something a program can reach. We do that in Linux, with dev/mem or something, and there must be some way in Windows.
PCIe is supposed to be fully transparent to PCI, so all that configuration space/BIOS/interrupt stuff is supposed to just work. It seems to.
--
John Larkin Highland Technology, Inc
picosecond timing laser drivers and controllers
jlarkin att highlandtechnology dott com
http://www.highlandtechnology.com
The BIOS generally does all that at boot time, just like PCI. Whatever OS you use, you can call whatever resources it has to find out where the configuration process put things. Or, bare metal, you can prowl config space yourself.
On the device end, you do have to set up the BAR config registers, so that the BIOS knows what resources you need. In an FPGA, you've got to do that on purpose. If you are plugging in a commercial board or using a standard peripherial chip, that's usually all done for you.
I guess an extreme do-it-yourself embedded system might not even have a BIOS, but then you could leap on the golden opportunity to NOT use PCIe.
CPUs used to have memory busses that you could hang things on. Some still do. But many now only get out over the DRAM and USB and PCIe paths, which sort of suck for real embedded design.
--
John Larkin Highland Technology, Inc
picosecond timing laser drivers and controllers
jlarkin att highlandtechnology dott com
http://www.highlandtechnology.com
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.