Our team is facing a kind of hard point while trying to initiate a PCI Express interaction between two NXP targets.
Target 1 : IMX6 Quad Plus running an official Linux (3.14.52) freescale distribution and defined as PCie Root Complex
Target 2 : T1040 running an official Linux (3.12) QorIQ freescale distribution and defined as PCIe Endpoint.
Schematic view :
- We achieved to configure the PCIe link in order to see the T1040 as a regular endpoint device on the IMX6.
- We succeed to send frames on the first IMX6 outbound windows and see data correctly transmitted to the correct Software Portal on the T1040.
As soon as we try to read or write into the PCIe n°4 Memory Space (Base address : 0xC_0000_0000) :
+ Problem 1 : The T1040 Linux hangs. These is to say that nothing is printed anymore on the serial console (no exception, no error, nothing at all), like if the T1040 was in active waiting state and the IMX6 was physically absent.
+ Problem 2 : When we reset or unplug/replug the IMX6, the T1040 is released and either his Linux crash (with some exceptions printed) or nothing bad happens and the command prompt comeback fully functional.
+ Problem 3 : Obviously, nothing is written in the IMX6 RAM as expected.
+ Problem 4 : The same operation (writing or reading in the PCIe n°4 Memory Space) works fine if we run the IMX6 on U-boot and set the same configuration in his PCIe registers. Like this, the IMX6 RAM is written as soon as we write some data into the T1040 PCIe n°4 Memory Space.
Any idea on this linux hanging or on our entire problem ?