当前位置: 首页 > backend >正文

Arm处理器调试采用jlink硬件调试器的命令使用大全

arm处理器分为cortex-a,cortex-r,cortex-m等3个内核系列,其中m系列一般是单片机,例如stm32等,工控用得挺多。a系列一般是消费娱乐产品等使用较多,例如手机处理器。r系列是高端实时类型处理器,价格高,不太了解。这里说说最多接触的m和a系列。

说说硬件调试器:

一般有多种,st官方的st-link,SEGGER的J-Link、IAR的I-jet(本人使用过其多核调试功能),ulink,cmsis-dap等这几个我们一般能用到的。简单说一下:

st-link:仅支持自家m系列stm32单片机

jlink:支持m,a,r系列

ulink:这些请看这个博客:

常用的ARM调试器介绍(系统的学习调试器看这一篇就够了)-CSDN博客

说一下常用的调试环境搭建:

m系列一般用st-link调试器就可以调试,a系列一般得用jlink调试。

m和a系列处理器一般支持jtag、swd两种调试协议。jtag调试协议占用引脚端口多,swd占用仅2个而且烧录速度更快,stm32一般都用swd协议,a系列用jtag协议较多,但是也可以尝试一下swd协议,看看速度有变快不。

注意:对于swd协议,st-link最大支持4MHZ通信频率(st-link调试器一般是v2版本,据说st-link硬件调试器升级软件版本为v3能提高一倍速度?没试过可以试试),但是jlink则可以达到几十MHZ,下载速度确实快几倍(本人手头也有jlink v11的调试器实测过stm32f103zet6采用swd协议,确实比st-link快几倍,但是采用jtag协议,好像连不上不知道为什么,没深究了)。        

关于这个通信速率(swd和jtag模式其实都是同样共用设置的频率),目前已知为:st-link最大4MHZ(keil使用的话里面最大可设该值),jink最大未知(看jlink.exe软件安装后里面的手册 UM08001_Jlink.pdf介绍的章节 7.6.1 SWD speed 提到和目标处理器以及jlink版本什么的都有关系,也就是没有个确定上界值(但是在keil里,或者JLinkGDBServer.exe双击运行界面里,最大可选50MHZ),一般来说4000KHZ,也就是4MHZ比较常见且稳定,设高了,能正常通信就可以(和线缆质量也有很大关系),否则就自己降低速率吧),但是我发现命令行启动jlink时候,设置超过50MHZ竟然也没有报错,就不太懂了。而且jlink分别base版(近100块,用得比较多,下载频率设置到15MHZ,也很稳,也比stlink快几倍)、pro版(稍微贵一些,频率可以到几十MHZ)、ultra版(近万元一个,极致性能了)。

也就是说,无论是stm32还是a系列处理器,调试器尽量选用jlink(对stm32所有系列支持也非常友好的),虽然贵了点,但是下载速度更快,功能更强大,可配置内容也更多。关于其它品类的支持arm的调试器,我没测试过,就不多说了,但是从那些调试器的性能介绍来看,jlink依然速率和稳定性应该是最好的。

关于stlink的使用:

可以使用一个开源的st-link.exe工具链,或者openocd(而且各种类型调试器它都能驱动)都可以。可以看我其它博客:

嵌入式IDE原理 OpenOCD介绍 以及stlink如何连接stm32板子-CSDN博客

 驱动单片机硬件调试器的一些开源库总结(包含stlink调试器)_stlink 开源-CSDN博客

 OpenOCD如何通过stlink直接下载程序到stm32板子(已解决)_openocd stlink-CSDN博客

windows用gcc编译stm32程序命令行控制stlink下载到板子_stlinkgdb.exe-CSDN博客

关于jlink的使用:

使用openocd也可以,但是这里主要说使用jlink调试器官方自己的jlink.exe工具链,因为适配性更好。只需要下载官方的jlink软件工具安装即可。里面有各种jlink开头的.exe工具链,但是用户接口一般都是jlink.exe这个软件,如果是gdb连接jlink调试器,那么需要启动JLinkGDBServerCL.exe,然后gdb.exe发起连接它即可,这里进行常用的介绍如下:

