STM32 某些型号的单片机有boot_lock寄存器,boot_lock用于控制单片机启动模式的。一旦置位boot_lock,单片机默认从内部flash启动,不经过system memory也就是BootLoader。
其他型号上是通过nboot等几个寄存器组合控制启动模式的,boot_lock只有在新型号上有,功能上看着有点重复,猜测是和某些安全特性配合使用的。
最近为了做固件保护,尝试用了boot_lock配置启动模式,但配置后发现debug锁死了。网上查了半天没啥有用的帖子,后来仔细看了下manual发现这个feature坑的地方,配置boot_lock + rdp level 1之后,全局的debug寄存器会自动被复位,也就导致debug jtag/swd口锁死。
最坑的是这个状态时断头路,一旦配置除非固件去配置dbg_swen否则无法修复!芯片就永久没法用swd调试或下载flash了。
规避方法
1、错配boot_lock + rdp level之后,不要复位芯片,立刻去做全擦除并且改掉boot lock。但这种方法通常没鸟用,配错并且不复位的情况太少了。
2、配置之前,固件留好后门或者固件上来就去使能dbg_swen
今天的文章 STM32 boot_lock 导致debug swd锁死分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/86364.html