[活动专区] 【开源代码】-基于国民N32G45x系列MCU使用JLINK的GDB Server 组件工具

[复制链接]
 楼主| 6552918 发表于 2022-11-9 17:34 | 显示全部楼层 |阅读模式
<
本帖最后由 sy12138 于 2022-11-29 14:17 编辑

#申请原创# #技术资源#
@21小跑堂 @安小芯
测试条件
IDE
硬件
软件
其他
RT-Thread Studio
N32G457XVL-STB V1.1J-LINK V9
SEGGER-J-LINK V7.54d
GDB
GDB、GDBServer、JLink之间的关系
借用网上一张图
7d73896c785bcd64f24225a2acd27282
J-LINK GDBServer是J-LINK软件包里的一个软件
abf6076f259bd0da93428302a60a1d8d
J-LINK GDBServer一般是配合IDE一起使用的,比如常见的RT-Thread Studio,eclipse,VS code等等。J-LINK GDBServer还分为J-LINK GDBServer和J-LINK GDBServer CL,
J-LINK GDBServer CL是J-LINK GDBServer的纯命令行本部,J-LINK GDBServer是个带UI界面的版本。RT-Thread Studio里用的就是J-LINK GDBServer CL,入下图
5f49a637492ba345d8764a355c972988
5ea760e5eaa704340f27c0c7f64dd789
J-LINK工具包里是带UI界面的
a3d5c3d50c73917b0498afd704ccd302
需要重点配置的信息如下
5ffe622e52e00f294574fdc8d6d55e4a
配置完成后的页面如下(在JLINK硬件连接正确情况下)
9dcaf8bfb21927016be00dff710de069
到此J-LINK GDBServer的配置步骤就结束
接下来要准备GDB,
在这个连接里可以找到最新的GDB(https://www.sourceware.org/gdb/download/),进行下载安装
907cf6501ed830ae32c2fac7e66af012
我这里使用的是RT-Thread Studio里已经安装好的GDB
c3c45a15f8e58bb6c8fa265f93670741 打卡GDB的页面如下
66563c48677cd57ccb7bbd5b93b72e2d
这时使用命令 tar ext:2331 命令建立和J-LINK GDBServer建立连接,连接成功后,J-LINK GDBServer和GDB的页面都会有对应显示。
b4d5fae15583fec9bbacd030762420c4
由于GDB的命令非常多,常用命令如下
l,list指令的缩写,意为列出当前执行的源代码。同时输入指令后重复按回车等效于再次输入上次的指令。
c ,continue的缩写,在嵌入式GDB中我们不能使用RUN指令来运行代码,相应的我们需要continue指令来运行。
b ,break缩写,用于在程序中打断点,使用方式有很多种
b 16,在当前低16行代码出加断点。
b i=1,当i等于1时停止,类似于这种条件式断点的方式也是GDB独有的一种强大功能。
b main,在main函数的入口打断点。
i b ,info break缩写,显示当前设置的断点信息。如下面这个查到了在main函数处有两个断点,序号分别为1 和 2。
d break ,delet break 缩写,删除所有断点
d break 1 ,删除序号为1的断点
s,step缩写,会进入子函数的单步运行
n,next缩写,即会跳过子函数的单步运行
u,until缩写使用时后方加行号如: u 16 即运行到第16行
finish,完成并跳出当前的子函数
p,print缩写,使用时后面加变量名称如:p tmp ,用来显示变量数值
display ,使用时后面加变量名称如:display tmp ,用于跟踪变量数值,在每次执行停下时会自动显示变量数值。
bt,查看堆栈
q/Ctrl+d,使用q即quit指令或快捷键Ctrl+d来正常退出GDB
这里使用2条简单命令延时一下,第一个是查看内核寄存器,使用命令是i r,可以在GDB的窗口内看到返回的寄存器值。
c5cecb989abaee2e323f9dcf893b2590
另一条命令是查看断点,I b,因为没有加载调试文件,所以看不到断点信息,返回信息就是没有断点。
2f9ab0da4b2727d6af54b09d432735b3
接下来进行命令行调试的介绍
使用RT-Thread Studio编写一段点灯程序,编译完成后下载,在终端显示能够看到打印的信息,说程序已经下载成功
71c8a5d6035248a4c4d80d8546739134
将RT-Thread Studio集成额GDB拷贝至工程的Debug目录下,并运行,
ce69243c3fc2bb3e92319598f98b992c
使用file命令加载调试文件(filertthread.elf)
0d6c6a17e018b224fc574f4de5d0243e
使用命令 tar ext:2331 命令建立和J-LINK GDBServer建立连接
2e0113ffefaa8c703f430a81716bda2f
使用b,命令设置断点在main位置(b main)
8770f7c6702b46dae4b8723696acb2ee
断点位置与程序main的第一条语句是一致的(line 22)
b6d6b17583b8b26d3d588886be5d2739
使用list命令可以查看源码,设置断点位置为main的第一条语句,在list命令下也能对应上
43180f685a16a8b6a9570f2788da43e7
使用n命令,单步执行,可以看到第二条语句为rt_pin_write(LED1_PIN, PIN_HIGH);和单步执行的效果是一致的。
以上步骤重点是演示了GDB和J-LINK GDBServer的连接过程及简单的调试方法,和简单的调试命令,由于GDB的命令非常多,用的人需要自己去一点点看命令再使用。建议还是用已经集成好GDB的IDE,用起来更直观更方便。
源码:附件太大无法上传,使用任何GCC工具链编译点灯程序都行。
应用笔记:

视频地址:



JLink GDB Server应用笔记.pdf

850.75 KB, 下载次数: 6

您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:北京汇冠触摸技术有限公司/电子工程师
简介:电子工程师,嵌入式应用爱好者。

102

主题

1290

帖子

10

粉丝
快速回复 在线客服 返回列表 返回顶部