Hi,
I am using SK AM64x, which has an AM6442 SoC. I need help programming the Ethernet Peripheral (CPSW3G) on the SoC for my application.
Back Story(Optional):
I am trying my very best to develop a CNC motion controller using AM6442. Since the application requires real-time high performance, OS's are too slow. So I am doing this without using Linux, FreeRTOS, or NoRTOS. The documentation is nothing less than absolute garbage. So far, I've managed to create my own API for this SoC without using any of TI's libraries or APIs other than SCIclient. I was successfully able to integrate all the A53 Cores, R5F Cores, PRU Cores, DDR RAM(This was the hardest), Timers, Interrupts, High Speed GPIOs using PRU, and all the other goodies, and also Ethernet using PRU(This too was very hard). I also made my own custom SBL. The reason for not using NoRTOS is the same as the documentation is just garbage. I swear, I tried my best to use NoRTOS. In my own API, I did manage to transfer data on Ethernet using PRU @ 1Gbps, except one big hurdle I am stuck at is that the transmitted data has no CRC, so basically all Ethernet switches just drop my frame. I have to connect AM64x directly to my PC's Ethernet port and use the PCAP packet capture driver in Windows to read data from AM64x without CRC. So it's not so useful since I also plan to use it as a local web server too, so I can control my CNC using iOS, Android, or Webapp. I have tried way too hard and given too much of my time to get the Ethernet on PRU to get working and try to transmit CRC to work, but now I give up. Maybe I'll have better luck with the dedicated CPSW3G Ethernet peripheral.
Question:
How do I interface with the Ethernet Peripheral(CPSW3G) to transfer and receive data on an Ethernet port using only register programming? I have managed to configure this peripheral and also programme the onboard PHY, which I know for a fact is configured properly. Except for the main part of sending and receiving data from the peripheral, the documentation in the CPSW3G section says something about how I have to use DMA/PSI-L/CPPI to do it . but has no information as to how to do it. I have no clue how CPPI works, and I don't have the DMA running and have no clue how to configure that either. Even the DMA section in the datasheet gives no clue on how to interface with the CPSW peripheral. I am just lost here, Someone please help on where can I even start to do this. Any other related documentation that would help? Has anyone managed to do it on Beaglebone? I see AM572x on Beaglebone AI has kind of a similar CPSW as it is on AM64x.
AM6442 Reference Manual: https://www.ti.com/lit/pdf/spruim2
Thanks