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:检查 MCU 的特权模式

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1493316/tms570lc4357-checking-privilege-mode-of-mcu

器件型号:TMS570LC4357

工具与软件:

你(们)好

我将读取和清除 ESM 的状态寄存器。 EG  ESM 状态寄存器1 (ESMSR1)

我想在读取后清除通道位、以检查错误是否再次发生。 写入只在特权模式中。 我如何知道 MCU 是否处于特权模式? 我读取的数值表明控制寄存器中有一个位指示 MCU 是处于特权模式还是用户模式。 请让我知道哪个位,即哪个寄存器和哪个位。 如果 MCU 处于用户模式、如何将其设置回特权模式?  

期待您的回复。 谢谢你

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

    尊敬的 LayEng:

    CPSR 寄存器中的 MODE 位指示工作模式:

    如上所示、除了用户模式、所有其他模式都表示内核处于特权模式。

    您还可以参考以下内容以了解更多信息并获取与模式验证和更改相关的代码:

    (13) TMS570LS0714:组7擦除问题-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    ——

    谢谢、此致、
    Jagadish。

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

    你好、Jagadish

    感谢您的答复。 您尝试粘贴上面的 CPSR 图像已删除。 您能再次尝试粘贴吗? 我在 TRM 中找不到它、唯一的例外是在寄存器中提及了位。 如有可能、还请写入寄存器的地址。 我也可以使用它进行搜索。 谢谢你

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

    尊敬的 LayEng:

    这不是控制器 TRM、而是 cortex-R5内核 TRM:

    以下是核心 TRM:

    e2e.ti.com/.../3000.DDI0460C_5F00_cortexr5_5F00_trm.pdf

    ——
    谢谢、此致、
    Jagadish。

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

    尊敬的 Jagadish

    感谢您的答复。 我可以说权限模式为0x0000001f 和0x00000013吗? 我可以使用这个库函数 _getCPSRValue_()来获得这个值? 我使用此代码来获取特权模式。 请告诉我是否正确。

    uint32_t u32PCStat=_getCPSRValue_()和0x0000001f;
    if ((u32PCStat=0x00000013)||(u32PCStat==0x0000001f))

       返回 true;
    }
    设计

       返回 false;
    }

    TRUE =>特权、FALSE =>非特权

    谢谢

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

    尊敬的 LayEng:

    用户模式以外的模式统称为特权模式:

    因此、我建议您按如下方式修改您的代码:

    uint32_t u32PCStat=_getCPSRValue_()和0x0000001f;
    if ((u32PCStat==0x00000010))

       返回 false;
    }
    设计

       返回 true;
    }

    TRUE =>特权、FALSE =>非特权/用户模式

    ——
    谢谢、此致、
    Jagadish。

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

    谢谢。