合宙AIR32F103刷Black Magic Probe固件调试配置指南
针对合宙AIR32F103CBT6的核心板定制了个BMP调试器的固件,针脚兼容,除了SWD外还支持JTAG,蓝色LED显示传输状态。
Black Magic Probe vs DAPLink
简单来说,BMP = gdbserver + DAPLink。
即BMP已自带gdb服务器功能,省去了OpenOCD之类中间件的环节,不用考虑OpenOCD的版本依赖和编译问题了。
实际使用中感觉要稍快些。
刷BMP固件
BMP的固件包含bootloader和app,故需要调试器通过SWD刷机。这里用ST-Link通过OpenOCD刷机。
编译OpenOCD和系统存储器启动参考这篇文章。
openocd-esp
根目录下新建一个tmp
文件夹。
下载BMP固件。解压后将bin文件放到tmp
中。
AIR32F103进入系统存储器启动模式后执行以下命令:
1 | ./src/openocd -s tcl -f interface/stlink.cfg -f tcl/target/air32f1x.cfg -c init -c 'reset halt' -c 'flash write_image erase ./tmp/blackmagic_aio-air32f103.bin 0x08000000 bin' -c 'verify_image ./tmp/blackmagic_aio-air32f103.bin 0x08000000 bin' -c 'reset run' -c shutdown |
verified无误,出现shutdown字样说明BMP刷入成功。
连上USB后会新增ID 1d50:6018 OpenMoko, Inc. Black Magic Debug Probe (Application)
的USB设备并新增2个USB串口,其中第一个是debug用的。
接线
此BMP固件的SWD接线和板子自带的DAPLink一致,另外还支持JTAG,接线如下:
Signal | Pin |
---|---|
SWDIO(TMS) | B14 |
SWCLK(TCK) | B13 |
nRST | B0 |
TDI | A7 |
TDO | A6 |
安装PlatformIO
参考这篇文章。注意无需配置OpenOCD。
载入项目
调试目标是一块吃灰的Bluepill(STM32F103CBT6)核心板。程序是库函数版的点灯程序cmsis-blink。
下载示例程序并解压缩。
VS Code下Ctrl+O
打开文件夹,选择platform-ststm32-develop/examples/cmsis-blink/
文件夹。
编辑platformio.ini
,开头添加如下内容:
1 | [platformio] |
其中upload_port
和debug_port
一样。Win是COMx
。
调试
打开src/main.c
文件,在110行行号左边点一下添加断点。
按F5
(Run > Start Debugging)进入调试界面。
反复按F5
(顶栏的Continue),可见到板载LED明暗交替变化。调试器工作正常。