Part Number: TMDSEVM6678
Other Parts Discussed in Thread: 66AK2H12
Hi all,
I am having trouble with a PCIe boot loader on the TMDSEVM6678L (rev. 3B).
The boot loader is based on the PCIe driver example from the PDK v2.0.4, located in packages/ti/drv/pcie/example/sample/src/.
I have removed stuff which does not apply to our application (like outbound mapping), and added initialization of DDR.
On the host-side, there is a kernel driver which was based on the PCIe demo linux host loader from the same PDK, located in packages/ti/boot/examples/pcie/linux_host_loader/.
I have refactored the code a bit, and removed some parts that we do not need (like DMA transfers).
There is also a loader tool for writing boot table binaries to the device, via the kernel driver's device files.
I have attached a ZIP with our source code.
This all works fine on the desktop computer, meaning I can access the various memories and boot the individual cores.
The problems arise when I try to use it with a 64-bit ARM host, more specifically the NXP LS1043A-RDB.
Serial output from the C6678 shows that it does complete the PCIe initialization.
However, I don't access the memories that I expect, and I have so far not been able to figure out why.
I am quite sure that I am accessing memory _somewhere_, because writing to and reading from it does actually work.
At this point, I don't know if the problem is in the boot loader, the kernel driver or the loader tool.
I have been able to run the regular PCIe boot demo with the 64-bit ARM host, so I am leaning towards it being a problem with the boot loader.
So, for a start, I would really like to know exactly how the RBL initializes the device for PCIe boot mode.
That would allow me to compare and see if I am missing any steps.
Where can I find information about this?
Any other tips would also be greatly appreciated.
Has anyone else run into cross-platform problems with PCIe?
Best regards,
Martin Etnestad