This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PCIe education and data transfers in a Windows environment

Other Parts Discussed in Thread: TMDXEVMPCI

I have a TMDXEVM6670LE and the TMDXEVMPCI (AMC to PCIe adaptor module).  I am tasked with demonstrating how to load large amounts of data from a PC to the DSP board via PCIe.  I am new to the PCIe world.  I saw the boot loader demo in the mcsdk/tools folder.  Unfortunately it requires a Linux machine and I need to run on a Windows (XP) PC.  I don't know how to modify the example for use on a Windows platform (or even if that makes sense).  I am hoping you can get me started in the right direction with a few tips/pointers.

1.  What training/docs/examples/other do you recommend to get up to speed with how to use the Keystone devices and the PCIe interface?

2.  Is there a similar PCIe boot example for Windows platforms?

3.  Do you have any examples geared towards moving large quantities of data using the PCIe interface?

Thanks.

Kevin

  • Any of the TI employees care to take a shot at answering my questions?

    Thanks.

  • I'm not a TI employee, but faced the same problem as you (except my host was VxWorks instead of Windows).

    Porting the example from Linux to VxWorks took about 5 days (doing other things in parallel). The steps were as follows:

    Try to compile the code for VxWorks and note the errors. Look up the Linux APIs on web and try to find VxWorks equivalent. Main changes were:

    Remove all linux header files.

    #define printk printf

    Strip out all virtual addressing, because VxWorks does not use it. In your case, probably replace with Windows virtual address APIs.

    Maybe convert some 32-bit pointers to 64-bit (if you use 64-bit Windows, hopefully not).

    Maybe write wrappers around Windows APIs to make them look like linux.

    Understand PCIe enough to know what a BAR is, and how to read it via windows API.

    Maybe write a big-endian to little-endian conversion utility, and use it whenever reading or writing over PCIe. Only needed if windows and your DSP have different endianess.

    My only prior knowledge of PCI Express was reading the book by Ravi Budruk, and reading SPRUGS6A, and the example code.

    I can't show you my code for legal reasons.

     

     

  • Jonathan,

    Thanks for the response.  I'll see what I can do.  A Windows example from TI sure would be useful....

    Kevin