扫描关注一起学嵌入式,一起学习,一起成长
单片机项目偶尔经常出现异常,不知道是程序跑飞了,还是进入某个死循环了?
因为发生概率比较低,也没有规律,所以没办法在线调试查找问题。
结合这个问题,给大家分享一下用ST-LINK Utility识别单片机程序是否跑飞。利用ST-LINK Utility查看内核运行状态
做想要知道单片机是否跑飞,可以利用ST-LINK Utility查看内核运行状态。利用STM32 ST-LINK Utility工具中Hot Plug热插拔模式,查看内核运行状态。1.STM32 ST-LINK Utility模式说明即设置中三种模式选择:
大概意思是:
Normal:常规模式
连接目标(芯片)之后,芯片复位,然后暂停(halted)。Connect Under Reset:连接复位模式
Hot Plug:热插拔模式
连接目标芯片,不复位/重置芯片,则此时可以查看芯片状态。2.查看内核运行状态
硬件连接好:Target -> MCU Core
当你的程序跑飞,内核就处于异常状态,这里可以查看MCU内核的运行状态,简单的说就可以查看PC跑到哪儿去了(你应用程序跑如果超过相应区域,说明跑飞了)。
举个例:你应用程序存储在0x08010000 --- 0x08020000 这个范围内,正常运行应用程序应该在这个范围内,但是你发现PC的值为0x08025000(不在范围内),那就说明跑飞了。这里可以执行的操作有:运行、暂停、系统复位、内核复位、单步运行、读内核寄存器。类似于IDE中的在线调试(IDE在线调试需要有源代码,而这里不需要源代码,可直接查看PC执行到的地址)。提示:PC:Program Counter即程序计数器寄存器,指向当前执行程序的地址,如果修改它的值,就能改变程序的执行流。(具体可以参看Cortex-M3内核寄存器所在章节)对Option Bytes操作常用的一个就是对Flash加密(读/写保护)。当然,读写保护可以通过程序代码实现,也可以通过这里说的选项字设置来实现。拿F401举例:Target ->Option Bytes
STM32 ST-LINK Utility工具还有些特殊功能,可能我们不常用,比如:command line interface命令行接口、external loader developing加载外部程序等,感兴趣的朋友可以参看用户手册研究一下。好了,本文就分享以上几点内容,希望对你们有所帮助。
文章来源于网络,版权归原作者所有,如有侵权,请联系删除。
关注【一起学嵌入式】,回复“加群”进技术交流群。
觉得文章不错,点击“分享”、“赞”、“在看” 呗!