Recently we come across the memory overwrite issue in the field. We haven't observed in our initial level testing. Suddenly our device is misbehaving. After the binary comparison of our filed device and working device binary we came to know that some memory overwriting is happening. After that we decided to enable to MPU in our device.
Enable the MPU first we have divided in our FRAM in three sections.
FRAM : origin = 0x4000, length = 0xBF80 ( This Read, write and execute)
FRAM2 : origin = 0x10000,length = 0x24400 (Execute)
FRAM3 : origin = 0x34400,length = 0xFBF0( Read and Write (Data Logging))
Attached Screenshot of memory segmentation.
FRAM: Persistant Data, Text_ISR , IPE data
FRAM2: text data
FRAM3: Logging data
As we have two option to enable the MPU from GUI or system_pre_init() function. I have checked with both side and its working fine.
Please find the screenshot of MPU configurations.
Problem I am facing is whenever I will place the text_ISR() in the FRAM2 (That is execute only) section then my code is not loading to device. As per my understanding .text_ISR() is in FRAM2 which is execute segment only.
Is it I am doing anything wrong with MPU configuration.
help is greatly appreciated.