首先,最全的介绍,就在jlink.exe软件安装后里面的手册 UM08001_Jlink.pdf介绍,所有功能大纲以及相关命令出处,里面都介绍得清清楚楚。关于jlink.exe的命令,里面仅进行了简单介绍,是给了在线网页命令大全:J-Link Commander - SEGGER Knowledge Base。而关于jlinkgdbserver.exe命令倒是进行了详细介绍,以及gdb能执行的透传monitor命令列表。

jlink.exe的操作命令,从上面的网页可以看出,分为启动jlink.exe时候(也称为配置命令)的命令行参数,以及进入jlink.exe软件后(也成为Debugging命令)的命令行参数两种,例如halt命令,就只能是进入了jlink.exe后,才能使用的。所以多看看这些资料,就知道如何用了。

例如下载程序,由于loadfile命令得进入jlink.exe才能使用,此时一行命令行就没法实现了,jlink.exe刚好支持命令脚本,启动jlink.exe时候-CommandFile即可指定命令脚本,具体参见文档以及网页说明。此外,如果用户有自定义的目标版设置命令,jlink.exe还支持init脚本,请参见相关内容。

最后再说一点,jlink的命令很多,但是我们一般需要用的其实就几个,其它的都是保持默认就可以了。还有就是文档风格等原因吧,如果深究,其实会发现有些写得逻辑不太容易理解,总之已经能解决我们的问题,以及知道设置参数一些极限,就可以了,不用太转牛角尖了,不然越思考越觉得文档写得有些解释不通的地方,例如退出命令,里面写的是exit,但是用quit也能退出(会发现jlink所有介绍命令都没有出现过quit)!!!这个可能就是文档写得没有完全准确的原因,如果我们一直深究,转牛角尖去看,就只会徒劳费时间精力了,做嵌入式开发其实其它任务也有类似现象,也无需转牛角尖的

最后给出stm32的程序下载命令:

-device STM32F103ZET6 -if SWD -speed 50000 -autoconnect 1 -CommandFile download.jlink

 download.jlink内容如下:
 

connect
halt
WaitHalt 100
loadfile "build/Project4_hal_small_debug.bin" 0x08000000
RX 100
exit

http://www.xdnf.cn/news/10358.html

相关文章:

  • Python训练营打卡 Day41
  • 应急响应靶机-web3-知攻善防实验室
  • 【基础算法】模拟算法
  • Redis 持久化机制详解:RDB 与 AOF 的原理、优缺点与最佳实践
  • Java-File类基本方法使用指南
  • 【深度学习】15. Segment Anything Model (SAM) :基于提示的分割新时代
  • 题解:洛谷 P12672 「LAOI-8」近期我们注意到有网站混淆视听
  • MCP架构深度解析:从基础原理到核心设计
  • c++第三章练习题
  • 每日算法-250531
  • Ubuntu使用说明
  • 112 Gbps 及以上串行链路的有效链路均衡
  • JAVA中的枚举
  • 《管理经济》期末复习题(2)
  • 缓存穿透、击穿、雪崩的解决方案
  • 开源版 PyMOL 如何绘制 Galidesivir 分子结构 ?
  • [LitCTF 2024]SAS - Serializing Authentication
  • 在Cesium中通过geojson和3d tiles分别加载楼宇白膜
  • 【深度学习】线性因子模型:数据降维与结构解析的数学透镜
  • 深入探讨redis:主从复制
  • 【鱼皮-用户中心】笔记
  • 优化的两极:凸优化与非凸优化的理论、应用与挑战
  • 雪花算法的实际应用
  • 6个月Python学习计划 Day 10 - 模块与标准库入门
  • 表单校验代码和树形结构值传递错误解决
  • 【Qt】Bug:findChildren找不到控件
  • 【C语言练习】074. 理解C语言中的多线程编程
  • MySQL 8.0:解析
  • Github 热点 Github 热点 Syncthing:多台设备,持续同步文件,安全同步,隐私无忧!
  • 79. 单词搜索-极致优化,可行性剪枝和顺序剪枝