欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

想做好 ARM Cortex-M 编程?先从精简配置 VS Code 开发环境开始

最编程 2024-02-29 16:14:18
...

越来越多的芯片厂商提供了自己的IDE给用户免费使用,但是国内的厂家大多没有,总不能一直用盗版吧,常在河边走,哪有不湿鞋…………
这里就利用VS Code搭建一个GCC开发环境,所有的都是免费的!

需要的软件
  • VSCode及插件
    比较核心的插件有下面几个,其他的按需安装即可:
    • C/C++
      The C/C++ extension adds language support for C/C++ to Visual Studio Code, including features such as IntelliSense and debugging.
    • Cortex-Debug
      Cortex-Debug adds support for debugging ARM executables through a GDB Server.
  • 编译器及相关工具
    选择官方的GCC编译器GNU Arm Embedded Toolchain以及CMake(或者make)
  • 调试工具
    我只用Segger J-Link,使用其他的工具需要装OpenOCD或者ARM官方的pyOCD

搭建过程

安装VS Code和插件

这里就不多说了,非常简单,后面跟着步骤详细记录插件的配置方法。

安装GNU Arm Embedded Toolchain

  • 1、以管理员权限运行安装包,打开的界面选择需要的语言,选哪个应该都清楚了
  • 2、所有的步骤都按默认的进行,除了最后一步,最后一步务必将后面三个英文的选项都打上勾
  • 3、验证安装结果,打开命令行,输入arm-none-eabi-gcc --version回车查看是否如下图所示

安装CMake

  • 1、双击打开安装包,一路下一步,直到下面这里,选择后面两项!后面也是一路默认的操作。

    *2、验证安装结果,打开命令行,输入cmake --version回车查看是否如下图所示!

安装make

习惯make的可以按这一小节进行安装

  • 1、先到这里下载最新的xPack Windows Build Tools工具,将下载下来的压缩包解压,我这里选择C盘根目录;
  • 2、将工具包的bin路径添加到环境变量里
  • 3、验证安装结果,打开命令行,输入make回车查看是否如下图所示!

安装调试工具

因为我是用jlink,所以就直接装jlink的驱动,这个应该就不特别说了,一路下一步就搞定。等哪天用别的工具了再回来写一下openOCD。

插件配置

虽然C/C++、CMake Tools都能通过配置完成编译、代码调试,但是对于MCU开发来说,Cortex-Debug更合适,不仅是配置简单,而且还能查看芯片的寄存器等内容。因此只用Cortex-Debug来做调试。

C/C++的配置

该插件只用来配置语法感知和提示,只要文件里不出现错误提示就算配置OK。


按快捷键ctrl+shift+q打开命令面板,输入C/C++,在弹出的提示中选择C/C++: 编辑配置(UI)(有UI可选我就不折腾别的)打开。然后配置以下内容:

  • 1、建立配置建一个名称,这里我就用ARM-GCC

  • 2、选择前面装好的工具链里的编译器,注意windows路径中的反斜杠要替换为斜杠

  • 3、智能感知模式选择gcc-arm

  • 4、因为前面已经配置了compilerPath,所以这里我保持默认,只包含工作区路径

    *5、这个地方相当于keil中Options-C/C++页面里的Define,如果希望代码阅读起来更舒服,可以按实际的情况填写相应的宏
  • 6、因为用的GCC编译器,所以语言标准都选gnu标准,具体的版本看自身需求


    通过以上配置,会在.vscodec_cpp_configuration.json文件中得到如下的结果,以后类似的工程都可以直接拷贝这个文件实现相同的配置

{
    "configurations": [
        {
            "name": "ARM-GCC",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2020-q4-major/bin/arm-none-eabi-gcc.exe",
            "intelliSenseMode": "gcc-arm",
            "cStandard": "gnu11",
            "cppStandard": "gnu++11"
        }
    ],
    "version": 4
}

Cortex-Debug的配置

  • 1、按F1,在命令面板中输入launch,选择Debug:Open launch.json,在弹出的选择环境的列表中选择Cortex Debug
  • 2、这时会在.vscode下面生成launch.json,内容长这样
  • 3、 按下面这个完善文件内容
{
    // 使用 IntelliSense 了解相关属性。
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "cortex-debug",
            "request": "launch",
            "name": "Debug J-Link",
            "cwd": "${workspaceRoot}",
            "executable": "./build/xxxx.elf",
            "serverpath": "C:/Program Files (x86)/SEGGER/JLink/JLinkGDBServerCL.exe",
            "servertype": "jlink",
            "device": "STM32H750ZB", // 可以在jflash等工具的器件选择列表里找到对应的具体型号
            "interface": "swd", // 可选jtag、swd
            "serialNumber": "", // 电脑上有多个JLink,通过这里指定使用一个进行调试
            "jlinkscript": "",
            "runToMain": true,
            "svdFile": "", // 可以在jlink的安装路径下找,也可以在keil、iar等地方找到,该文件描述了器件的寄存器等内容
            "rtos": "",
            "preLaunchTask": ""
        }
    ]
}

验证环境

为了方便,这里我选择使用STM32CubeMX生成的makefile工程!至于其它的芯片没有现成makefile,或者想使用CMake,找个时间另外写一篇。

编译工程

切换到终端窗口,在命令行中输入make并回车,完成编译

调试工程

点击运行图标切换到调试界面,选择前面上面完善好的配置即可出现如下的调试状态,,按上方居中的按钮可以执行全速、单步跳过等操作,左侧可以查看局部变量、全局变量、断点、CPU的寄存器,如果配置文件里配置好了对应的SVD文件,还可以查看外设寄存器。