VSCode嵌入式开发环境搭建

Vscode开发环境搭建

看这个链接就可以了,后面下载调试有点问题看下3.3。
在VSCode上部署STM32F1的开发环境

1. MXCube配置工程生成Makefile文件

借助正确的编译工具链进行编译,

2. 编译工具链搭建

  • 编译工具链使用GCC的ARM版本 arm-none-eabi-gcc
    安装后cmd输入arm-none-eabi-gcc -v查看是否安装成功
    各版本arm-gcc区别与安装
    在这里插入图片描述
    在这里插入图片描述

  • make,安装MinGW64附带make,
    安装后cmd输入mingw32-make -vmake -v查看是否安装成功
    在这里插入图片描述

  • cmd切换到工程根目录下,输入makemingw32-make,make指令可以自己找到Makefile文件进行编译(编译的时候记得确认下Makefile里配置的.c文件和头文件路径是否全了),编译成功标志在build文件加下产生了.elf/.bin/.hex文件。

  • 可以把编译生成的文件通过STLink Utility或者串口编程下载到单片机上运行。
    STM32 ST-LINK Utility使用说明

3. VSCode开发环境部署

3.1 VSCode上下载插件

  • C/C++ , 使用代码提示功能
  • Cortex-Debug,它能够构建针对Cortex内核的微处理器的调试器;
  • Cortex-Debug: Device Support Pack - STM32xx,前者的一个辅助插件,它能够让前者运行时显示STM32xx系列的外设寄存器状态;
  • VSCode打开工程,终端 -> 配置任务 -> 使用模板创建task.json -> Other,生成.vscode文件夹,里面tasks.json文件,文件下tasks数组里每个对象都代表一个任务。
    终端 -> 运行生成任务 ->选择自己task.json里配置的任务名,可以通过这样的方式自动生成工程。
  • .vscode文件夹下创建c_cpp_properties.json文件,主要是配置工程头文件路径,工程宏,编译器(做代码检查的编译器)路径等等。
  • VSCode里运行任务,生成==.elf/.bin/.hex==文件。终端->运行任务(tasks.json里配置的任务名)。注,除了MXCube生成的,自己的代码文件记得在Makefile文件里手动添加。
    在这里插入图片描述

3.2 下载和调试

(注:下载的话也可直接用STLink Utility下载上面文件)

OpenOCD

调试使用 GDB:调试器,使用OpenOCD将GDB和在线调试器连接。
OpenOCD:搭建了一个GDB Server,联通了硬件调试器和GDB,通过USB和硬件调试器连接,并通过TCP和GDB连接。
win下OpenOCD已经编译好的二进制文件,下载并把OpenOCDd bin文件夹加到系统环境变量里。
OpenOCD下载
用到的
share/openocd/scripts/target:目标平台配置文件
share/openocd/scripts/interface:使用的调试器接口配置文件

3.3 使用VSCode做gdb的前端编译下载和调试

1. 在vscode中通过设置配置文件build工程并烧录。

task.json内容: 前两个任务分别是build项目,生成二进制文件,通过openocd烧录到开发板中。第三任务是打开openocd,应该用不到的,后面会使用Cortex-Debug插件加调试的launch.json文件

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Build",
            "type": "shell",
            "command": "mingw32-make",
            "args": [
                "-j4"
            ],
            "problemMatcher":["$gcc"],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        },
      
        {
             "dependsOn":"Build",
             "type": "shell",
             "label": "Burn",
             "command": "openocd",
             "args": [
                       "-f",
                       "interface/stlink.cfg",
                       "-f",
                       "target/stm32l4x.cfg",
                       "-c",
                       "program build/${workspaceFolderBasename}.elf verify reset exit"
                //"program build/Template_l412.hex reset exit 0x08000000"
                      ],
              "detail": "Burn with OpenOCD"           
        },
        {

              "type": "shell",
              "label": "OpenOCD",
              "command": "openocd",
              "args": [
                        "-f",
                        "interface/stlink.cfg",
                        "-f",
                        "target/stm32l4x.cfg"
                      ],
              "detail": "start OpenOCD and wait for gdb"           
        }
    ]
}

然后 F1 (终端)-> 任务 ->运行任务 选择task.json里配置的几个任务执行

2. 在vscode中使用Cortex-Debug插件与launch.json文件调试

运行 -> 添加配置 ->Cortex Debug 产生launch.json文件
在这里插入图片描述

