TI Sitara AM64x 上以太网外设的低级/寄存器编程

问题描述 投票:0回答:1

我使用的是 TI 的 SK AM64x,它具有 AM6442 SoC。曾经参与过 Beaglebone 系列或 TI Sitara 工作的人们请帮忙。我需要帮助在 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 数据包捕获驱动程序从 AM64x 读取不带 CRC 的数据。所以它不是那么有用,因为我也计划将它用作本地 Web 服务器,这样我就可以使用 iOS、Android 或 Web 应用程序控制我的 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

谢谢

embedded ethernet beagleboneblack dma
1个回答
0
投票

我设法对这一切进行逆向工程并使其正常工作。我在 TI 的 e2e 论坛上创建了一个类似的帖子。这是解决方案的链接:https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1230751/sk-am64-how-to-use-dma-for-cpsw-使用裸机

现在回想起来,我花了一年的时间才做到这一点。如果我当时知道自己要做什么,我就会留下来,不仅仅是为了让它工作,而是为了不存在的文档而远离芯片组本身。我仍然认为这是一项不可能完成的任务,不知道我是如何完成的。再也不会做那种事了。

我对所有想要按照我的方式完成任务的人的建议。不要陷入其中。即使是我上面发布的解决方案也需要以不可能的深度了解 SOC 才能使其正常工作。寻找其他方法来做到这一点,除非您需要为类似的应用程序提供绝对尖端的高性能速度,而其他解决方案无法提供。

© www.soinside.com 2019 - 2024. All rights reserved.