问题描述
我正在尝试使用 VSC 来开发和调试带有 Zephyr OS 的嵌入式 C 应用程序。这可能吗?是否有设置说明?有 zephyr 安装扩展吗? Zephyr 文档讨论了如何在 eclipse 上调试应用程序,并且有一个 eclipse/zephyr 插件,但如果可能的话,我更喜欢使用 VSC。
由于 Zephyr 使用 CMake,我以为我遵循了 VSC CMake 项目教程。当它要求选择一个套件时,Zephyr 没有合适的东西,所以我没有选择活动套件。使用此设置,我实际上能够为闪烁示例成功构建,但无法调试项目。我得到的错误是:
错误:无法开始调试。命令的意外 GDB 输出 “-exec-运行”。不知道怎么跑。尝试“帮助目标”。该程序 '/home/mustafa/Code/Sycamore/hello_world/build/zephyr/zephyr.elf' 有 以代码 42 (0x0000002a) 退出。
如果有人对如何解决此错误或在 VSC 中设置 zephyr 项目的说明有任何意见,那就太好了。谢谢!
解决方法
只需几步即可:
- 将必要的文件夹添加到工作区,例如:
"folders": [
{
"path": ".","name": "app"
},{
"path": "..\\zephyr","name": "zephyr"
},{
"path": "..\\mcuboot"
},{
"path": "..\\modules\\hal\\stm32"
}
]
-
安装 Cortex-Debug 扩展程序
-
在文件 .vscode/launch.json 中设置调试会话:
"configurations": [ { "name": "App","cwd": "${workspaceRoot}","executable": "./app/build/zephyr/zephyr.elf","request": "attach","type": "cortex-debug","serverpath": "C:/Program Files (x86)/SEGGER/JLink/JLinkGDBServerCL.exe","servertype": "jlink","device": "stm32f412RE","interface": "swd","svdFile": "./STM32F412.svd" },{ "name": "Bootloader","executable": "./boot/build/zephyr/boot.elf","request": "launch","runToMain": true,"svdFile": "./STM32F412.svd" }