Hello All,
I am experiencing a bizarre behavior that I'm hoping someone can shed some light on. I have a 16-byte signature located at address 0x00DFF0 in flash that every so often will be read as erased on boot after system reset. Rate of occurance is maybe one in 200 resets. I am happy to chalk this one up to personal stupidity (programmer error) except that the entire 512-byte segment that contains the signature is not being erased. This signature is located in the same segment as the C-runtime which appears to be unaffected. How can this happen?
Details:
The system has a custom bootloader located at E000-FFFF which will enter firmware update mode on boot if either a certain key combination is pressed or if the previously mentioned signature does not match its expected value. The signature is located at the highest flash address allocated for the main firmware so that it will be the last thing programmed on firmware update. If the firmware reprogramming is interrupted, the signature will not be present and on boot the bootloader will automatically return to update mode instead of jumping to the presumed incomplete firmware image. OK, so here's the rub; everything works beautifully except once every few days, on boot the system will read the signature as all FFh (erased state). All subsequent attempts to read the signature see FFh, yet not all of that segment has been cleared.
MSP430F5529 running at 4MHz