cygwin用命令安装软件_用VS Code开发STM32(一)——软件安装

4c69bf028a7e09387891b096600b5937.png

2020年7月26日更新:

增加了Jlink GDB Server的支持,可以使用J-Scope 和 SEGGER RTT了


2020年7月3日更新:

改为了使用Cortex-Debug插件来进行调试;

详细研究了c_cpp_properties.json该如何配置,保证消灭红色波浪线;

修改了一些细节使其适应最新的软件;


写在前面

本文了搭建一个用VSCode + 开源 arm 工具链 + OpenOCD开发STM32的环境。此方案跨平台,Windows,linux,OSX都可以用。本文以Windows 10为例进行配置,在linux和macOS上的配置应该会更简单。

以下所有的路径都最好不要有中文。


1.需要的软件和工具

(1) STM32CubeMX:用于生成带makefile的HAL库工程(给的链接是国内的论坛,因为官网下载太麻烦了还要注册账号)。注意STM32CubeMX是依赖Java的,所以要确保你电脑上安装了JRE(Ubuntu用sudo apt install default-jre来安装);

(2) VSCode:很好用的编辑器,现在已经有64位的版本;

(3) GNU Arm Embedded Toolchain:arm用的GNU工具链,包括编译器(gcc),调试器(gdb),链接器(ld)和其它工具。

(4) OpenOCD ( windows版 ):一个开源的片上调试器(Open On-Chip Debugger)。linux可以直接 apt install openocd

(5) Zadig:用来装jlink 的USB驱动的,虽然Jlink插上就能装驱动,但是直接装的OpenOCD识别不到。Linux系统无视这条就行;不用JLink也无视这条。

(6) Git:git版本管理不用多介绍了吧,但是我们这里要使用的是下载git附带的git bash。这个bash是基于mingw的,非常轻量了,甚至于make都没有。但是问题不大,给git bash增加make,wget等工具的方法,见这篇文章。

不使用mingw的原因是,mingw有时会安装失败,很烦。

linux自带bash,不用管。

【注】如果你只使用jlink,那么我更推荐你使用Jlink GDB Server而不是OpenOCD + zadig。因为这样你就可以使用SEGGER的各种牛X工具,例如J-Scope和SEGGER-RTT。见:《用VS Code开发STM32(四)——增加SEGGER RTT日志输出支持》

2.软件安装

STM32CubeMX、ARM工具链、VS Code、Git都是安装包,一路next就行了。Zadig是免安装,就不说了。注意一下arm工具链安装时有个选项是把bin文件夹添加到系统Path环境变量。如果忘了勾选,后面手动加也可以。

OpenOCD还是推荐直接下载编译好的可执行文件,免得麻烦。Windows戳<这个链接>,linux直接apt install openocd。下载完后解压到C盘根目录或者别的任何你喜欢的地方。

如果你用的是jlink并且想用J-Scope和SEGGER RTT,就不用装OpenOCD了,直接看本系列文章的第四篇,装好jlink全家桶了以后再回来继续看

3.添加环境变量

把Arm工具链安装目录下的bin文件夹和openOCD安装目录下的bin文件夹都添加到PATH环境变量中。添加环境变量的方法就不赘述了。linux也要加,但如果你的openocd是用apt-get装的,就不用加openocd的了。

69e0c05f43e6ae440cf277432903ac23.png

环境变量修改完毕后,需要重启电脑才能生效。然后打开Power Shell,输入:

arm-none-eabi-gcc --version

openocd --version

可以看到版本信息,说明安装成功。

这两个命令也可以在git bash中运行:

2b88838bf8c01f6fce94ef1780aad2e7.png

【注】如果是Ubuntu系统,最好把gdb也试一下

arm-none-eabi-gdb -v

如果出现了报错,说缺什么库就用apt装什么库:

#报错
arm-none-eabi-gdb:error while loading shared libraries: 
libncurses.so.5: cannot open shared object file: No such file or directory

#手动安装
sudo apt install libncurses5

能早在命令行发现的问题早解决。不然后面图形化运行,出了错都不知道为啥。

4.使用Zadig修改J-link驱动(Linux无视这条)

【如果你执意使用jlink+openocd的组合,才需要使用Zadig】

当我们直接插上Jlink,自动安装完驱动后,打开设备管理器,是这样的:

7e38b0dd349fbc53b297894610189eb3.png

我们在Keil中用的很好,但是它是“通用串行总线控制器”,OpenOCD识别不到。因此我们插上Jlink后,打开Zadig,选择Options---List All Devices,下拉菜单中选择J-link,然后在右侧选择WinUSB,点击Reinstall Driver。

a13cdbf3366b8e2cfbed2a999a39dcc1.png

然后,打开设备管理器,就看到J-link从“通用串行总线控制器”变成了“通用串行总线设备”。这样就修改完成了。

c4707ba9e845499b35006b65e99e90b5.png

【注】这个地方我也不知道为什么必须要修改,它们之间的区别是什么,我参考的是<这篇文章>。懂的老哥可以评论区告诉我一下,谢谢。


其他链接:

Jayant:用VS Code开发STM32(二)——编译​zhuanlan.zhihu.com
c8978f2790d8f5a71c1eba7b4d405729.png
Jayant:用VS Code开发STM32(三)——调试​zhuanlan.zhihu.com
19625e71ded8bf3467f81e4ffd916835.png
Jayant:用VS Code开发STM32(四)——增加SEGGER RTT日志输出支持​zhuanlan.zhihu.com
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值