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

本文详细描述了在MacOS环境下,如何通过VSCode和STM32VSCodeExtension插件,配合CMake和ninja工具,以及STM32CubeIDE和CubeCLT进行STM32项目的编译和断点调试,为Mac用户提供了替代Openocd和KeilMDK的开发方案。
摘要由CSDN通过智能技术生成

【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

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

 ninja --version

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()

配置完毕以上文件后,点击左侧栏中的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",

其中,
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"
    }
  ]
}

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


四、结语

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

  • 27
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值