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.

[参考译文] AM263P4-Q1:<ECP>有关 CCM 中断处理程序的阐释

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1596024/am263p4-q1-ecp-clarification-regarding-ccm-interrupt-handler

器件型号: AM263P4-Q1

尊敬的团队:  

我目前正在处理 CCM 模块 在启动开发过程中、ESM 中断处理序列存在问题。

我能够成功地强制 CPU 输出比较出现自检错误 (0xF);在 ESM 寄存器中的地址 0x52D00444 处设置相应的状态位、并按预期输入中断处理程序。

但是、当我立即触发注入错误 (0x9) 时、ESM 寄存器会正确地反映新的错误位 (6 和 19)、但控制器不会进入中断处理程序。 当我触发 VIM 比较自检错误时会发生类似的问题 — 尽管设置了 ESM 状态位(位 19)、但不会执行中断处理程序。

我正在通过将放置while(interrupt_generated_flag)在处理程序内来验证中断进入。

您能否澄清一下为什么没有为这些后续中断触发处理程序、以及是否可以按顺序处理多个 CCM 中断?  

此致、  
Vandana Chintala

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

    尊敬的  Vandana:

    据我所知、需要移除 JTAG 才能运行与 CCM 相关的自检。 您可以切换到 OSPI 模式、并将测试代码加载到 SPI。

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

    尊敬的 Wang:

    我拔下调试电缆并刷写了代码。 由于 while 循环会检查 ESM 位 19 和 6 是否已设置 interrupt_generated_flag 、然后更新中断处理程序内部、因此我希望在启动目标配置时停止执行。 但是、代码并没有止于此。

    即使处理程序被延迟、我仍然希望interrupt_generated_flag在中断处理程序执行时被置位、但它保持为 0、表示没有从第二个中断(自检错误强制)进入中断处理程序。

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

    尊敬的  Vandana:

    您是否使用 SDK SDL 中的 CCM 示例? 我之前试过 CCM、但没有看到这种问题。

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

    尊敬的 Wang:

    我确定了问题—在使用 SDK 的 ESM 高中断处理程序时未正确清除 VIM ACTIRQ 寄存器。 因此、只有第一个中断进入处理程序。 更正 VIM 清除后、中断现在按预期工作。 感谢您的支持。

    不过、我需要澄清一点、  

    对于与 CCM 相关的错误事件(例如 SDL_ESM0_R5FSS0_COMPARE_ERR_PULSE_0、SDL_ESM0_CCM_0_selfTEST_ERR 和 SDL_ESM0_R5FSS0_VIM_COMPARE_ERR_PULSE_0)、 是否必须通过中断处理这些事件、或者是否可以轮询 CCM/ESM 寄存器并清除错误?

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

    尊敬的 Vandana:

    回调函数应负责清除中断标志。 也可以通过直接读取/写入 CCM/ESM 状态寄存器来手动清除错误。

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

    尊敬的 Wang:

    感谢您的意见、非常感谢您的参与。 我有关于 CCM SDK 中使用的位图结构的问题。 您能帮助我了解这两个位图吗?  

    在我的理解下、还应该启用比较错误和总线监控错误事件、以便 ESM 可以指示错误。 但是、在当前位图中、只会启用自检错误和锁步比较错误事件位。

    以下是我预计会为 R5FSS0 启用的错误事件(因为我不使用 R5FSS1):

    • SDL_ESM0_R5FSS0_R5FSS0_BUS_MONITOR_ERR_PULSE_0 (69u)

    • SDL_ESM0_R5FSS0_R5FSS0_COMPARE_ERR_PULSE_0 (70u)

    • SDL_ESM0_R5FSS0_R5FSS0_VIM_COMPARE_ERR_PULSE_0 (71U)

    • SDL_ESM0_R5FSS0_R5FSS0_CPU_miscompare_pulse_0 (72u)

    • SDL_ESM0_CCM_0_selftest_ERR (83U)

    • SDL_ESM0_CCM_0_锁 步_COMPARE_ERR (84U)

    您能否澄清一下这些错误事件、以及如果自检错误事件为 83U、为什么我们使用{1、8}进行自检错误配置、而不是{2、19}。  

    我将使用的是 SDK 版本 11.00.00.19。 PFA 下面的位图供您参考、谢谢。  

       

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

    好的、我将进行检查、然后今天晚些时候再回来给您。

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

    尊敬的 Vandana:

     sdl_ESM_processInterruptSource (() 将根据中断源重新计算组号和位号。