环境搭建
安装 pyocd
1
|
pip3 install --user pyocd
|
安装 arm-none-eabi-gdb
本来 gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/ 工具链中自带有 arm-none-eabi-gdb 但是这个版本的 arm-none-eabi-gdb
依赖于 libpython3.6m.so.1.0 这个动态库, 而本机的python 已经升级到 3.11 了, 所以用不了, 只能下载最新的 arm-none-eabi-gdb
1
|
sudo pacman -S arm-none-eabi-gd
|
安装的版本是 arm-none-eabi-gdb-13.2-1-x86_64
pyocd + arm-none-eabi-gdb简单使用
使用建立一个 gdb server
这个server 负责接收 arm-none-eabi-gdb 的命令然后转发到开发板上
1
|
pyocd gdbserver --target=mm32spin0230b1nv --pack=/path-to/MindMotion.MM32SPIN0230_DFP.0.9.1.pack
|
如果嫌命令太长, 可以在运行目录下新建一个 pyocd.yaml 文件
内容如下:
1
2
|
pack:
- /path-to/MindMotion.MM32SPIN0230_DFP.0.9.1.pack
|
要使用绝对路径, 这样就可以省略掉 –pack 选项, 或者本身已经通过 pyocd pack install 了对应的pack 包的话, 也可以省略掉 –pack 选项
使用 arm-none-eabi-gdb 调试arm程序
使用pacman 安装的 arm-none-eabi-gdb
启动arm-none-eabi-gdb
1
|
/usr/bin/arm-none-eabi-gdb build/BLDC_CMP_LESS.elf
|
设置芯片架构
1
|
set architecture armv6-m
|
连接gdb server
下载程序到开发板
这里由于arm-none-eabi-gdb 的时候已经传入了 elf 文件, 这里的load 可以省略后面的FILE
查看pc 值
可以看到 load 之后芯片自动复位了
b 设置断点
c 运行程序
Ctrl + c 中断运行
Ctrl + c
list 列出当前 pc 所在行的上下共10 行代码
where 查看当前代码所在的位置
更多命令使用 help 查看
使用 arm-none-eabi-gdb 脚本, 简化操作
新建一个 mygdb.init
1
2
3
4
5
6
|
target remote :3333
monitor sleep 1
set architecture armv6-m
load
b main
c
|
启动 arm-none-eabi-gdb
1
|
/usr/bin/arm-none-eabi-gdb build/BLDC_CMP_LESS.elf -x ./mygdb.init
|