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.

[参考译文] AM2634-Q1:有时 CCM 模块在上电时正常工作、CPU 始终进入 ESM 高优先级中断处理程序

Guru**** 2544000 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1285083/am2634-q1-sometimes-ccm-module-works-abnormal-when-power-on-and-cpu-always-gets-into-esm-high-priority-interrupt-handler

器件型号:AM2634-Q1

尊敬的 BU 专家:  

客户使用 SDL 初始化 R5FSS1核心群集的 CCM、并让其在锁步模式下工作。 现在他们正在进行压力测试、即定期断电并在电路板上查看器件是否正常工作。 它们会发现、有时在上电后、由于 WD 不受处理、AM263x 始终会自行复位。 为了调试该问题、他们禁用了 WD。 然后、当问题发生时、他们使用仿真器访问芯片(GEL 脚本的操作全部被禁用)、发现 R5FSS1-0位于 ESM 处理程序中以清除 CCM 状态、继续运行内核、之后仍然会进入这个 ESM 处理程序。 然而、当他们尝试过上述几段时间的调试操作时、 R5FSS1-0能够再次工作、即不会再进入 ESM 处理程序并且能够正常工作。  

为了进一步确定这个根本原因,他们删除了 CCM 配置代码,尝试相同的测试。 现在问题没有发生。 它指出,这一问题真正是 CCM 造成的。 并且他们有一个有趣的共同点:当问题得到解决时、在通过仿真连接芯片并在仿真后断开后、芯片可以正常工作。 仿真器似乎会"重置" CCM 模块或其他模块。  

请帮助分析这个问题、为什么 CCM 有时会被占用、甚至 SDL 中的 ESM 处理程序也无法保存。 以及仿真器能够"恢复"CCM 模块的原因。  

谢谢。此致、  

将会  

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

    大家好、 Will、

    CPU/VIM CCM-R5F 可运行在下列四个运行模式中的一个:

    1. 主动比较锁步模式
    2. 自检
    3. 错误强制
    4. 自检错误强制

    可通过向相应诊断的 KEY 寄存器(CCMKEYRx)写入一个专用密钥来选择工作模式。 模式1 (主动比较锁步模式)是启动时的默认模式。 在锁步模式中、CPU 和 VIMS 的总线输出信号被 比较。 通过向 ESM 发送错误来表示 CPU 比较总线输出的差异、

    客户的压力测试中使用哪种模式?  

    并不是 Cortex-R5F 的所有内部寄存器(R0、R1、...)在复位时都有固定的值。 为了避免错误的 CCM-R5F 比较错误、应用软件需要确保 在寄存器被使用前、两个 CPU 的 CPU 寄存器被初始化为相同的值。

    您知道哪个 ESM 标志被设定了吗?

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

    您好、QJ:  

    感谢您的回答。 我会就这个 ESM 标志与客户核实、但我认为它是 CCM_1_lockstep_compare_err、因为客户到目前为止尚未为 R5FSS1添加自检代码。   

    并非 Cortex-R5F 的所有内部寄存器(R0、R1、...)在复位时都具有固定值。 为了避免错误的 CCM-R5F 比较错误、应用软件需要确保 在寄存器被使用前、两个 CPU 的 CPU 寄存器都初始化为相同的值。

    应用软件如何初始化内部寄存器? 我们是否有相应的 API、它是非常低的级别。  

    此致、  

    将会  

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

    您好、Will、

    在执行 CCM 自检之前、JTAG 仿真器应该被断开。

    据我所知、某些调试操作会将 CPU 置于暂停调试状态、从而暂停代码执行。  由于暂停调试事件是异步的、调试请求有可能导致锁步丢失。 CCM-R5F 将在检测到暂停调试请求时禁用所有功能诊断。  不会生成内核比较错误并且标志不会更新。  

    Unknown 说:
    他们删除了 CCM 配置代码

    你是指 SDL_CCM_INIT ()的代码吗?

    Unknown 说:
    R5FSS1-0位于 ESM 处理程序以清除 CCM 状态、继续运行内核、然后仍然进入此 ESM 处理程序。

    您能告诉我 INT 处理程序中的哪个指令,例如 SDL_ESM_hiInterruptHandler()吗?

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

    引导加载程序应在 R5FSSx 配置为在锁步模式下运行后执行此操作。

    您可以在  boot_armv7r_asm.S 中_c_int00函数的开头重新初始化这些寄存器。 我没有看到用于执行该作业的 API。

    MOV r0、0x0000
    MOV R1、#0x0000
    MOV R2,#0x0000
    MOV R3、#0x0000
    MOV R4、#0x0000
    MOV R5、#0x0000
    MOV R6、#0x0000
    MOV r7、#0x0000
    MOV R8、#0x0000
    MOV R9、#0x0000
    MOV R10、#0x0000
    MOV r11、#0x0000
    MOV R12、#0x0000
    MOV R13、#0x0000

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

    您好、QJ:  

    CCM-R5F 将在检测到暂停调试请求时禁用所有功能诊断。  将不会生成内核比较错误并不会更新标志

    现在了解。 谢谢。  

    您的意思是 SDL_CCM_init ()的代码吗?

    是的、如果他们移除了此器件、则可以避免此问题。  

    您能告诉我 INT 处理程序中的哪条指令 (例如 SDL_ESM_hiInterruptHandler()吗?

    是的,程序将进入  SDL_ESM_HiInterruptHandler(),CCM 错误会被设置为导致 ESM 具有高优先级的中断。 并将调用相应的 CCM 回调。  

    此致、  

    将会  

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

    您好、QJ:  

    引导加载程序应在 R5FSSx 配置为在锁定步进模式下运行后执行此操作

    我想您谈论的是 SBL、而不是 RBL? 我已检查 SBL 代码(SBL_QSPI)、但找不到任何代码:  

     

    c_int_00中没有初始化代码:  

    我将尝试添加您建议的代码、并在此处更新结果。  

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

    您好、Will、

    我将再次咨询我们的硬件专家、看看这些内部寄存器是否由硬件自动初始化。  

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

    您好、QJ:  

    解决方案工作正常! 现在可以避免该问题。  

    此致、  

    将会