在MacOS下使用VS Code和STM32 VS Code Extension插件进行STM32开发环境搭建、编译和断点调试

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


文章目录

  • 【STM32开发环境】MacOS环境下VS Code + STM32 VS Code Extension插件实现编译与断点调试
  • 缘由写在前面
  • 一、所需软件+插件
  • 二、扩展&软件安装
  • 2.1 安装vscode扩展
  • 2.2 安装cmake与ninja
  • 2.3 安装STM32 CubeIDE 与CubeCLT
  • 三、工程配置
  • 3.1 CubeMX生成工程
  • 3.2 VScode中导入工程
  • 3.3 VScode中CMake与调试配置
  • 3.3.1 gcc-arm-none-eabi.cmake配置
  • 3.3.2 launch.json配置(调试配置)
  • 四、结语


  • 缘由写在前面

    在整了一台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不好使的朋友们也是一种可以尝试的“远路”;感谢文中提及的文章的帮助,如果有任何问题,也欢迎在评论区留言,我知道的一定会解答【我解答不了的也可能会有别的大佬来解答:)】

    作者:木臾w

    物联沃分享整理
    物联沃-IOTWORD物联网 » 在MacOS下使用VS Code和STM32 VS Code Extension插件进行STM32开发环境搭建、编译和断点调试

    发表评论