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.

RM57L843: POM Program Addresses cannot be written directly?

Part Number: RM57L843

In my case, I mapped address 0x00100000(Program Start Address) to 0x00070000(Overlay Start Address) in INTERNAL_RAM(Overlay Target Region).

I disabled MPU.

After POM is initialized and enabled, I can see POM is working in CCS Memory View. When I change the value at 0x08070000, the value of 0x00100000 changes too.

But after I executed the following code, strange thing occurs:

*(volatile uint32_t*)0x00100000 = 0x55;

I thought that code would change the content of SRAM at 0x08070000, but I didn't see any changes.

And at mean time, when I change the content at 0x08070000, there is nothing changed at address 0x00100000.

To me, it looks like the POM mapping is broken at this time. Why? Can't I directly write values into POM Program Address Area?

  • Hello Canfoderiskii,

    You will need to write directly to the overlay address and not the original address to change the value. Remember that the original address is still in the flash domain and is not writable. The intent of the POM module is to overlay new values to Flash but the address will still behave like flash and only allow reads. For updates to the overlay values in realtime, you can write directly to the address in volatile memory to update the value read from flash.

    For the issue are seeing, please review the setting in the POMGLBCTRL.OTADDR. It should be bits 31:22 of the start address of the overlay region. In your case, I believe it should be 0x080 in these upper bits.
  • Thank you for the reply. I will prevent writing Program Address in code.