分享一下用ST-LINK Utility识别单片机程序是否跑飞

最近有网友大概问了这样的问题:单片机项目偶尔经常出现异常,不知道是程序跑飞了,还是进入某个死循环了。
因为发生概率比较低,也没有规律,所以没办法在线调试查找问题。
结合这个问题,给大家分享一下用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:连接复位模式
主要用于jtag/swd引脚被禁用的时候。
hot plug:热插拔模式
连接目标芯片,不复位/重置芯片,则此时可以查看芯片状态。
2.查看内核运行状态
硬件连接好:target -> mcu core
当你的程序跑飞,内核就处于异常状态,这里可以查看mcu内核的运行状态,简单的说就可以查看pc跑到哪儿去了(你应用程序跑如果超过相应区域,说明跑飞了)。
举个例 :你应用程序存储在0x08010000 --- 0x08020000 这个范围内,正常运行应用程序应该在这个范围内,但是你发现pc的值为0x08025000(不在范围内),那就说明跑飞了。
这里可以执行的操作有:运行、暂停、系统复位、内核复位、单步运行、读内核寄存器。类似于ide中的在线调试(ide在线调试需要有源代码,而这里不需要源代码,可直接查看pc执行到的地址)。
提示: pc:program counter即程序计数器寄存器,指向当前执行程序的地址,如果修改它的值,就能改变程序的执行流。(具体可以参看cortex-m3内核寄存器所在章节)
option bytes选项字配置
这里额外说一下选项字配置的内容。
对option bytes操作常用的一个就是对flash加密(读/写保护)。当然,读写保护可以通过程序代码实现,也可以通过这里说的选项字设置来实现。
拿f401举例:target ->option bytes
stm32 st-link utility工具还有些特殊功能,可能我们不常用,比如:command line interface命令行接口、external loader developing加载外部程序等,感兴趣的朋友可以参看用户手册研究一下。


三星Galaxy Fold二代,配有双后置摄像头价格在845美元左右
“懂行人”合力共建“强富美高”数字经济助力千载金陵的数字一跃
DC/DC转换器数据表助力完成静态电流解密
MCGS系统的DCS总线接口设计
显示两位数字的LED条状显示屏
分享一下用ST-LINK Utility识别单片机程序是否跑飞
为什么说英特尔®FPGA是实施边缘AI的理想之选?
PLC数采网关如何实现Q系列三菱PLC远程调试及上下载
土壤盐分测定仪的功能特点及技术参数
大多数电信服务提供商对OPNFV加速开源NFV应用的承诺充满信心
金属化聚丙烯膜抗干扰薄膜电容器的作用
电瓶修复技术—锂电池均衡的简单说明
将无人机和增强现实技术结合,实现人机交互,还有这种操作?
高压变压器好坏判断_高压变压器常见故障
苹果实行iPhone降价政策 提升市场销售
阿里智能病历质检 给病历添上“AI保险”
可穿戴设备等物联网应用案例介绍旺宏之低功耗NOR FLASH
PSoC3内部模拟布线和管脚选择
如何使用集成MOSFET来限制电流
为特斯拉构思设计一款蓝牙刹车踏板监测器