您好!
我们拥有基于 AM335x 处理器的产品、并且我们正在使用该软件的入门软件。 我们使用的是以太网接口。
在初始化引导以太网接口后、链路建立、我们能够接收和传输数据包。 但在一段时间后、以太网接口无法正常工作。 我们无法接收数据包。
我们进行了调试、发现我们没有 接收到以太网'Rx 中断'。
在 TRM 中、他们提到了以下内容
"写入3PSW 完成指针(RXn_CP)。 主机写入的数据(最后处理的缓冲区的缓冲区描述符地址)与子系统写入的寄存器中的数据进行比较
(子系统使用的最后一个缓冲区描述符的地址)。 如果这两个值不相等(这意味着3PSW 接收的数据包比 CPU 处理的数据包多)、则接收数据包
完成中断信号保持有效。 如果这两个值相等(这意味着主机已处理系统已接收的所有数据包)、则挂起的中断无效。 。
通过读取接收通道完成指针寄存器(RXn_CP)可找到3PSW 期望的值"
因此、我们检查了 CPPI DMA 是否正在处理。 我们选中了 RXHDP (头描述符指针)。 其值为 NULL。 因此 DMA 不知道在哪里写入接收数据包。 我还检查了描述符的状态、所有描述符都归 DMA 所有。 在这种情况下、我们不会得到 NULL。
我们是 AM335x 入门软件代码。 我们使用的是"Enet echo"应用中给定的相同 RX 中断处理程序逻辑。 它是根据 TRM 中给出的软件描述"接收操作"编写的。
所以我们无法理解为什么 RXHDP 描述符变为 NULL? 我们如何调试这个问题?