AnsweredAssumed Answered

STM32 Flash organization

Question asked by jacob.ariel on Mar 28, 2015
Latest reply on Mar 28, 2015 by jacob.ariel
Hello!
I found an interesting issue with FLASH_Erase_Sector().
Two setups, one always works the other usually doesn't.

Setup 1 - that always works:
Program starts at SECTOR_0

[code]
define symbol __ICFEDIT_intvec_start__ = 0x08000000;
define symbol __ICFEDIT_region_ROM_start__    = 0x08000000;
[/code]


And my variables I wish to save is at SECTOR_10 (0x080C0000) 

Setup 2 - That "sometimes" works:
Program starts at SECTOR_6 (2nd 128KB sector)

[code]
define symbol __ICFEDIT_intvec_start__ = 0x08040000;
define symbol __ICFEDIT_region_ROM_start__    = 0x08040000;
[/code]


And my variables I wish to save is at SECTOR_[0 to 5] SECTOR_[7 to 11].

In the 2nd setup the PC will run to the end of the memory (when I stop it and look at the assembly windows).
The weird thing is that it's inconsistent, sometimes it does work..
If I try to debug it, moving step by step it *always* work, if I run it it will fail (stuck)

Looking at the project.map everything looks good..
Maybe it's something to do with timing? (sector <5 are smaller, faster to erase which is also why I prefer the 2nd setup).

Did you encounter this phenomena? What do you think?


Outcomes