本文说明如何使用vscode的native-debug连接pyocd调试zephyr.
本文说明运行的环境是在ubuntu NB下通过daplink连接nrf52 board, 通过vscode+pyocd进行调试。
起因
以前一直在vscode中用cortex-debug插件连接pyocd调试zephyr(DAPLink+VSCode调试nrf52_moderate),能识别svd,能自己启动pyocd gdbserver非常好用。但最近升级pyocd到0.18.0后, 通过cortex-debug无法正常启动pyocd的gdbserver,手动启动gdbserver后想要通过cortex-debug连接过去也不行。为了方便调试zephyr,研究了native-debug通过gdb连接pyocd的方法,相比于cortex-debug除了如下不足外其它的调试都一样:
- 无法自动启动pyocd gdbserver
- 无法加载svd文件,显示svd描述的寄存器
方法
如果从来没有配置过可以参考DAPLink+VSCode调试nrf52_moderate进行配置。然后进行下面修改
1.安装native debug插件
Vscode插件里面搜索Native debug安装即可.
2.修改launch.json
下面的launch.json增加了basetest和mcuboot两个debug选项,这两个选项都是使用native-debug的gdb进行调试
1 | { |
选项说明:
- type : 使用gdb连接
- request: launch是加载程序并运行调试
- target: 调试的目标elf
- gdbpath: 调试用gdb
- autorun: gdb启动后自动运行的命令,这里是远程连接pyocd的gdbserver和加载烧写elf
3.运行pyocd gdbserver
使用下面命令pyocd会连接daplink并启动gdbserver:
1 | pyocd gdbserver --persist -t nrf52 -bh |
这里-t nrf52说明我用的是nrf52系列的芯片,如果使用其它芯片可自行修改,-bh是用硬件断点替换软件断点, -r是reset cpu后halt住.
运行成功后会看见下面打印
1 | 0000219:INFO:board:Target type is nrf52 |
4.Vscode中debug
点击调试的绿色三角运行符号会自动开始下载进入调试,下图就是调试zephyr-mcuboot的示例: