分享用Python写的Jlink Commander替代工具JLKCmdr!
本帖最后由 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>):
=====================================================================
disgo help pathrd32regs savebinwr16wr8
envhaltloadbinrd16rd8 resetsv wr32wreg
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:
0x0800015CSerialInit
0x080001C9main
基于svd的寄存器查看和修改演示如下:
输入路径和寄存器时做了模糊补全功能,减轻输入负担。。
欢迎坛友使用、点赞{:lol:}
补充个免安装的exe文件,,方便没有python环境的坛友使用,,
不错,学习 不是stm32的M3也可以用吗? cantonguy 发表于 2021-6-3 22:14
不是stm32的M3也可以用吗?
可以用,,M0、M4也可以用 感谢分享,楼主总是满满的干货 感谢楼主分享,现在试试。 谢谢分享 这个是要在仿真状态下才能用吧? 好东西,谢谢分享。这个应该不能用在乐鑫的ESP32吧?毕竟不是cortex核
页:
[1]