您好!
我使用的是具有 AM6442 SoC 的 SK AM64x。 我需要有关为我的应用编程 SoC 上的以太网外设(CPSW3G)的帮助。
背面故事(可选):
我正尽力使用 AM6442开发 CNC 运动控制器。 由于应用程序需要实时高性能、操作系统速度太慢。 因此、我在不使用 Linux、FreeRTOS 或 NoRTOS 的情况下执行此操作。 文档中包含的内容不能少于绝对垃圾。 到目前为止、我已成功为该 SoC 创建了自己的 API、而不使用除 SCIclient 之外的任何 TI 库或 API。 我成功地集成了所有 A53内核、R5F 内核、PRU 内核、DDR RAM (这是最困难的)、计时器、中断、使用 PRU 的高速 GPIO 以及所有其他功能、以及使用 PRU 的以太网(这也很难实现)。 我还创建了自己的定制 SBL。 不使用 NoRTOS 的原因与文档内容相同、只是垃圾。 我发誓、我尽力使用 NoRTOS。 在我自己的 API 中、我确实使用 PRU @ 1Gbps 在以太网上传输数据、但我遇到的一个主要障碍是传输的数据没有 CRC、因此基本上所有以太网交换机都只丢弃我的帧。 我必须将 AM64x 直接连接到 PC 的以太网端口、并在 Windows 中使用 PCAP 数据包捕获驱动程序从不带 CRC 的 AM64x 读取数据。 因此、它不是很有用、因为我也计划将它用作本地 Web 服务器、因此我可以使用 iOS、Android 或 Webapp 控制我的 CNC。 我已经尝试过太多时间、为了让 PRU 上的以太网正常工作并尝试传输 CRC 来工作、我已经付出了太多的时间、但现在我放弃了。 也许我会更幸运地使用专用的 CPSW3G 以太网外设。
问题:
如何仅使用寄存器编程连接以太网外设(CPSW3G)以在以太网端口上传输和接收数据? 我已经成功配置了这个外设、并且还对板载 PHY 进行了编程、我知道这实际上已经被正确配置。 除了从外设发送和接收数据的主要部分之外,CPSW3G 部分中的文档介绍了如何使用 DMA/PSI-L/CPPI 来执行它。 但没有有关如何执行该操作的信息。 我不知道 CPPI 是如何工作的、也不知道 DMA 是如何运行的、也不知道如何配置。 即使是数据表中的 DMA 部分也不提供如何连接 CPSW 外设的线索。 我在这里迷路了、有人会帮我解决这个问题。 是否有其他相关文档会有所帮助? 是否有人能够在 BeagleBone 上执行此操作? 我看到 BeagleBone AI 上的 AM572x 具有与 AM64x 上类似的 CPSW。
AM6442参考手册: https://www.ti.com/lit/pdf/spruim2
谢谢