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.

[参考译文] AM5728:[AM5728]任务在 TI RTOS 下触发 EDMA 时挂起

Guru**** 2451970 points
Other Parts Discussed in Thread: AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1549939/am5728-am5728-task-hangs-when-triggering-edma-under-ti-rtos

器件型号:AM5728


工具/软件:

您好:
我目前正在 AM5728 平台上运行 TI-RTOS、并且遇到了一个问题、即在触发用于 PCIe 通信的 EDMA 后任务停止执行。
很难确定导致此问题的确切原因、我希望得到任何帮助或指导。
您能告诉我们从哪里开始对这种行为进行故障排除吗?

提前感谢您的支持。

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

    尊敬的 Daewon:

    您能否详细介绍一下您正在使用的 RTOS SDK 以及任何日志或 ROV 错误日志?

    我将重新将您的线程分配给我们的 RTOS 工程师。

    -Josue

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

    感谢您的答复。
    我想分享基于其他测试结果的更新。

    我们正在使用 processor_sdk_rtos_am57xx_09_03_00_00、最初在 TI-RTOS 下的 AM5728 上遇到问题、即所有任务进入空闲状态并在 EDMA 触发时停止响应。
    PCIe 通信通过包含两个主要任务的状态机进行管理:

    -一个任务运行每个 100µs 以检查是否应触发 EDMA 传输以及它是否已完成。 传输完成时、将调用 ISR(中断服务例程)、该例程会设置完成标志。 此标志随后由任务定期检查。

    -其他任务每 500 毫秒运行一次以准备新数据并启动下一个 EDMA 传输请求。

    另外、为了确保正确的系统初始化、我们添加了一个基于事件的同步机制、以便每个任务在所有其他任务完全准备就绪后再继续。 这并未添加为调试的权变措施、而是为了确保系统在执行主逻辑之前进入明确定义的初始状态。

    引入此同步机制后、不再出现问题—EDMA 正常运行、所有任务均按预期运行。

    但是、由于此机制并非专门设计用于解决问题、因此我们仍然不确定原始问题的根本原因。
    您能否告知在上一个案例中哪些因素可能导致所有任务进入空闲状态、或者建议我们采取任何诊断方法来识别类似问题?

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

    我想更正我之前的评论。
    事实证明、问题仍然存在—系统继续表现出与所有任务停止响应相同的行为。

    具体而言、我们观察到系统仍然卡在Load_idleFxn(Void)功能内。 这表明所有其他任务可能都被抢占或被阻止、并且系统已转换到空闲状态、而不会返回正常运行。

    我们目前正在研究可能导致此行为的原因、但如果深入了解系统最终可能会卡在空闲循环中的原因、我们将不胜感激。

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

    我们通过将代码从基于 CSL(芯片支持库)的实现修改为基于 RTOS 的结构来解决该问题。

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

    尊敬的 Daewon:

    感谢您的更新。 很高兴知道问题已解决、因此我将结束这一主题。

    此致、

    Karthik