搜索
bottom↓
回复: 9

分享用Python写的Jlink Commander替代工具JLKCmdr!

[复制链接]

出0入25汤圆

发表于 2021-6-3 22:00:40 | 显示全部楼层 |阅读模式
本帖最后由 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

启动界面和帮助界面如下:
  1. J-Link Commander v0.6
  2. blank line for connection, ? for help
  3. address and value use hexadecimal, count use decimal

  4. √  C:\Programs\Segger\JLink_V692\JLink_x64.dll
  5. √  C:\Programs\MDK\Arm\Pack_s\Keil\STM32F1xx_DFP\2.0.0\SVD\STM32F103xx.svd
  6. √  C:\Users\WMX\Desktop\STM32F1\out\STM32F1.dis

  7. CPU core is Cortex-M3

  8. JLKCmdr > help
  9. Documented commands (type help <topic>):
  10. =====================================================================
  11. dis  go    help     path  rd32  regs   savebin  wr16  wr8
  12. env  halt  loadbin  rd16  rd8   reset  sv       wr32  wreg

  13. JLKCmdr >
复制代码

其中rd8、rd16、rd32、wr8、wr16、wr32、savebin、loadbin、regs、wreg、reset、halt、go是模仿的JLink Commander中的基本命令

其中halt和regs命令在检测到处理器发生hardfault时自动打印触发原因、hardfault发生的位置、以及调用层次(从反汇编文件中解析,不一定准确),,不再需要手动输入
  1. JLKCmdr > halt
  2. R0 : 20000000    R1 : 00000001    R2 : 00000000    R3 : 08000DA9
  3. R4 : 08000E08    R5 : 08000E08    R6 : 00000000    R7 : 00000000
  4. R8 : 00000000    R9 : 20000160    R10: 00000000    R11: 00000000
  5. R12: 00000000    SP : 200003E0    LR : FFFFFFF9    PC : 08000422
  6. MSP: 200003E0    PSP: 20000800    XPSR: 61000003
  7. CONTROL: 00 (when Thread mode: privileged, use MSP)

  8. a divide by zero has taken place (can be set only if DIV_0_TRP is set)

  9. Stack Content @ 0x200003E0:
  10. 200003E0:  20000000 00000001 00000000 08000DA9 00000000 080001C9 0800015C 61000000
  11. 20000400:  00000000 00000000 00000000 00000000 00000000 00000000 00000000 08000E08
  12. 20000420:  08000E08 080001C9 00000000 08000DA9 08000E08 08000D81 FFFFFFFF FFFFFFFF

  13. Call Stack:
  14. 0x0800015C  SerialInit
  15. 0x080001C9  main
复制代码


基于svd的寄存器查看和修改演示如下:

输入路径和寄存器时做了模糊补全功能,减轻输入负担。。

欢迎坛友使用、点赞

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入25汤圆

 楼主| 发表于 2021-6-4 11:13:38 | 显示全部楼层

补充个免安装的exe文件,,方便没有python环境的坛友使用,,

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出100入101汤圆

发表于 2021-6-3 22:08:43 来自手机 | 显示全部楼层
不错,学习

出20入0汤圆

发表于 2021-6-3 22:14:38 | 显示全部楼层
不是stm32的M3也可以用吗?

出0入25汤圆

 楼主| 发表于 2021-6-3 22:17:36 | 显示全部楼层
cantonguy 发表于 2021-6-3 22:14
不是stm32的M3也可以用吗?


可以用,,M0、M4也可以用

出0入42汤圆

发表于 2021-6-4 11:07:28 | 显示全部楼层
感谢分享,楼主总是满满的干货

出0入0汤圆

发表于 2021-6-4 11:41:51 | 显示全部楼层
感谢楼主分享,现在试试。

出0入13汤圆

发表于 2021-6-4 13:53:03 来自手机 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2021-6-4 15:14:45 | 显示全部楼层
这个是要在仿真状态下才能用吧?

出0入0汤圆

发表于 2021-9-24 23:50:27 | 显示全部楼层
好东西,谢谢分享。这个应该不能用在乐鑫的ESP32吧?毕竟不是cortex核
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 01:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表