Hi Segger,
1. Thanks to the great Ozone debug, it helped a lot in development
2. I want to report some problem about self-modified code. The application looks like this
- My application implemented some check-sum against STM32's UUID
- I added some code (store in 0x08008000) to calculate the checksum, and store result to somewhere in Flash
- The code to calculate checksum is only executed one time. Once the check-sum is written to Flash, I used STM32 API to erase the code in 0x08008000
- Assume FW will be read-out eventually, the approach adds some protection more or less
3. I was using OZone debugger to debug the application. I opened a memory windows in 0x08008000
After manipulating the registers to erase Flash, I expect to see the memory content becomes 0xFFFFFFFF. However, the values still kept in the window
I even manipulate the FLASH control registers directly to *try* many PM regions
With many many times trial, finally I disconnect the target and re-attach, the memory become 0xFFFFFFFF (erased status)
4. I think this might relate to OZone implementation: you probably don't expect that users would "erase" the PM (or this is NOT common behavior)
Therefore, the memory window content doesn't refresh. (need disconnect, re-attach, and the Ozone will re-read the memory)
I'm just wondering, whether it's possible to force OZone to re-read the memory unconditionally to make such debug easier
Thanks
Regards,
Lihgong
1. Thanks to the great Ozone debug, it helped a lot in development
2. I want to report some problem about self-modified code. The application looks like this
- My application implemented some check-sum against STM32's UUID
- I added some code (store in 0x08008000) to calculate the checksum, and store result to somewhere in Flash
- The code to calculate checksum is only executed one time. Once the check-sum is written to Flash, I used STM32 API to erase the code in 0x08008000
- Assume FW will be read-out eventually, the approach adds some protection more or less
3. I was using OZone debugger to debug the application. I opened a memory windows in 0x08008000
After manipulating the registers to erase Flash, I expect to see the memory content becomes 0xFFFFFFFF. However, the values still kept in the window
I even manipulate the FLASH control registers directly to *try* many PM regions
With many many times trial, finally I disconnect the target and re-attach, the memory become 0xFFFFFFFF (erased status)
4. I think this might relate to OZone implementation: you probably don't expect that users would "erase" the PM (or this is NOT common behavior)
Therefore, the memory window content doesn't refresh. (need disconnect, re-attach, and the Ozone will re-read the memory)
I'm just wondering, whether it's possible to force OZone to re-read the memory unconditionally to make such debug easier
Thanks
Regards,
Lihgong