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