聚丰项目 > 移植Black Magic Probe到RTT

移植Black Magic Probe到RTT

使用RT-Thread开发的MCU调试器,尝试移植Black Magic Probe的功能代码作为独立组件,完成SWD协议连接MCU,并通过RSP协议实现GDB调试。

jf_50393217 jf_50393217

分享
0 喜欢这个项目
团队介绍

jf_50393217 jf_50393217

团队成员

jf_50393217 招采总监

分享
项目简介
使用RT-Thread开发的MCU调试器,尝试移植Black Magic Probe的功能代码作为独立组件,完成SWD协议连接MCU,并通过RSP协议实现GDB调试。
硬件说明

1、使用stm32的SWD调试原理如下图。

连线图.png


即通过中科蓝讯AB32VG1开发板的PE0引脚作为SWD协议的输入和输出引脚,向目标设备(例如stm32)发送指令和接收数据,而PE1引脚作为SWD协议的时钟数据引脚,向目标板输出调试逻辑的时钟信号。

<span style="color: rgb(51, 51, 51); font-family: " microsoft="" yahei",="" 微软雅黑,="" roboto,="" "helvetica="" neue",="" helvetica,="" "pingfang="" sc",="" "microsoft="" "source="" han="" sans="" "noto="" cjk="" "wenquanyi="" micro="" hei",="" sans-serif;="" font-size:="" 11.25pt;="" letter-spacing:="" 0.75pt;="" text-align:="" justify;"="">

软件说明

传统的调试模式是这样的:


poYBAGG6sieAY-uuAAB2_ObRNiA652.png

也就是前端工具(例如VSCode,Eclipse等等)通过电脑上的GDB 连接gdbserver,然后gdbserver通过USB连接的硬件调试器(debug probe)来调试目标单片机设备(可通过swd接口或者jtag接口)。硬件调试器(debug probe)只充当协议解析(SWD和JTAG)和连接目标板的角色。


其实目前常见单片机的性能是相当充裕的,更不用说本次活动的蓝讯骄龙AB32VG1芯片。可以将gdbserver这个桥接GBD和硬件调试器的角色转移到硬件调试器上。如图所示:

BlackMp模式.png这样做的好处就是,GDB可以直接通过USB串口来访问自带了gdbserver的调试器,免去调用gdbserver的过程。现在有些芯片需要使用特定版本的OpenOCD,否则连不上,安装的版本多了,自己也不一定记得清到底哪个是给谁用的。而且一般调用openocd也只是开个程序挂在那里,有时候还经常忘记开。

现在把它集成到硬件调试器里,计算机上就不需要运行gdbserver,可以直接通过GDB调用串口设备来调试。


在Black Magic Probe源码里,blackmagic/src/gdb_main.c文件定义了gdbserver的对应行为。src/target里定义了不同mcu目标的flash烧录操作和McuID,以及swd协议对应操作。


本次工程的目标是将对应的gdbserver功能,以及swd协议,mcu目标源码移植到RT-Thread上,实现对应的功能。


通过逻辑分析仪捕获对应的协议信息并验证(例如成功读取操作响应时序应如下图):


读取OK.png实际捕获的信息(因项目未完成,暂无对应截图和内容):

演示效果

1、因工作时间较忙,项目未能及时完成,目前新建了对应的项目,还在分析对应源码,需要时间完善

评论区(0 )