stm32 flash corruptor
1.0.0
欺骗STM32L4R5芯片以损坏其错误检查信息中的某个闪存地址。
当使用Flash ECC上的STM32设备上的损坏的闪存地址读取时,您将获得不可掩盖的ECC检测中断。处理这种中断对于某些应用可能很重要,例如任何可能暴露于辐射的东西,例如卫星。但是,实际上在硬件上测试您的处理代码很难,因为您无法直接告诉芯片故意产生错误的闪存条目。
这就是为什么此工具提供了一种准确的方法:专门销毁特定地址的错误校正信息。它是通过自动二进制搜索时间安排来处理的,其中重置会干扰闪存写作过程。
调整main.rs文件顶部的地址,插入STM32L4R5芯片的调试连接器,然后运行make flash 。
然后,您应该看到芯片闪烁的蓝色LED的间隔变短。那是二进制搜索,试图等待闪光腐败需要多少。光似乎会熄灭几秒钟(因为时机变得太短,以至于LED几乎没有机会亮着),然后,绿色或红色LED都会出现。绿色意味着确切的地址被击中,红色意味着它被错过。如果是绿色,您现在可以刷一下要针对ECC中断测试的代码(确保不要覆盖现在包含错误的页面 - 擦除它将导致错误发生错误),并且如果红色LED启动,则需要按RESET按钮重新尝试(有时会重新尝试(有时,重新循环)也有帮助)。
如果绿色LED启动,则该程序已达到正确的位置。要验证确切的地址,您也可以通过GDB附加,然后读取FLASH_ECCR寄存器的内容:
(gdb) x/wx 0x40022018
0x40022018 : 0x80006000如果第一个十六进制字母是8或2 ,则腐败有效。最后20位(或5个十六进制字母)是损坏的内存地址。在这种情况下,将0x6000被损坏,并恰好受到打击。
在一个外壳中,运行
st-util然后使用GDB附加:
arm-none-eabi-gdb -ex " target extended-remote :4242 " target/thumbv7em-none-eabi/release/stm32-flash-corruptor使用此命令显示备份寄存器内容:
x /32w 0x40002850查看main.rs中的评论,以获取有关每个寄存器的更多信息。