J-Link 软件连接和配置

从 SEGGER 官网下载并安装最新版 GDB Server:

连接J-Link

双击 {SDK}\amebadplus_gcc_project\utils\jlink_script\cm4_jlink.bat,如下图所示,确认KM4与J-Link成功连接。

../../_images/dplus_windows_km4_jlink_gdb_server_connection.png

小心

  • 可编辑 cm4_jlink.bat 调整 JLinkGDBServer.exe 和 JLink.exe 的路径

  • 保持此窗口开启以进行后续操作

配置J-Link

  1. 打开新终端,进入目录 project_km4

  2. 执行命令:

    $ make setup GDB_SERVER=jlink
    

操作示例如下:

../../_images/dplus_windows_km4_jlink_setup.png

J-Link 固件烧录

我们更推荐使用 Realtek 提供的 Image Tool 软件下载固件。更多信息请参考 Image Tool

如果必须使用 J-Link 下载固件,请参考如下内容:

  1. 编译固件(参考 编译代码)并连接 J-Link

  2. 键入 build.py -gdb 命令开始下载,之后固件将被下载到 Flash 中,整个过程需要几秒钟,如下所示:

../../_images/downloading_image_to_flash.png

下载固件到 Flash

../../_images/download_codes_success.png

下载成功的日志提示

为确认固件是否被正确地下载进去,可以在下载之前勾选 verify download,在固件下载过程中,将会有 verified OK 的日志提示。

../../_images/verify_download.png

验证下载

下载完成后按下 Reset 按键,可以看到设备使用新的固件启动。

调试模式进入流程

  1. 编译固件并连接 J-Link

  2. 执行命令:

    1. 进入 SDK 根目录

    2. 运行 build.py -debug

    3. 根据目标设备选择对应命令

    • KM4:

      "{Jlink_path}\JLink.exe" -device Cortex-M33 -if SWD -speed 4000 -autoconnect 1
      
    • KM0:

      "{Jlink_path}\JLink.exe" -device Cortex-M23 -if SWD -speed 4000 -autoconnect 1
      

备注

  • {Jlink_path}: J-Link 安装路径 (默认为 C:\Program Files (x86)\SEGGER\JLink)

  • {script_path}: {SDK}\amebaxxx_gcc_project\utils\jlink_script

GDB 核心指令集

常用命令速查表

长命令

短命令

语法

功能说明

Halt

H

暂停 CPU 执行

Go

G

恢复 CPU 执行

Mem

/

Mem <地址> <字节数>

读取内存(ASCII 格式)

SaveBin

/

SaveBin <文件> <地址> <字节数>

内存转储为二进制文件

Exit

/

断开 J-Link 连接

官方文档参考:https://wiki.segger.com/J-Link_Commander

备注

  • 通过多次执行 H/G 记录 PC 值,定位问题函数。

  • 使用 mem <sp地址> 查看调用栈信息。

GDB 调试器指南

GNU 调试器支持在程序运行时进行状态检查与错误追踪(参考章节 调试模式进入流程

完整文档:GDB 用户手册

功能指令对照表

功能模块

命令

操作说明

断点管理

break (b)

设置执行暂停点

数据监视点

watch

监控变量变化 (含 watch/rwatch/awatch)

备注

监视范围建议小于 20 字节。

断点列表

info

显示所有激活的断点/监视点

断点删除

delete (d)

移除指定断点

恢复执行

continue (c)

继续程序运行

单步进入

step (s)

进入函数内部执行

单步跳过

next (n)

执行当前行并跳至下一行

退出调试

quit (q)

终止调试会话

调用追踪

backtrace (bt)

显示函数调用栈

源码查看

list (l)

显示上下文代码

数据检查

print (p)

输出变量/表达式值