近两年,微软越来越拥抱开源支持跨平台,win10搭载Linux子系统,开源VSCode作为跨平台编辑器,VS2017官方支持了Linux和嵌入式开发功能。
ST也是,近两年开发的软件工具基本都是跨平台(基于Java)的,比如STM32CubeMX,MCUFinder,STM32CubeProgrammer等。17年年底收购了truestudio的开发公司-Atollic。这个公司的IDE就是基于Eclipse使用GNU套装的。
官方都支持了,那我们有必要了解一下。要是好用,说不定就可以淘汰老旧的Keil了。
必要软件
VSCode或者VS2017。
GNU ARM Embedded Toolchain。JLink或者STLink。
STM32CubeMX。这个一般开发STM32的都会装。
使用思路
编译就不说了,有makefile,有gcc就可以了。
调试的话,整体的流程图如下:
VS2017
这里使用VSCode举例,但是VS2017实际上也是支持的,可以参考官方博客。这里本人做了一下尝试,发现官方还未完善。文档有多处错误,所以暂不考虑。
VSCode基本配置
这个现代化的编辑器,好处就不多说了,对比keil谁用谁知道,网上也能搜到一堆的关于它的介绍。
必要插件
C/C++为必要插件,否则无法调试。
建议安装插件
JLink安装
安装完成后,目录下应该有下列文件
GNU ARM Embedded Toolchain安装
下载后,安装或者解压即可。目录下有一个bin的文件夹,可以看到有下列文件:
安装完成后,将bin文件夹路径添加到环境变量。不过这不是必要的,只是方便在命令行中使用,在vscode中使用是不需要的。
使用cube生成代码以及makefile
这里需要注意,cube的版本至少要是4.23.0。否则没有生成makefile的选项,这里使用4.24.0。在配置完成后,设置选项需要选择Makefile,如下图:
点击生成后文件目录如下:
在main.c中添加两行闪灯的代码:
while (1) { HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin); HAL_Delay(500); Counter++; /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ }
至此,整个工程就搭建好了。
编译
官方生成了makefile,那么只要执行make就可以了。makefile的语法,网上可以找到很多的教程,这里不细说。
就目前的工程,想要make成功,改一句话即可使用,即指定gcc的路径。我的路径如下:
BINPATH = D:/GNU_ARM_TOOLS/2016q3_Version_5_6/bin
修改后,打开命令行,输入make即可。如果,提示make不是内部或者外部命令,那你还需要安装GNU make,这个可自行搜索下载。
如果配置成功,应该能看到下面的画面:
这样,在build目录下面可以找到blink.hex,blink.elf,blink.bin
这几个文件。至此,编译成功。
其实,即使不使用cube生成Makefile,我们也可以自己写一个,或者使用CMake。但是,使用官方的文件,会统一大家的程序结构,以后移植或者开源也更容易。
而且,官方的Makefile结构比较清晰,熟悉Keil工程配置的人,其实很容易接受。
下载
可以使用JFlash直接烧录
如果没什么问题的话,复位之后,目标板的led应该已经开始闪烁了。
调试
这里是重点。
1.运行GDB server
我这里是在windows平台下,JLink提供的GDB server有一个图形客户端。Linux平台下使用命令行版本,也是一样的。
打开JLinkGDBServer.exe,配置连接好后,应该看到下面的界面
这个server一直开着就行,注意上面的端口号2331,后面要用到。
2.测试GDB
由于VSCode的配置文件中使用了较多的GDB指令,这里使用命令行先演示一下,方便理解,也刚好测试GDB是否正确安装。
在命令行输入arm-none-eabi-gdb
,应该看到如下画面,否则你的GNU套装没安装好,或者没添加到环境变量
继续输入下面的指令:
此时,应该也看到led灯在闪烁了。
简单解释这几个指令,详细的可以自行搜索gdb的教程,或者查看GNU套件安装目录下的文档。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/484846.html