Part Number: AM3359
Other Parts Discussed in Thread: TMDSICE3359,
Hi All,
We are working on creating an User layer application where we want to use the PRU with Time Triggered sent functionality.
For this we are using the TMDSICE3359 with Linux User Space ICSS_EMAC sample application as the reference.
This application provides the API reference and libraries to initialize the PRU with the ICSS_EMAC firmware and use the UIO driver to communicate with the firmware to send and receive frames.
As a first step we used the sample application that comes pre-compiled in the TI-SDK images for each Processor SDK which works fine. Now I compile this test application with some modifications where I face following problems with the application
- First problem is with the correct initialization of the device
- With the cross-compiled icss_emac test application, the PRU does not seem to be initialized correctly and I don’t see any communication on the network at all though the application does not report any errors
- If I use the pre-compiled application from the TI-SDK image first and then run the compiled application after the pre-compiled application, then the compiled application also works fine and packets are sent correctly.
- The second problem is with the Ethernet Link Status interrupt
- The test application provided by the TI waits for Link interrupt before starting any communication
- I have noticed that the link status interrupt only happens if we plug-out and plug-in the wire after the application has started
- This is not ideal for the type of application I am working as we can’t be there always to plug-out and plug-in during the operation or after a system restart
- To overcome this in test application, I modify the test application to use the link status register instead to check the link status instead of waiting for the interrupt
- Checking link status like this does not allow sending frames which are higher than 60 bytes
- If I send a packet >60 bytes, sometimes there are no frames in the network and sometimes the first frame keeps repeating forever with no interval between frames
- If I stop the application and start it again, the packets transmission stops but I see that corrupt packets are sent into the network
- I assume this happens because the MAC buffers are disoriented somehow.
Any information and support would be really appreciated.
The links to the Processor SDK and TI PDK I use is given below.
Processor SDK Linux RT -> http://software-dl.ti.com/processor-sdk-linux-rt/esd/AM335X/latest/index_FDS.html
am335x-evm-linux-rt-06.03.00.106.img - http://software-dl.ti.com/processor-sdk-linux-rt/esd/AM335X/latest/exports/am335x-evm-linux-rt-06.03.00.106.img.zip
TI PDK -> https://git.ti.com/cgit/processor-sdk/pdk/
In this case I use the branch - DEV.PROCESSOR-SDK_06.03.00.106
Regards,
Gaurav