launch.json文件修改一下内容:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Cortex Debug",
            "cwd": "${workspaceRoot}",  //输出路径
            "executable": "./build/${workspaceFolderBasename}.elf",
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "openocd",  //调试器选择
            "device": "STM32L412KB",
            "interface": "swd",
            "configFiles": ["C:/Program Files/OpenOCD-20210729-0.11.0/share/openocd/scripts/interface/stlink.cfg","C:/Program Files/OpenOCD-20210729-0.11.0/share/openocd/scripts/target/stm32l4x.cfg"],
            "runToMain": false,
            "preLaunchTask": "Build",   //在调试前预先执行的任务,此处是task.json中的
            //"armToolchainPath":"C:\Program Files (x86)\GNU Arm Embedded Toolchain\10 2021.07\bin"   //如果ARM的工具链路没有添加到系统环境变量的话,则需要

        }
    ]
}

然后 F5或者点,进行调试。
在这里插入图片描述

坑:两个json文件中烧录的文件和调试的文件一定选择.elf的,用hex或者bin都会出现各种恶心的错误,用elf的就可以烧录调试了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

@.@:
在这里插入图片描述

4. 串口输出重定向

之前usart.c里的不用变
在这里插入图片描述

syscalls.c文件加到工程里就可以了,这个文件在STM32的example串口项目里。然后在Makefile文件里添加下.c。添加这个文件如果有头文件找不到报错,就在c_cpp_properties.json里添加下包含路径。
在这里插入图片描述

5. 硬件与接线

5.1 下载调试

硬件:STLlink / JLink / eLink(含串口)
注:根据这个不同OpenOCD选择对应的目录下的 *.cfg 文件
…\OpenOCD-20210729-0.11.0\share\openocd\scripts\interface
eLink没有自己创建个 elink_dap.cfg 文件

adapter driver cmsis-dap
transport select swd

接线:SWDIO SWCLK VCC GND
在这里插入图片描述

5.2 log

硬件:CH340
接线:TX RX GND

6. 其他问题及解决方法补充

  1. 使用STLink下载报错:Error: expected 1 of 1: 0x1ba01477
    解决:https://blog.csdn.net/nick_young_qu/article/details/108217987
    修改cfg文件
    编辑~/.platformio/packages/tool-openocd/scripts/target/stm32f1x.cfg
    set _CPUTAPID 0x1ba01477改为set _CPUTAPID 0x2ba01477
  2. 使用STLink要用工具UsbDriverTool.exe转驱动
    在这里插入图片描述

6. 链接:

STM32开发之 VS Code + GDB下载调试
此外可以通过IOT Link插件来更加简单:这个插件安装在最近的VSCode1.60.x不能用,使用VSCode1.52.1可以,要关闭VSCode的更新,编译可以,我调试好像没弄好。大体跟前面的一样执行那些命令。
史上最简单的VSCODE+STM32开发环境搭建方式——基于IoT Link
[交流吐槽] 关于VS Code自动更新后导致IoT Link扩展插件不可用的问题

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VSCode(Visual Studio Code)是一款轻量级的跨平台代码编辑器,它支持插件扩展,可以方便地配置成嵌入式编程开发环境。下面是一些步骤可以帮助您在VSCode中搭建嵌入式编程开发环境: 1. 安装VSCode:首先,您需要下载并安装VSCode编辑器。您可以从VSCode的官方网站(https://code.visualstudio.com/)上下载适合您操作系统的版本,并按照安装向导进行安装。 2. 安装C/C++扩展:打开VSCode后,点击左侧的扩展按钮(或者使用快捷键Ctrl+Shift+X),搜索并安装"ms-vscode.cpptools",这是一个官方提供的C/C++语言支持扩展。 3. 配置编译器:在VSCode中,您需要配置一个C/C++编译器来编译和运行您的嵌入式代码。对于不同的嵌入式平台和开发环境,可能需要选择不同的编译器。一般情况下,您可以通过修改VSCode的设置文件(settings.json)来配置编译器路径和参数。 4. 配置调试器:嵌入式开发通常需要进行调试。您可以安装并配置适合您嵌入式平台的调试器扩展,例如ARM平台可以使用"marus25.cortex-debug"扩展。 5. 安装其他相关插件:根据您的具体需求,您可能还需要安装其他相关插件来提高嵌入式开发效率,例如串口调试工具、格式化工具等。 以上是在VSCode中搭建嵌入式编程开发环境的基本步骤。不同的嵌入式平台和开发环境可能会有一些特定的配置要求,您可以根据实际情况进一步进行配置和调整。希望对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值