0

我正在尝试使用 VSC 开发和调试带有 Zephyr OS 的嵌入式 C 应用程序。这可能吗?是否有设置说明?是否有 zephyr 设置扩展?Zephyr 文档讨论了如何在 eclipse 上调试应用程序,并且有一个 eclipse/zephyr 插件,但如果可能的话,我更喜欢使用 VSC。

由于 Zephyr 使用 CMake,我想我遵循 VSC CMake 项目教程。当它要求选择一个套件时,没有适合 zephyr 的东西,所以我没有选择任何活动套件。使用此设置,我实际上能够为闪烁示例成功构建,但无法调试项目。我得到的错误是:

错误:无法开始调试。来自命令“-exec-run”的意外 GDB 输出。不知道怎么跑。尝试“帮助目标”。程序“/home/mustafa/Code/Sycamore/hello_world/build/zephyr/zephyr.elf”已退出,代码为 42 (0x0000002a)。

如果有人对如何解决此错误或在 VSC 中设置 zephyr 项目有任何意见,那就太好了。谢谢!

4

1 回答 1

0

只需几个步骤就足够了:

  1. 将必要的文件夹添加到工作区,例如:
"folders": [
  {
      "path": ".",
      "name": "app"
  },
  {
      "path": "..\\zephyr",
      "name": "zephyr"
  },
  {
      "path": "..\\mcuboot"
  },
  {
      "path": "..\\modules\\hal\\stm32"
  }
]
  1. 安装Cortex-Debug扩展

  2. 在文件 .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",
         "cwd": "${workspaceRoot}",
         "executable": "./boot/build/zephyr/boot.elf",
         "request": "launch",
         "type": "cortex-debug",
         "serverpath": "C:/Program Files (x86)/SEGGER/JLink/JLinkGDBServerCL.exe",
         "servertype": "jlink",
         "device": "stm32f412RE",
         "interface": "swd",
         "runToMain": true,
         "svdFile": "./STM32F412.svd"
     }
    
于 2021-05-16T14:56:05.427 回答