Windows环境下CubeMX+VScode+Gcc+OpenOCD开发STM32环境搭建

       为啥要这么麻烦嘛,这个不解释,生命在于折腾,相信很多人都在折腾,也很多人去百度过,按百度的教程估计还是有很多人不会弄,所以写这篇教程为那些还没有折腾成功的砖工提供点线索。

       VScode现在真的很强大,界面跟配色都是一流,再加个各种强大的插件,使VScode越来越成为万能的IDE,可以开发各种语言。这里不多说,VScode相信绝大部分的人都会安装使用,就不再重复了。

      Gcc对应CortexM的编译器arm-none-eabi-gcc,只要百度下,都可以下载到。这里直接搬砖https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads,点页面右边的Download然后选择对应的版本就可以下载了。安装包是exe文件,安装就是一直next就可以了。最后一步,一定要勾上Add path to environment varibale这个选项,把Gcc增加到环境变量,否则就要自己去环境变量那里增加。安装完成后会自动打开CMD,输入arm-none-eabi-gcc -v就可以看到gcc版本号,安装完成。

       在CMD下试下make,发现找不到该命令,这点比较坑,Gcc里没有自带Make。这玩意在百度上还真不好。我这边已经找到了,X64版本跟X86版本都有。还就是尽量不要用Ghost系统,不然会发现缺失一些Dll,导致make无法执行,自行在网上下载缺失的DLL补回去应当可以了。把make.exe复制到gcc安装目录下的bin文件夹里面(C:\Program Files\GNU Tools ARM Embedded\8 2019-q3-update\bin),然后在CMD下执行make,就可以看到make已经执行了。

       目前可以用gcc来编译STM32了,打开CubeMX新建工程,CubeMX的使用就不多说了,最后生成工程的时候选择Makefile工工程就可以了。在生成的工程目前下,按住Shift+右键,点在此次打开命令窗口,就可以快速打开CMD,直接敲入make 或者make -j4(-j4就是4线程编译,大家自行根据电脑配置选择线程数据,我这是用的虚拟机,只配置了2个核,所以用了4线程)。回车后就可以看到gcc在编译工程了,最后编译完成,生成elf、Hex、Bin等文件。

     接下来就是OpenOCD,这里直接转到https://sourceforge.net/projects/openocd/files/latest/download就可以下载openocd-0.10.0.zip。解压OpenOCD,把OpenOCD/Bin目录下的三个文件同样复杂到Gcc目录下的Bin文件夹里。在CMD下执行openocd。可以看到openocd可以执行了。接下来就是复制OpenOCD的脚本文件,在原来解压的OpenOCD文件夹里的OpenOCD\share\openocd\scripts下最关键的两个目录,interface跟target,interface就是放的调试器的脚本,target放的是芯片脚本,我这边用的STM32F105跟ST-link,把interface下的stlink.cfg,target下的stm32f1x.cfg、swj-dp.tcl,scripts目前下的mem_helper.tcl4个文件复制到STM32工程目录下。然后在CMD下输入 openocd -f stlink.cfg -f stm32f1x.cfg,此时发现提示找到sw-dp.tcl文件。用记事本或者Notepad++打开stm32f1x.cfg文件,在第6行source [find target/swj-dp.tcl],swj-dp.tcl是在当前目前下,所以修改成source [find swj-dp.tcl]后保存,再次在CMD下执行openocd -f stlink.cfg -f stm32f1x.cfg,就可以看到OpenOCD通过stlink连接上了芯片。

     到这一步,前期工作已经完成了,接下来就是拿出来我们的VScode。在拓展那里直接搜索cortex,就可以看到Cortex-Debug调试插件,后面三个插件是调试插件的器件包,我们一并安装上。用VScode打开STM32的工程。按ctrl+~就可以快速打开控制台,在控制里make -j4先编译,如果还没有编译过。点开VS的Debug栏,然后点打开配置lunch.json,选择Cortex Debug。就会打开Debug的配置文件,这里最关键的部分,也是很多百度上教程没有说明白的地方。

    "configurations": [
        {
            "name": "Cortex Debug",
            "cwd": "${workspaceRoot}",
            "executable": "./build/stm32f105.elf",
            "request": "launch",
            "type": "cortex-debug",
            "svdFile":"C:/Users/Administrator/.vscode/extensions/marus25.cortex-debug-dp-stm32f1-1.0.0/data/STM32F105xx.svd",
            "servertype": "openocd",
            "configFiles": [
                "stlink.cfg",
                "stm32f1x.cfg"
            ]
        }
    ]

这里直接放上我的配置,最关键的是servertype要选择openocd,跟configFiles要加上stlink.cfg跟stm32f1x.cfg,这两个文件就是上一步复制到工程目录下的,调试器调用 OpenOCD的时候会去找这两个文件,前面 用openocd -f stlink.cfg -f stm32f1x.cfg测试过可以连接上芯片,这里配置就不会有问题。然后就是executable可执行文件,gcc编译出来的是elf文件,相当于MDK的axf文件,在工程目录下的build里面,大家可以找到,修改成自己工程对应的可以了。再然后就是svd文件,这是芯片的寄存器列表文件,具体位就是在Windows用户目录下的C:\Users\Administrator\.vscode\extensions\marus25.cortex-debug-dp-stm32f1-1.0.0\data。大家根据路径一级一级去找就可以找到对应芯片的svd,这是前面要安装CortexDebug的器件包插件才会有的。

    一切都准备完毕,接下来就是激动人心的时候了,按F5进入调试,过了一会就可以看到进到调试界面,左边的Cortex Peripherals也可以看到外设寄存器,再按F5,就可以看到调试全速运行了,其它打断点什么,单点之类的,跟MDK没有太多区别,就不多复述了。

     最后还有几个点,在VScode的输出那里选择Adapter Output就可以看到OpenOCD的输出信息,可以帮助我们查看OpenOCD是否正常连接上芯片跟查找问题。还有就是Makefile默认没有打开调试编译,要做到源码级调试,我们还要修改下Makefile,在Makefile的C_DEFS宏定义那里拉架-DDEBUG打开调试编译。最后修改下make clean命令,清除工程编译文件,用于重新编译工程,Makefile里的命令是Linux下的,我们修改成Windows CMD的命令 -rmdir /s /q $(BUILD_DIR),其实就是删除build文件夹。

    目前为止我们已经可以在VScode下编译STM32并调试,用起来比Eclipse要方便强大的多。而且是全开源的软件,不用担心版权的问题。后面会继续写Ubuntu下的环境搭建,其实比Windows下的搭建简单很多^_^。End

  • 16
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值