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.

[参考译文] MSP430FR6047:MSP430FR6047中的 MPU 保护

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1172198/msp430fr6047-mpu-protection-in-msp430fr6047

器件型号:MSP430FR6047

您好!

    最近、我们在该字段中遇到了存储器覆盖问题。 我们在初始级别测试中未观察到。 突然、我们的器件出现了错误行为。 在对归档器件和工作器件二进制文件进行二进制比较后、我们得知发生了一些存储器覆盖。 之后、我们决定在器件中启用 MPU。

启用 MPU 首先、我们将 FRAM 分为三个部分。

FRAM:origin = 0x4000,length = 0xBF80 (这是读取、写入和执行)
FRAM2:origin = 0x10000、length = 0x24400 (执行)
FRAM3:origin = 0x34400,length = 0xFBF0 (读写(数据记录))

附加的内存分段屏幕截图。

/resized-image/__size/640x480/__key/communityserver-discussions-components-files/166/Memory_5F00_Partition.png

FRAM:持久数据、text_ISR、IPE 数据

FRAM2:文本数据

FRAM3:记录数据

因为我们有两个选项可以从 GUI 或 system_pre_init()函数启用 MPU。 我已经检查了两侧的情况、其工作正常。

请找到 MPU 配置的屏幕截图。

/resized-image/__size/640x480/__key/communityserver-discussions-components-files/166/MPU_5F00_Enable_5F00_Low_5F00_Level_5F00_Init.png/resized-image/__size/640x480/__key/communityserver-discussions-components-files/166/MPU_5F00_Registers.png

/resized-image/__size/640x480/__key/communityserver-discussions-components-files/166/MSP_5F00_ENABLE.png

/resized-image/__size/640x480/__key/communityserver-discussions-components-files/166/MPU_5F00_Enable_5F00_Low_5F00_Level_5F00_Init.png

我所面临的问题是,每当我将 text_isr()放入 FRAM2 (即只执行)部分时,代码就不会加载到器件中。 根据我的理解,.text_isr()位于仅执行段的 FRAM2中。

是我对 MPU 配置做了任何错误。

非常感谢您的帮助。

谢谢

Ajay Matariya

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

    您好、Ajay、

    您使用了 USS 代码来进行此测试? 对吧?

    当您将  text_isr()放入 FRAM2 (读取和执行)时。 那么您会遇到一些错误吗?

    我认为该代码应包含一些 FRAM 写入操作、在 USS 代码中、应包含一些用作 RAM 函数(LEA RAM)的 FRAM。

    谢谢!

    此致

    Johnson

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

    大多数情况下,我在调试模式下检查代码,修改后,我检查天气中断点是将 system_pre_init()函数添加到主函数。 当我将 text_isr()放入 FRAM2 (读取和执行)时,代码不会启动。 (脚本外)

    我的问题是天气.text_isr()函数需要写入访问吗? 如果是、则它位于.text 段下的原因。

    其他限制是、我可以将 FRAM 最大值除以三个段。 如果.text_isr ()段位于写入访问区域中,那么我如何保护.text_isr ()。

    谢谢  

    Ajay Matariya

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

    也请查找链接器以更好地了解。/cfs-file/__key/communityserver-discussions-components-files/166/MSP430FR6047_5F00_Linker.txt

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

    您好、Ajay、

    看起来  text_ISR 函数具有一些 FRAM 写入操作、因此该段无法启用 MPU 保护。

    谢谢!

    此致

    Johnson