Reading data at low addresses changes depending on when I read it.
How big is the RAM overlay? I assume it is for the interrupt vector table and that the table can not be in Flash.
I'm trying to calculate a CRC on the firmware during initialization and also later while it is running.
For example 0x88 get changed in the following Cypress generated code. The code in italics was added by me.
dataAt88 = 0xFB95; dataAgainAt88 = 0x61d9; address = 0x61d9; PWM_RIGHT_PUMP_ISR__INTC_NUMBER = 18u;
void PWM_RIGHT_PUMP_ISR_SetVector(cyisraddress address)
uint32_t dataAt88 = *(uint32_t*)0x88;
CyRamVectors[CYINT_IRQ_BASE + PWM_RIGHT_PUMP_ISR__INTC_NUMBER] = address;
uint32_t dataAgainAt88 = *(uint32_t*)0x88;
Address 0x00000088 is flash and not overlaid by ram.
As long as you do not rewrite flash it will keep its content. Use debugger to display memory, any changes would be marked in red colour.