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.

[参考译文] CCS/AM5728:MPU0在 RTOS 中冻结

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

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/637787/ccs-am5728-mpu0-freeze-in-rtos

器件型号:AM5728

工具/软件:Code Composer Studio

与 BeagleBone X15类似、我在运行基于 TI AM5728的定制板时遇到稳定性问题。 RTOS SW 在一个内核 MPU0上运行、并且偶尔(通常在几个小时后)冻结。 当冻结时、调试器无法连接到 MPU0目标、同时我可以不出任何问题地连接到 MPU1。

调试器错误: CortexA15_0:停止目标 CPU 时出现问题:(错误-1323 @ 0x1386AC)由于管道被暂停、器件无法进入调试/停止模式。 对电路板进行下电上电。 如果错误仍然存在、请确认配置和/或尝试更可靠的 JTAG 设置(例如、较低的 TCLK)。 (仿真包6.0.504.1)

出于测试目的、我已经在 MPU1上启动了简单程序、当 MPU0冻结 MPU1时、继续正常运行。 MPU0的 WFE 和 WFI 标志处于非活动状态、此外、我已经进行了额外的测试、尝试将 MPU1置于 WFI/Forced_OFF 状态。 但是、我仍然可以连接调试器并从强制关闭状态唤醒、如技术手册中所述。

我通过连接到 CS_DAP_DebugSS 转储了寄存器、但没有发现任何特殊的东西。 连接的寄存器转储:

如果一个内核无法连接调试器、而第二个内核运行时没有问题、冻结问题的潜在原因是什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    不清楚内核冻结的原因是由 RTOS SW 引起的、还是由器件或电路板设置引起的。

    我将与一位硬件专家联系、以获得有关此问题的更多见解。 您能否确认是否已使用适用于定制板的引脚多路复用工具更新了引脚多路复用设置并按照此处所述配置了接口的 IO 延迟:
    www.ti.com/.../sprac44a.pdf

    您是否使用 PMIC 配置 AVS 和 ABB 设置、如我们在 RTOS SDK 中提供的 SBL 代码中所示。 相同的应用程序是否在 BeagleBone X15上运行而不会出现任何问题? 您能不能说明哪个代码正在运行 MPU0 (代码从 DDR 运行? ,使用哪些接口等)

    此致、
    Rahul

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

    我们使用 PDK 1.0.5中的函数配置 AVS 和 ABB、并进行配置
    PMHAL_VM_OPP_HIGH 和 BOARD_INIT_PLL_OPP_HIGH

    我无法在 BeagleBone X15上启动相同的应用、因为它依赖于硬件。
    MPU0上的代码从 DDR 存储器运行、并利用大量外设:UART、I2C、EMMC、以太网、GPMC、 定时器、CAN、EMIF

    此外、我们使用一个 DSP 和一个 PRU 内核。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Romko、

    电路板设计问题或软件问题可能会导致内核与调试器断开连接、然后拒绝重新连接。  需要对这个问题空间进行分段。  以下是几个选项:

    1. 应用程序之前是否稳定运行、之后添加了其他特性或功能、之后是否与报告的故障一致?  如果是、您应在之前恢复到程序、然后逐步添加新代码、以查看故障添加的位置。
    2. 与#1类似、您可以将应用程序缩减为运行时运行的更简单的程序、而不会失败、然后以增量方式添加函数、直到问题再次出现。  然后、您可以专注于最后一个更改以确定原因。
    3. 与上述内容类似、您可以将程序缩减为可在 GP EVM 上运行的程序。  如果它在 EVM 上运行但在定制板上停止、则可以分析可能产生影响的板之间的差异。  您可以仿真外设输入流、以允许在 EVM 上运行更多代码、而无需连接物理接口。  

    Tom

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

    您好、Tom、

    我知道这可能是硬件或软件问题、甚至是硬件或软件问题。 但问题是、哪个软件错误会导致我无法通过调试器连接到 CPU 内核?

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

    Romko、

    任何导致代码执行意外分支的软件错误、如损坏的指针、都可能导致这种情况发生。  如果调试器正在执行一个非常紧密的循环、它不能轻易地获得对内核的控制。

    Tom

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

    紧密环路是什么意思?

    它是无限循环、如下所示:  

    @
    @转到无限循环
    @
    loop1:
    B 环路1 

    或者可能还有其他一些命令?  

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

    Romko、

    这种情况下、指令会放入指令缓存中、从而不会从内核中进行外部提取。  这通常只需执行随机数据即可实现。  要测试该理论、请使用随机数据加载存储器、并将 PC 设置为开始、然后按 run。  某些数据集会导致调试器无法连接。

    Tom