I'm looking to do some prototype work, trying to leverage some existing custom I/O modules (multiprotocol serial, GPIO, some proprietary and rare buses, etc.) from my company to the iMX53x.
The modules are PCI interface to their normal host boards (PPC and Intel boards), but we want to see if we can link them up with the iMX53x as well.
So, anyone have any thoughts about using the External Memory Interface (or ???) to talk PCI (not PCIe) to these expansion modules?
Thanks!
For my application, the FPGA would act as a PCIe to PCI host bridge. There are some other benefits to using a FPGA for the bridge. The FPGA bridge also takes care of the legacy PC104 bus functionality ( i.e. ISA bus ).
John Goodman said:
No, in my application I am using the i.MX53 and PCI host as host system for PC104 Plus bus. This is fairly standard for PC104 Plus processor boards. ARM doesn't really have a presence in this market due to lack of a PCI host interface. The i.MX6 should change all that. Also, there are TI ARM offerings that can be used, but this is a Freescale web site :-)
Leon Woestenberg said:John,
you came up with a good point: host (or root complex in terms of PCIe) versus device end point.
When I read David's posting, I assumed he meant that the i.MX53 would be the PCI host, not the PCI device. In your (John) application you use the i.MX53 as end point.
Either way, it is hard to implement the missing hardware functionality of PCI (signals, bus and logic) using software emulation and a generic address/data bus. It would be much effort and probably outdated by the time i.MX6 is a viable technology.
I would bet on i.MX6 for sure. I'm not sure if i.MX6 supports end-point mode.
No, in my application I am using the i.MX53 and PCI host as host system for PC104 Plus bus. This is fairly standard for PC104 Plus processor boards. ARM doesn't really have a presence in this market due to lack of a PCI host interface. The i.MX6 should change all that. Also, there are TI ARM offerings that can be used, but this is a Freescale web site :-)
Leon Woestenberg said:
John,
you came up with a good point: host (or root complex in terms of PCIe) versus device end point.
When I read David's posting, I assumed he meant that the i.MX53 would be the PCI host, not the PCI device. In your (John) application you use the i.MX53 as end point.
Either way, it is hard to implement the missing hardware functionality of PCI (signals, bus and logic) using software emulation and a generic address/data bus. It would be much effort and probably outdated by the time i.MX6 is a viable technology.
I would bet on i.MX6 for sure. I'm not sure if i.MX6 supports end-point mode.
John,
you came up with a good point: host (or root complex in terms of PCIe) versus device end point.
When I read David's posting, I assumed he meant that the i.MX53 would be the PCI host, not the PCI device. In your (John) application you use the i.MX53 as end point.
Either way, it is hard to implement the missing hardware functionality of PCI (signals, bus and logic) using software emulation and a generic address/data bus. It would be much effort and probably outdated by the time i.MX6 is a viable technology.
I would bet on i.MX6 for sure. I'm not sure if i.MX6 supports end-point mode.
Interfacing to a PCI host from an i.MX53 is complicated by the fact that the i.MX53's DMA functionality is very complex and not easily available outside of the i.MX53. You can work around the DMA issues with interrupts on the i.MX53, but that defeats the benefits of the DMA functionality of the combined i.MX53 and PCI host system.
Also, you would have to write custom drivers for interfacing with the PCI host.
I'm working on using PCI host IP in a FPGA to interface to the i.MX53 to interface to PC104 Plus boards, but it is a very difficult task.
The i.MX6 PCIe interface would greatly simply the task and make the PCI host interface fairly transparent to the i.MX6's software.
Dual core i.MX6, should even be cheaper from what I heard.
Are the I/O modules FPGA based, and/or can you move to PCI Express easily?
I'm aware of the iMX6 and PCIe, but wasn't sure of the availability now. I'm underwhelmed by the part number details on theFreescale site right now for the iMX6 families. What would be the various replacements for something like the iMX537?
I do not see why an i.MX53 would help in prototyping new products, as the successor (i.MX6) has PCI Express, not PCI.
For the PCI bridge, look at PLX9050 etc. It will be pretty much software kernel work to get that to work with the i.MX53, but you may another ARM chip that supports it. Assuming Linux, see this kernel source: arch/arm/kernel/plx90x0.c
Adding an external PCI host chip with address/databus interface is acceptable.
What we are trying to achieve is to leverage the existing large set of PCI I/O Modules (our intellectual property) and an iMX53x processor module that we are using for other applications. The goal is to do some rapid product prototyping for additional products.
It is technically near impossible to implement PCI in a system where no hardware PCI host is present, like in the i.MX53. Unless you would add an external PCI host chip with address/data bus interface, but that kind of defeats it.
You cannot emulate the PCI bus on the EMI in software.
What are you trying to achieve in your prototyping, maybe there are better solutions?