当前位置:   article > 正文

【STM32开发环境】MacOS环境下VS Code + STM32 VS Code Extension插件实现编译与断点调试

stm32 vs code extension

【STM32开发环境】MacOS环境下VS Code + STM32 VS Code Extension插件实现编译与断点调试




缘由写在前面

在整了一台intel处理器的MacBook后(为了处理照片与视频),就想着配一下32的开发环境,不能扔下嵌入式开发;遂在网上找macOS的32环境配置,方案基本是 Clion/VS Code + Openocd 的形式,奈何尝试后我遇到了以下问题:

  • Clion+openocd下只能下载无法调试的问题,即使更换clion版本也没有解决
  • Clion的gdb工具更是只能使用捆绑,调用外部就会提示没有可用工具

总之最后放弃了openocd的方案;最新的MDK6插件方案也由于keil等不支持macos(MDK6的转化问题)而不可行。
于是本人在参考以下在win环境下配置的文章后
【电赛-软件】基于ST官方插件 配置VScode开发STM32

操作中发现cubemx生成的工程不再有.cprojectSTproject 类型,仅依靠CubeCLT与CubeMX两软件也没能在我的MAC上实现调试,因此本人结合macos的实际问题做了调整,给出一个基于官方插件与调试应用macOS下vscode开发STM32环境搭建方案总结,希望能给上述等方法都无效的朋友们一个选择。


一、所需软件+插件

  1. VScode + STM32 VS Code Extension + C/C++等扩展
  2. STM32 CubeIDE
  3. STM32 CubeCLT
  4. STM32 CubeProgrammer
  5. ninja编译工具
  6. CMake
    *以上均建议默认路径安装

二、扩展&软件安装

2.1 安装vscode扩展

扩展中搜索 STM32 VS Code ExtensionC/C++CMake(Tools)进行安装
CMake与CMake tools
STM32 VS Code Extension
C/C++等扩展同方法安装

2.2 安装cmake与ninja

  • CMake

vscode将利用cmake构建程序 ,因此需要下载cmake程序并添加进系统变量;
方法一:在官网下载DMG,安装完毕GUI版本之后,再手动添加变量;
方法二:利用homebrew安装(如果因为可能的网络问题安装失败,尝试方法一)
具体步骤参照:macOS 如何安装 cmake

  • ninja
    利用homebrew安装,终端输入:
 brew install ninja
  • 1

安装完毕后,终端输入以下指令如果能返回版本号则安装成功:

 ninja --version
  • 1

2.3 安装STM32 CubeIDE 与CubeCLT

下载安装即可,都是安装器一路next的

至此,需要安装的部分完成,接下来到vscode中配置工程


三、工程配置

3.1 CubeMX生成工程

3.2 VScode中导入工程

如上文,cubemx中生成的工程不再有.cproject 的 STproject 类型,因此在生成的工程中选择 .ioc 文件进行导入,插件仍能够识别工程,且能创建出对应的 CMakelist 文件

3.3 VScode中CMake与调试配置

3.3.1 gcc-arm-none-eabi.cmake配置

在通过STM32 VS Code Extension 导入工程后,会默认生成 cmake -> gcc-arm-none-eabi.cmake 的cmake配置文件:
在这里插入图片描述
该文件中以下内容,包含了工具链的默认安装路径;其中标识中包含MAC 的,即为macos下的默认安装路径,对照无误即可

set(WINDOWS_ST_CLT_PATH "C:/ST/STM32CubeCLT/STM32CubeCLT/GNU-tools-for-STM32/bin/")
set(MAC_ST_CLT_PATH "/opt/ST/STM32CubeCLT/GNU-tools-for-STM32/bin/")
if(EXISTS "${WINDOWS_ST_CLT_PATH}")
    set(TOOLCHAIN_DIRECTORIES ${WINDOWS_ST_CLT_PATH})
elseif(EXISTS "${MAC_ST_CLT_PATH}")
    set(TOOLCHAIN_DIRECTORIES ${MAC_ST_CLT_PATH})
else()
    # Try to find an STM32CubeIDE installation to use for the toolchain.
    file(GLOB TOOLCHAIN_DIRECTORIES
        "C:/ST/STM32CubeIDE_*/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.*/tools/bin/"
        "/opt/st/stm32cubeide_*/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.*/tools/bin/"
        "/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.*/tools/bin/"
    )
endif()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

配置完毕以上文件后,点击左侧栏中的CMake 插件,生成中选择debug 配置(如果没有debug配置,点击小铅笔的编辑标志,会),点击右上角生成标志,等待工程构建,控制台中显示构建出.elf文件即为成功
在这里插入图片描述

3.3.2 launch.json配置(调试配置)

左侧栏中点击运行与调试,进入调试配置;通常一个新的工程中默认没有launch.json,此时能够点击创建launch.json文件来创建一个调试配置
在这里插入图片描述
json文件中,重点关注以下四个变量的路径并进行如下配置:

"miDebuggerPath": "/opt/ST/STM32CubeCLT/GNU-tools-for-STM32/bin/arm-none-eabi-gdb",
"miDebuggerServerAddress": "localhost:3333",
"debugServerPath": "/opt/ST/STM32CubeCLT/STLink-gdb-server/bin/ST-LINK_gdbserver",
"debugServerArgs": "--stm32cubeprogrammer-path ${command:vscode-embedded.st.cubeprogrammer} --swd --port-number 3333",
  • 1
  • 2
  • 3
  • 4

其中,
miDebuggerPath为解释器的路径;
miDebuggerServerAddress为调试端口
debugServerPathSTlink-server的路径
debugServerArgs为CubeProgrammer的路径

以下为完整的launch.json内容,可供参考

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Launch",
      "type": "cppdbg",
      "request": "launch",
      "cwd": "${workspaceFolder}",
      "program": "${command:cmake.launchTargetPath}",
      "MIMode": "gdb",
      "miDebuggerPath": "/opt/ST/STM32CubeCLT/GNU-tools-for-STM32/bin/arm-none-eabi-gdb",
      "miDebuggerServerAddress": "localhost:3333",
      "debugServerPath": "/opt/ST/STM32CubeCLT/STLink-gdb-server/bin/ST-LINK_gdbserver",
      "debugServerArgs": "--stm32cubeprogrammer-path ${command:vscode-embedded.st.cubeprogrammer} --swd --port-number 3333",
      "serverStarted": "Waiting for connection on port .*\\.\\.\\.",
      "stopAtConnect": true,
      "postRemoteConnectCommands": [
        {
          "text": "load build/debug/build/untitled.elf"
        }
      ],
      "logging": {
        "engineLogging": true
      },
      "preLaunchTask": "Build"
    }
  ]
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

配置完成后,如已构建完毕elf文件,点击在这里插入图片描述
即可实现调试


四、结语

以上为我配置环境的步骤,虽然安装软件多,但是对于openocd不好使的朋友们也是一种可以尝试的“远路”;感谢文中提及的文章的帮助,如果有任何问题,也欢迎在评论区留言,我知道的一定会解答【我解答不了的也可能会有别的大佬来解答:)】

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/984451
推荐阅读
相关标签
  

闽ICP备14008679号