系列文章目录
第一章 ARM软件调试问题
文章目录
前言
本系列文章主要用于记录工作和学习过程中的软件调试问题
方便查找对应问题的解决之道,如解答有不足之处或问题解决仍待补充,还请大佬多多指教,谢谢!->欢迎评论区留言
第一章 ARM软件调试问题
1.STM32 ST-LINK Utility烧写芯片读/写保护解锁
1.1 描述
- 采用STM32 ST-LINK Utility烧写时误操作,导致芯片出现读/写保护
1.2 警告及解决办法(读/写)
1.2.1 读保护
- 采用STM32 ST-LINK Utility连接时出现警告:Can not read memory! Disable Read Out Protection and retry.
1.2.2 读保护解决
- 点击Target->Option Bytes…
- Read Out Protection设置为 Level 0->Apply(应用)
注:读保护等级(防止代码被他人恶意拷贝,保护原作者的权益)
读保护等级 | 含义 | 切换 |
---|---|---|
Level 0 | 无保护(可随意读取,调试时选择) | 切换其他等级,不会擦除芯片已有代码 |
Level 1 | 可恢复读保护 | 切换至Level 0,会自动擦除已有程序 |
Level 2 | 不可恢复读保护(调试时勿选) | 不可切换其他等级,且芯片里的程序不可再升级 |
1.2.3 写保护
- 采用Keil5软件仿真时出现警告:Flash Timeout.Reset the Target and try it again.
- 采用STM32 ST-LINK Utility连接时(在读保护已解决状态下,点击Target->Option Bytes…查看保护状态):Write Protection
1.2.4 写保护解决
- 点击Target->Option Bytes…->Select all->Unselect all->Apply(当Protection全变为No Protection时,即无读/写保护)
1.2.5 实际问题解决操作步骤(读/写保护)
- 第一步 采用STM32 ST-LINK Utility连接
- 若无读保护警告(Can not read memory! Disable Read Out Protection and retry.),则进行第二步
- 第二步 采用Keli5软件进行软件仿真
- 查看软件运行状态,若正常运行,则无读/写保护问题;若程序跑飞(main函数中打断点不停),则进行第三步
- 第三步 采用STM32 ST-LINK Utility连接
- 连接成功(显示芯片信息)后,先擦除芯片
- 第四步 点击Target->Option Bytes…->按照下图流程设置->Apply
- 第五步 再次擦除芯片,然后断开连接
- 第六步 采用Keli5软件进行软件仿真(程序正常运行:读/写保护解除,芯片正常运行)
2.STM32软件仿真/下载
2.1 描述
- STM32无法进行软件仿真或软件仿真时无法跳转main函数
2.2 警告及解决办法
2.2.1 无法进行软件仿真
- 检查硬件连接(BOOT设置、仿真器接口等)
- 软件仿真设置(芯片型号选择、仿真连接设置、Flash大小选择等)
- 有无读写保护(详情见ARM软件调试问题1,若出现相关警告,可按照步骤解保护)
2.2.2 仿真时无法跳转main函数(程序完全跑飞,未进入.s启动文件)
- 硬件断电,多次尝试
- 检查硬件boot连接(一般情况下都采用BOOT0接地,即BOOT0=0 主Flash模式)
总结
本章为软件调试问题系列文章 第一章:ARM软件调试问题