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.

[参考译文] RM48L952:IOMM 错误使能状态寄存器配置

Guru**** 2601915 points
Other Parts Discussed in Thread: RM48L952, HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/742909/rm48l952-iomm-error-enable-status-register-configuarion

器件型号:RM48L952
主题中讨论的其他器件: HALCOGEN

您好!

我正在尝试调用 IOMM 错误来执行我的 ESM 错误处理机制。 从 RM48L952第4.4.1节的 TRM 中、我注意到在未先解锁 IOMM 寄存器的情况下对它们进行任何写入都会生成一个错误。 我查看了 Halcogen 的 muxinit()代码,并复制了逻辑以在运行时改变 pinMuxReg ->PINMMR。 我希望这会生成配置的 ESM 错误响应。 但没有发生任何事情。  

检查寄存器值可以清楚地看到、勘误寄存器为0x0000000、因此即使 ESM 配置为使用中断和 nERROR 驱动为低电平来处理通道37错误、IOMM 模块也不会启用错误检测。  

我检查了 pinmux.c、但没有看到 ERR_ENABLE_REG 设置来捕获错误。 因此、在禁用 IOMM 引脚复用以启用错误检测之前、我已经为 pinmux.c 添加了逻辑。 运行该代码时、我的应用程序写入 PINMMR4、我仍然无法抛出错误。 IOMM 的寄存器活动表示没有任何被触发、我的 ESM 处理程序肯定不会被通道37中断触发。  

请参阅下面的代码、我在这里遗漏了什么? 如何证明 IOMM 错误检测?

谢谢

Jamie

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

    因此、进一步调查可以清楚地看到、我的问题源于默认启动逻辑、使 MCU 处于特权模式。 在运行时、启动后、我们的应用没有理由保持特权模式、因此我添加了汇编器指令以移至用户模式。 请参阅以下内容:

    #ifdef __debug__
    /*进入用户模式-确保对内存区域的全面保护*/
    asm (" CPS #0x10");
    PinMuxReg -> PINMMR4 = 0xFAFAFAFAFA;
    
    #endif 

    我现在成功地将通道37错误与 ESM 处理程序进行了捕捉。

    我已经知道 R4模式已经有一段时间了、但我还没有发现它们的应用将保持在用户模式、这基本上破坏了 MCU 固有的存储器保护功能。 如果更清楚地强调这一点、或许在 HALcogen 中、则最好考虑在系统初始化后进入用户模式。 尤其是当切换到用户模式时、如果未实现、则会使 HALcogen 中显示的其他设置无效。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我很高兴您找到了解决方案!

    此致、
    米罗