引言 STM32CubeIDE ST-LINK GDB server 也被称为 GDB server,是通过 ST-LINK JTAG 探头在与 Arm® Cortex®-M 目标设备连接的PC 上运行的命令行应用程序。 ST-LINK GDB server 启动时会通过 ST-LINK JTAG 连接至 STM32 Arm® Cortex®-M 目标设备。与目标设备侧建立通信之后,将等待客户端连接至 TCP 监听套接字。客户端连接至 TCP 监听套接字之后,ST-LINK GDB server 将处理客户端发送的远程串行通信协议(RSP)消息,并对目标设备侧执行适当操作,随后向客户端回复 RSP。 图 1 展示了使用 ST-LINK GDB server 和 STMicroelectronic ST-LINK 探头调试 Arm® Cortex®-M 目标设备的标准调试会话。 , o) J" c/ F3 f* g 该图展示了如何利用 TCP 套接字接口将 GDB 客户端连接至 ST-LINK GDB server,以便对 ST-LINK JTAG 上所连接的Arm® Cortex®-M 目标进行调试。 + v: f% z9 V: }% s9 z- f: G + @& @) o: D8 S3 a+ G5 K- n: n ! M/ j5 I6 k, L 1 GDB server 使用 STM32CubeIDEST-LINK GDB 服务器是命令行应用程序,该应用程序可通过以下方式启动 • 输入一组命令行选项 8 ?, A4 V% f& k, h • 指示 GDB server 从配置文件中加载选项 ) A0 W# u/ {: [1 F3 T 若未指定任何选项, GDB server 将以预配置默认选项启动。启动选项及对应的默认值列于第 1.1 节 GDB server启动选项中。" h0 C( y# E) [, b STM32CubeIDEST-LINK GDB 服务器利用 STM32CubeProgrammer (STM32CubeProg)对需要调试的设备进行flash 下载。当 gdb 发出 load 命令时, GDB server 将自动使用 STM32CubeProgrammer 软件。( G0 F6 Y5 N5 | 当需要进行高级设备控制(例如 Flash 擦除或者设置选项字节)时,可以使用 STM32CubeProgrammer(STM32CubeProg)。它包含在 STM32CubeIDE 中并且可以从 STMicroelectronics 网站 www.st.com 单独下载。 STM32CubeIDE 支持基于 Arm® Cortex®处理器的 STM32 32 位产品。提示 Arm 是 Arm Limited(或其子公司)在美国和/或其他地区的注册商标。6 h# E/ s. ]0 X4 j( ]7 Z - O- d- O' R, M& O8 {% { 1.1 GDB server 启动选项 GDB 服务器可以利用以下命令启动: - U0 L6 a' `6 z; _: [3 d ST-LINK_gdbserver.exe [options] + N) e) q t; A/ r 大多数选项有长格式和短格式两种格式。以下将介绍 GDB server 支持的选项组,其中默认模式和配置以粗体表示: • -h, --help使 ST-LINK_gdbserver 显示使用信息。 • -c , --config-file 指示 GDB server 从配置文件中读取选项。附录 B 中提供了有关语法分析的配置文件示例。• -f , --log-file 指定日志文件名称。默认名称为 debug_log.txt。9 X/ H' e; ]: g+ Q: l! F • -l , --log-level 指定记录级别。记录级别分为 0 至 31 级。将记录级别指定为 0 时将关闭记录功能,将记录级别指定为 31 时将启用完全记录。默认记录级别为 31。记录级别可以根据以下列表进行设置: – = 0:禁用记录。 – ≥ 1:启用错误消息记录。 – ≥ 2:增加警告消息。& ~0 c" l7 l0 H; G( B – ≥ 4:增加通信特定消息。 ) s3 Q: }, h( i6 K2 u9 M* [ – ≥ 8:增加所有信息消息 % a% U$ f+ }8 i – ≥ 16:增加所有 HW 特定消息。 * z8 B6 F+ t3 k* _, E$ w0 f0 z 因此若未指定选项–f 和-l,服务器将以默认的 31 级记录级别(完全记录)启动,默认日志文件为 debug_log.txt。 • -p , --port-number 指定服务器监听客户端连接对应的 TCP 端口号。服务器监听的默认端口号为 61234。% A m. j) c/ Y8 h/ ~ • -v, --verbose 在命令行中指定-v 将启用详细模式;此外,还将打印服务器调试日志标准输出。默认情况下,详细模式处于禁用状态。 • -r , --refresh-delay 指定调试日志文件中硬件状态更新的间隔时间(单位秒)。注意,状态更新间隔时间很短会导致调试日志文件扩大。默认状态刷新延迟时间为 5 秒。 • -s, --verify' D$ _2 [- P `$ v 启用 Flash 下载验证。 ) i: T4 V7 r; @ • -e, --persistant指定选项-e 后将在持续模式下启动服务器。4 _* a: V) b4 d$ P+ { 默认情况下,持续模式将处于禁用状态,这意味着服务器将在非持续模式下启动。 • -d, --swd启用串行线调试(SWD)模式指定使用 SWD 而非使用 JTAG。[对 SWV 使用此选项。] • -z , --swo-port 指定服务器输出原始 SWO 数据对应的 TCP 端口号[对 SWV 使用此选项。] • -a , --cpu-clock 指定 CPU 的时钟频率,单位 Hz。[对 SWV 使用此选项。] , E) u. j [! k# s1 f • -b , --swo-clock-div 指定 SWO 时钟分频器。利用–a 选项可以使其作用于给定的 CPU 时钟速度。[对 SWV 使用此选项。]同时使用–z、–a 和–b 选项可指定 SWO 速度。例如当核心以 168 Mhz 频率运行,目标 SWO 频率为 1 Mhz时,将按照以下方式配置上述选项: -z 61235 -a 168000000 –b 168。当核心以 72 Mhz 频率运行,SWO 频率为 125 kHz 时,将使用-z 61235 –a 72000000 –b 576。 • -k, --initialize-reset在复位状态下将设备初始化。 / O8 O& I% m9 \7 p! H0 u( H0 q • -q, --debuggers列出已连接的调试器,ST-LINK 序列号。 : \; [3 Z/ }1 y0 | • -i , --serial-number 指定服务器应连接的 ST-LINK 序列号。 • -m , --apid 定义需要调试的 apID。[对多内核使用此选项。] 0 w0 d1 c! M* x4 ^! ~; g) r • -g, --attach连接正在运行的目标。 • -t, --shared允许使用一个 ST-LINK 探头将两个或以上程序连接至同一台设备。[对 ST-LINK server 使用此选项。] ! a) k& l2 k# H$ P- V • --erase-all 擦除所有存储内容。 Q1 Z3 V2 O5 h" w8 ]/ F0 a# m • --memory-map & }) R( J: C! A& h) S: U 显示给定设备标识符对应的存储器映射例如 0x410。1 S! |- o; k- Q! I8 V9 B9 Y% `- E • --ext-memory-loaders 提供可供使用的外部存储器加载程序列表。 & a2 ]: y2 ]$ S* R7 c • -el , --extload & y! u" @0 }. a1 |- D9 r# v4 T 选择自定义外部存储器加载程序。& X% F+ R2 T& b. U! L+ t • -cp , --stm32cubeprogrammer-path STM32CubeProgrammer (STM32CubeProg)安装路径。 • --temp-path 6 c R8 [8 n, u, i T+ S 启动调试会话的临时文件存储在此前提供的路径下。 ! N7 y# @% G. m& `$ M+ i$ v" c • --licenses , N% H2 g, |) d8 A- c! o 提供已使用的工具和许可列表。 • --, --ignore-rest 忽略剩余的、后跟此标志的标签参数。 , }2 [" f- Q$ R1 r: l) Z6 s, r g • --版本 显示版本信息并退出。 6 Z7 n5 r/ P2 n" e6 o$ b7 k/ \ 1.2 GDB server 工作模式 / e6 `; C6 W- D7 S6 @1 Z 此服务器可以在持续模式或非持续模式下运行 - 具体由配置选项决定。在持续模式下,服务器将在客户端断开连接后继续运行并等待新连接,而在非持续模式下客户端关闭连接后服务器将直接退出。但如果服务器与目标进行通信时出现错误,无论服务器处于哪一种模式,服务器都将关闭所有连接并关机。8 S6 x" b! |. m+ w u$ \0 z/ | ! ]6 O' f h/ O( ^( V$ t1 ] $ L5 ~! n, V9 Z 1.3 启动 GDB server7 L) f" m; K7 w; G, p. ^ GDB server 可以在命令窗口中以下列方式启动: 1. cd ( }% V' M0 n% B6 U4 \6 n C:\ST\STM32CubeIDE_1.0.0.19w12patch\STM32CubeIDE\plugins\com.st.stm32cube.ide.mcu.externaltools.stlink-gdb-server.win32_1.0.0.201903011553\tools\bin\STLINK_gdbserver9 g4 P. C. b7 R1 a; f 2. 利用–cp 和 STM32_Programmer_CLI.exe 路径启动 GDB server 例如:ST-LINK_gdbserver.exe -d -v -cp"C:\ST\STM32CubeIDE_1.0.0.19w12patch\STM32CubeIDE\plugins\com.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.win32_1.0.0.201903011553\tools\bin" 3. 随后 GDB server 将通过 ST-LINK JTAG 与 STM32 设备相连,并等待 GDB 调试会话命令。* J, _, F0 s( _+ A% A 4 T0 j( M$ o/ |0 c. r9 V - g6 N [- v( { u2 |& y / n$ f! g) c$ m0 b% C) R 完整版请查看:附件 |
STM32CubeIDE 快速入门指南
【STM32C0评测】5、娱乐一下,分享2048游戏
【STM32C0评测】4、SPI亮屏及GUILite移植
【STM32C0评测】3、I2C使用
【STM32C0评测】1、开箱、环境搭建、按键点灯
【STM32C0评测】2、PWM实现呼吸灯
[STM32MP125-DK] 裸机开发
STM32CubeMX STM32F4 HAL库 工程建立
【NUCLEO-U545RE-Q评测】5. 基本计时器
【STM32U545试用】SHT30+OLED湿湿度