【发布时间】:2014-02-28 14:49:38
【问题描述】:
STM32F2 micro-controller 具有内置功能,可防止使用调试接口读取应用程序代码。它工作正常,并且通过将读取保护(RDP)级别配置为'1' (!0xAA || !0xCC) or '2' (0xCC which is irreversible) 很容易完成。除了试图关闭它是我遇到问题的地方。
RDP 级别降低回 0 时的预期行为:
- 芯片将执行批量闪存擦除。
- 随后清除保护标志。
- 系统重置
除非在重启后,闪存已成功擦除,但保护标志保持在“1”级(0x55),保持调试接口禁用。从而阻止我编写任何新的应用程序代码。可以摆弄调试器并手动将标志强制为0级(0xAA)..
有没有与STM32F2xx系列有相同或相似问题的人可以帮助我?我正在使用STM32 标准外设驱动程序对闪存进行编程。
启用
// Enable read out protection
FLASH_OB_Unlock();
FLASH_OB_RDPConfig(OB_RDP_Level_1);
FLASH_OB_Launch();
FLASH_OB_Lock();
// Restart platform
NVIC_SystemReset();
禁用
// Disable read out protection
FLASH_OB_Unlock();
FLASH_OB_RDPConfig(OB_RDP_Level_0);
FLASH_OB_Launch();
FLASH_OB_Lock();
// Restart platform
NVIC_SystemReset();
【问题讨论】:
标签: c flash security microcontroller stm32