Foreword
默认keil下使用jlink在线调试的时候会自动重启硬件,虽然平时用着好像也行,但是关键时刻,硬件跑飞了,需要看一下具体为啥会跑飞,找到隐藏的bug,这种时候就会很坑爹,一重启就无法复现该情况了,这里记录一下如何修改keil 工程配置从而可以不重启的情况下进入在线调试.
注意
使用前一定要注意,在配置好工程之前最好不要接jlink并且连接到出错硬件上!!!
(因为配置中的Debug只要一点进去就会让硬件自动重启,如果连接了跑飞的硬件,那就没了)
修改配置
1. 不要勾选 Load Application at Startup
2. 在Debug选项中不要勾选 Reset after Connect 并且Connect:Normal 选项
3. 不要勾选 Update Target before Debugging
4. 以上完成其实可以直接连接飞机了,但是这种连接模式下,无法跳转代码无法加断点,只能用于查看内存和各种寄存器的情况.如果要查看代码,则需要完成Load文件,新建一个文件,起名随意,内容入下:
LOAD %L INCREMENTAL
然后再刚才的Load Application at Startup 下的Initialization File中选择建好的文件.
点击仿真,就可以直连跑飞的硬件,并且查看到当前代码停在了哪里,所有信息都是完整的
总结
当然除了使用keil这种方法,还有更原始一点的办法,使用jlink commander 然后连接到硬件上,使用其命令:halt,go,mem 0x80xxxxxx xxx 等命令来读取内存或者寄存器的值,然后去找PC或者LR或者Stack,然后对应生成的map文件确定代码是在哪里,这种方法比较原始,但是万能.
Quote
http://www.keil.com/support/docs/3697.htm
FEATURED TAGS
RaspberryPi
嵌入式
Git
脚本
python
LeetCode
C++
APM
FreeRTOS
Markdown
Embedded
Linux
Vim
Ubuntu
Tools
STM32
Maya
LPWAN
Graph Theory
Algorithm
PathFind
OMPL
VPS
QT
Router
JS
Chrome
Tampermonkey
API
Java
Spring
MySql
Springboot
Docker
V2ray
TTRSS
Nintendo Switch
Trace
Crack
BLHeli
DSHOT
ESC
Music
C#
EasyCon
Blog
杂谈
Proxy
UAV
GuinnessWorldRecords
NAS
群晖
ZeroTier
Typora
Map
旅游
Log
JSON
Cython
Equip
Goods
Share
DMX512
Blender
Game
AP
Network
CloudFlare
DIY
WIFI
Camera
Diablo
Sensor
SES
QQ
Bot
Python
Vmq
Jenkins
米家
ESP32
Software
C
MT793x
NXP
CH32
OpenWrt
Onion
Copilot
Investment
ChatGPT
Debug
RouterOS
Mikrotik
GitLab
Drone
OpenAI
VS Code
管理