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.
您好!
最近、我们在该字段中遇到了存储器覆盖问题。 我们在初始级别测试中未观察到。 突然、我们的器件出现了错误行为。 在对归档器件和工作器件二进制文件进行二进制比较后、我们得知发生了一些存储器覆盖。 之后、我们决定在器件中启用 MPU。
启用 MPU 首先、我们将 FRAM 分为三个部分。
FRAM:origin = 0x4000,length = 0xBF80 (这是读取、写入和执行)
FRAM2:origin = 0x10000、length = 0x24400 (执行)
FRAM3:origin = 0x34400,length = 0xFBF0 (读写(数据记录))
附加的内存分段屏幕截图。
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
我所面临的问题是,每当我将 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