This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS570LS3137:添加到 TX 描述符列表时出现问题

Guru**** 2468460 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/671476/tms570ls3137-problem-appending-to-tx-descriptor-list

器件型号:TMS570LS3137

 在处理描述符列表时、我尝试附加到 TX 描述符列表。  附加信息准备就绪后、新信息的起始位置将添加到执行列表中。  更新后指向新信息、将针对 EOQ 评估先前的信息、以了解状态机是否仍在执行。  

使用 Code Composer 存储器浏览器、我有调试信息、显示描述符列表是预期 的、除了后续 寻址的状态、 这包括 初始信息、附加信息的更新指针以及 附加信息。  它还显示 未设置保存 EOQ 值内容的变量、这表示状态机仍在运行、因此应处理列表的附加部分。   

但是,有几个迹象表明,没有处理所附的清单部分。 1) 1)外部 Wireshark 跟踪未看到附加的数据包信息。  2) 2)存储器浏览器显示初始列表 EOQ 位已设置、3)附加列表所有者位表示列表尚未处理。  我假设在存储器浏览器窗口中设置 EOQ 位而不在前面提到的变量中设置 EOQ 位的原因是状态机在从系统中提取存储器浏览器信息之前继续运行到最后更新 EOQ 位的时间点。

TRM 的第29章说明了添加到此列表的过程、 以确保正确处理状态机执行和软件应用到列表之间的竞争条件。  这一进程 已得到遵循,但不起作用。  我在其他器件上看到过有关此问题的其他一些帖子、但我没有找到记录该问题解决方案的帖子。

请告知是否能够附加到正在执行的 TX 描述符列表以及是否有权变措施。  我们的目的是不使用中断进行以太网处理、并且在 添加新描述符之前不必等待 EOQ 条件。

谢谢、

Tom

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Tom、

    当描述符的“下一个”指针为 NULL 时,EOQ 标志由 EMAC 在数据包的最后一个描述符上设置。 这是 EMAC 向软件应用程序指示它认为它已到达列表末尾的方式。 当软件应用程序看到 EOQ 标志置位时、应用程序可以在此时将新列表指针写入启动该过程的同一 HDP、从而提交新列表或附加列表中错过的部分。

    将数据包添加到发送列表、将空缓冲区添加到接收列表时、此过程适用。

    如何修改演示以产生问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 QJ、

     

    我没有使用 lwip 演示程序。 我的系统要简单得多。 我正在开发一个低级驱动程序、用于处理描述符列表并写入指针寄存器。  我可以提供重复此问题的项目存档。  我使用的是 Hercules 安全 MCU 开发套件 TMS570 MCU。  请告诉我、这是否对您有效。

     

     

    这是使用第一个数据包信息更新描述符列表后、写入值为0xFC520010的指针寄存器之前的 TX 描述符数据。

    TX_STATUS 是0xFC52000C 处的内容、在用于收集此数据的断点之前读取。 此位置初始化为该值、以便驱动程序看到 EOQ 条件。 驱动器使用该 EOQ 条件来确定需要写入指针寄存器才能启动状态机。

     

     

     

    这是使用第二个数据包信息更新描述符列表后的 TX 描述符数据。

    TX 状态是在断点之前从0xFC52003C 上的之前 EOP 位置读取的。 它指示非 EOQ 状态、因此指针寄存器不会更新、因为预期会执行列表的附加部分。

    当内存浏览器在到达断点后更新时、0xFC52003C 处的 EOQ 状态已更新、但您可以看到第二个数据包 SOP 位置0xFC52004C、EOP 位置0xFC52006C 未更新。 这表示未处理列表的附加部分(第二个数据包)、即使之前的 EOP (TX_STATUS)在附加列表时指示了非 EOQ 条件。  这可以通过在 Wireshark 跟踪中看不到第二个数据包来确认。  EOQ 状态似乎与它要克服的比赛条件相同。

     

     

     

    谢谢、

     

    Tom

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    哇、看起来像是从我之前的帖子中删除了 screense2e.ti.com/.../6443.Hi-QJ.docxhots 的字中粘贴。  我已附上上一篇文章、其中包含两个屏幕截图。