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.

[参考译文] TMS570LC4357:关于通知 IOMM 错误的 ESM 1.37

Guru**** 2468610 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1035415/tms570lc4357-regarding-esm-1-37-that-notify-iomm-error

器件型号:TMS570LC4357

您好!  

这是有关 ESM 1.37的问题、通知 IOMM 错误。(ESM1.37:Group1 Channel37)
我们现在在评估板上测试 TMS570 MCU 的 ESM 功能。
根据 SPNU563A 第6.6.2节中的说明、我们尝试使用以下测试代码强制 ESM 1.37。
但测试结果不符合预期。 MCU 未通知错误。

地址错误)
以在监控器模式下读取 FFFF2000h。

易失性 uint32 * iomm_OOB =(uint32 *) 0xFFFFFF2000;
易失性 uint32 val32;

/*使能引脚复用*/
PinMuxReg -> KICKER0 = 0x83E70B13U;
PinMuxReg -> KICKER1 = 0x95A4F1E0U;

val32 =* iomm_OOB;//超出范围读取*/

/*禁用引脚复用*/
PinMuxReg ->KICKER0 = 0x000000000000U;
PinMuxReg ->KICKER1 = 0x000000000000U;

保护错误)
在用户模式下写入 KICK _REG0/KICK REG1/PINMMRnn。
MPU 配置在用户模式下接受到 IOMM 寄存器的 R/W 访问。

/*进入用户模式*/
asm (" STMFD sp!、{r0}");
asm (" r0夫人、CPSR");
asm (" BIC r0、r0、#0x1f");
asm (" ORR r0、r0、#0x10");
asm (" MSR CPSR、r0");
asm (" LDMFD sp!、{r0}");

/*使能引脚复用*/
PinMuxReg -> KICKER0 = 0x83E70B13U;
PinMuxReg -> KICKER1 = 0x95A4F1E0U;

PinMuxReg ->PINMUX[7]= 0U;

/*禁用引脚复用*/
PinMuxReg ->KICKER0 = 0x000000000000U;
PinMuxReg ->KICKER1 = 0x000000000000U;


我们应该修改测试代码吗? 请提供建议。

谢谢、

好的。

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

    您好、Sho、

    访问未实现的存储器帧会生成数据中止。  

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

    QJ-San、您好!

    我了解在访问未实现的存储器帧时生成数据中止。

    我想在发生数据中止时会同时注意到 ESM1.37、这是正确的吗?

    请告诉我生成 ESM1.37的技术。

    谢谢、

    好的

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

    您好、Sho、

    很抱歉耽误你的回答。 在用户模式中将数据写入 PINMMR 寄存器将生成 ESM 1.37错误。 但 应首先启用 ERR_ENABLE_REG。

    示例代码:

    //进入用户模式

    asm (" cps #16");
    asm (" mov lr、r0");
    asm (" r1夫人、CPSR");
    asm (" mSR spsr_cxsf、r1");

    /*使能引脚复用*/
    kickerReg ->KICKER0 = 0x83E70B13U;
    kickerReg ->KICKER1 = 0x95A4F1E0U;

    //启用 addr 和保护错误信令
    iommErrFaultReg ->ERR_ENABLE_REG = 0x3;

    在用户模式下、//将数据写入 pinmmr
    PinMuxReg -> PINMMR7 = 0U;

    /*禁用引脚复用*/
    kickerReg ->KICKER0 = 0x0;
    kickerReg ->KICKER1 = 0x0;

    ESM 1.37将被置位:故障地址为0x12C (pinmmr7寄存器的偏移量)

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

    QJ-San、您好!

    感谢您的支持。

    此致、

    好的