Ubuntu上使用JLink + GDB调试STM32

Ubuntu上使用JLink + GDB调试STM32

  • 一、JLink下载与安装
    • 二、交叉编译链下载与安装
      • 三、烧录程序
        • 四、使用GDB调试程序

一、JLink下载与安装

首先需要在 Jlink官网下载适合你版本的安装包,Ubuntu下可以直接使用DEB格式的文件,也可以下载压缩包来安装,这里我下载的是安装包,下载完解压之后,参考Readme文件,里面写的很详细也很简单,你只需要做两部即可

1.sudo cp 99-jlink.rules /etc/udev/rules.d/
2.Restart your system

完成后JLinkExe能正常运行就说明安装成功了

二、交叉编译链下载与安装

同样需要在GUN ARM ToolChain官网下载适合你版本的工具,这里我下载的是gcc-arm-none-eabi-8-2018-q4-major-linux.tar.bz2,下载完成后,解压,然后修改 ~/.bashrc 文件,导出路径,这里我解压到了opt目录下,所以我需要在文件最后一行添加我的路径

export PATH=/opt/gcc-arm-none-eabi-8-2018-q4-major/bin:$PATH

三、烧录程序

烧录程序需要运行JLinkExe程序,然后按照提示选择一路选择对应的接口,频率,芯片型号,最后使用loadbin命令,这里我的开发板是STM32F407,所以我需要这样下载程序

loadbin ~/test.bin 0x8000000

其他板子需要修改对应的文件路径和下载地址

四、使用GDB调试程序

首先你需要在一个终端下运行 ./JLinkGDBServer 这个程序在你的JLink安装目录下。然后按照提示选择对应的芯片型号,
程序会打印如下信息

SEGGER J-Link GDB Server V6.64 Command Line Version

JLinkARM.dll V6.64 (DLL compiled Mar 13 2020 15:57:08)

-----GDB Server start settings-----
GDBInit file: none
GDB Server Listening port: 2331
SWO raw output listening port: 2332
Terminal I/O port: 2333
Accept remote connection: yes
Generate logfile: off
Verify download: off
Init regs on start: off
Silent mode: off
Single run mode: off
Target connection timeout: 0 ms
------J-Link related settings------
J-Link Host interface: USB
J-Link script: none
J-Link settings file: none
------Target related settings------
Target device: Unspecified
Target interface: JTAG
Target interface speed: 4000kHz
Target endian: little

Connecting to J-Link…
J-Link is connected.
Firmware: J-Link V9 compiled Dec 13 2019 11:14:50
Hardware: V9.60
S/N: 69662313
Feature(s): RDI, GDB, FlashDL, FlashBP, JFlash
Checking target voltage…
Target voltage: 3.38 V
Listening on TCP/IP port 2331
Connecting to target…

J-Link found 2 JTAG devices, Total IRLen = 9
JTAG ID: 0x4BA00477 (Cortex-M4)
Connected to target
Waiting for GDB connection…

接下来你需要重新打开一个终端,然后使用gdb工具来加载程序,比如这样

arm-none-eabi-gdb ~/test.elf

加载完以后我们需要主动链接JLinkServer监听的端口,端口号在上面的打印信息有有打印,这里是2331,所以我们需要输入

target remote localhost:2331

输入完成后JLink那边就会显示连接成功,不过GDB这边还需要输入三个指令才能初始化成功

monitor reset
monitor halt
load

接下来的使用和平常的GDB是一样的,可以参考其他关于使用GDB的文章

你可能感兴趣的:(Linux)