|
本帖最后由 XIVN1987 于 2021-6-3 22:03 编辑
之前分享过一个HardFault分析工具JHFView和一个基于SVD文件的外设寄存器查看工具JSVDView。
经过一段儿时间的使用,发现一些存在的问题:
1、单独为HardFault专门写个工具显得有点儿小题大做
2、JSVDView查看寄存器时以外设为单位,而一些高级外设的寄存器非常多,读取数据量过大且大多数根本不会看
3、有些寄存器是不能读的,比如数据寄存器用JLink读走了程序就读不到了,,会影响程序正常功能
所以,就将之前为DAPLink做过的类JLink Commander命令行工具DAPCmdr移植到了JLink上,,然后又增加了HardFault诊断和基于SVD文件的外设寄存器查看功能,,做了这个JLKCmdr。
https://github.com/XIVN1987/JLKCmdr
启动界面和帮助界面如下:
- J-Link Commander v0.6
- blank line for connection, ? for help
- address and value use hexadecimal, count use decimal
- √ C:\Programs\Segger\JLink_V692\JLink_x64.dll
- √ C:\Programs\MDK\Arm\Pack_s\Keil\STM32F1xx_DFP\2.0.0\SVD\STM32F103xx.svd
- √ C:\Users\WMX\Desktop\STM32F1\out\STM32F1.dis
- CPU core is Cortex-M3
- JLKCmdr > help
- Documented commands (type help <topic>):
- =====================================================================
- dis go help path rd32 regs savebin wr16 wr8
- env halt loadbin rd16 rd8 reset sv wr32 wreg
- JLKCmdr >
复制代码
其中rd8、rd16、rd32、wr8、wr16、wr32、savebin、loadbin、regs、wreg、reset、halt、go是模仿的JLink Commander中的基本命令
其中halt和regs命令在检测到处理器发生hardfault时自动打印触发原因、hardfault发生的位置、以及调用层次(从反汇编文件中解析,不一定准确),,不再需要手动输入
- JLKCmdr > halt
- R0 : 20000000 R1 : 00000001 R2 : 00000000 R3 : 08000DA9
- R4 : 08000E08 R5 : 08000E08 R6 : 00000000 R7 : 00000000
- R8 : 00000000 R9 : 20000160 R10: 00000000 R11: 00000000
- R12: 00000000 SP : 200003E0 LR : FFFFFFF9 PC : 08000422
- MSP: 200003E0 PSP: 20000800 XPSR: 61000003
- CONTROL: 00 (when Thread mode: privileged, use MSP)
- a divide by zero has taken place (can be set only if DIV_0_TRP is set)
- Stack Content @ 0x200003E0:
- 200003E0: 20000000 00000001 00000000 08000DA9 00000000 080001C9 0800015C 61000000
- 20000400: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08000E08
- 20000420: 08000E08 080001C9 00000000 08000DA9 08000E08 08000D81 FFFFFFFF FFFFFFFF
- Call Stack:
- 0x0800015C SerialInit
- 0x080001C9 main
复制代码
基于svd的寄存器查看和修改演示如下:
输入路径和寄存器时做了模糊补全功能,减轻输入负担。。
欢迎坛友使用、点赞
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|