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:启用 FIQ 中断后会生成 CCMR4比较错误

Guru**** 2482105 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/701803/tms570ls3137-a-ccmr4-compare-error-is-generated-after-enabling-fiq-interrupts

器件型号:TMS570LS3137

我最近必须实现自己的 FIQ 处理程序、该处理程序在调试器中工作。 但是、在调试器之外、在电源复位之后、我会得到一个 CCMR4-COMPARE (ESM 组2)错误。 我认为这种情况的发生(在调试器之外很困难)与 _enable_FIQ ()内在函数调用同时发生。 我有办法忽略第一个 CCMR4-COMPARE 错误、应用程序将再次启动、但无法提供此变通办法。  

是否有任何方法启用(和使用) FIQ 中断会导致 CCMR4比较错误、是否有任何方法可以避免该错误?

谢谢、

Jim

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

    您好、Jim、

    您在启动期间是否遵循了本应用手册中列出的初始化过程?

    对于两个 CPU、不保证 CPU 内部寄存器以相同的状态加电。 在进行任何函数调用之前、这些内部内核寄存器需要初始化为预定义状态。

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

    QJ、

    感谢您的快速回复。 我们在启动序列中添加了一个引导加载程序(闪存升级)模块、因此我们的初始化序列与标准不同、但这基本上意味着我们只需初始化时钟、GIO、FlashECC、并且 CAN 比标准更早。 我在这个应用手册中注意到的一个问题是第31步--在设置 ESM 之前启用 ARM 中断,我尝试过它,但它没有解决这个问题。 基本上、我当前的修复方法是:

    PreventCcmr4CompareErrors = true;
    _enable_FIQ ();//清除 CPSR 中的 F 标志
    PreventCcmr4CompareErrors = false;

    此权变措施还不错(仅忽略一行代码的错误)、但理想情况下不需要此操作。 如果你有任何其他我可以查看或尝试的东西、我将不胜感激。  

    谢谢、

    Jim

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

    我不知道为什么调用此内在函数会导致 CCMR 错误。 您能否使用以下函数而不是_enable_FIQ ():

    _enable_interrupt_();

    在 sys_core.asm 中定义
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    QJ、
    enable_interrupt_()的运行方式仍然相同、这是定义的 instric 按指定的方式工作的好方法。 我有一个可接受的权变措施、即仅针对启用 FIQ 的单行代码忽略 CCMR 错误、以便我们可以解决此问题。
    谢谢、
    Jim