出品 21ic论坛 791314247 生命在于运动,技术在于折腾,你是否厌倦了在keil、iar下孜孜不倦的写代码、debug,是否玩累了在外部编辑器下写代码,然后在转到ide下进行仿真、下载等操作呢? 这个教程将介绍下如何在vscode下实现这些操作,真正实现一个vscode可以吃天、实现编译仿真下载一条龙服务,而你只需要在vscode下的终端敲几个命令而已。。。 本教程以阿波罗开发板stm32f429igt6为例,先瞅瞅最终界面 最终可以用的功能如下: 1,vscode终端下执行make指令,即可在build文件下编译出.hex .bin .elf文件,中间文件放在build/Obj/文件夹下 2,执行make clean,可清除build文件夹 3,执行make download,可一键下载hex到目标板子并让板子复位运行,相当于keil的一键下载按钮 4,执行make reset,可以让板子复位运行一下 5,执行make commit,可一键推送到你的github或者giteee远程服务器上去,但前提是你自己创建了这个工程的git 教程如下: 环境:1,下载vscode及必要插件,令需要一个插件Cortex_debug 2,Windows下安装arm-none-eabi-gcc工具链,推荐q4版本下载及安装教程:https://blog.csdn.net/qq_35333978/article/details/110398968 3,Windows下安装Jlink最新版驱动(V6.88a)附件上传不上去,故分享个网盘永久链接链接:加HTTP加斜杠pan.baidu.com/s/11YnBjWtl9L9V7YCQABC60Q提取码:ysgp安装、下载的教程也在上面的链接。 4,GNU make 百度网盘链接和安装教程、添加环境变量教程也在上边的链接。。。 5,git bash 这个不用说,大家都会有的吧,然后需要把vscode的终端换成git bash。百度一下,太容易了。 好了,环境就搭好了,不要嫌麻烦,现在越麻烦,你用起来越方便! 编译:编译只需在vscode终端中执行make指令就行,如下图: 仿真:仿真的话需要vscode下的插件cortex debug,这个教程我粘贴上我之前写的国产芯片fm33lc02x的教程,大家只要把芯片名字换成STM32F429就行 (1) vscode下载插件cortex debug插件 (2) 创建launch.json文件 如下图所示: 然后选择Cotrex Debug即可创建好launch.json文件 (3) 配置launch.json文件 稍微按照自己的芯片修改下就好,以FM33LC026为例: 然后将厂商提供的.svd文件放到你的工程根目录即可开始仿真,可以看变量、看外设寄存器、内核寄存器等等,还可以保存你的断点等。 然后实现这一切的核心就是makefile文件,不用管,我已经帮你写好了,而且全部中文注释,各种参数也是取自stm32cube的makefile参数,放心的用,放心的学!然后我将在附件提供一个基于阿波罗开发板stm32f429igt6的点灯例程。如果的芯片不是stm32f429,但只要你的核是arm核,本例程本makefile,通通能用!换芯片后你需要改以下内容: 1,找到你的芯片的基于gcc的启动文件和链接脚本,一般问厂商要肯定有的,不用自己写,然后替换到根目录下的2个对应文件 2,改以下内容,是不是看起来特简单。 然后,就搞定了,具体的参数可以去stm32cube上生成一个对应内核的makefile,然后参考下就行了,其实其他核是更简单的。教程可能有点乱,后期我会在整理下。 最后附上我的整个makefile #************************************************************************* # ** # ** File : Makefile # ** Abstract : This is the introduction to the document # ** Author : wr # ** mail : 791314247@q.com # ** Created Time : 2020年11月22日 星期日 11时58分06秒 # ** copyright : COPYRIGHT(c) 2020 # ** # ************************************************************************/ ifneq ($(V),1) Q := @ else Q := endif ################################以下项目需用户根据需要更改########################## # 输出文件的名称,默认为main(main.elf main.bin main.hex) TARGET := main #链接文件名称和所在路径 LDSCRIPT := ./STM32F429IGTx_FLASH.ld #启动文件名称和所在路径 START_FILE_SOURCES := ./startup_stm32f429xx.s #内核选择,FPU, FLOAT-ABI可为空 CPU := -mcpu=cortex-m4 FPU := -mfpu=fpv4-sp-d16 FLOAT-ABI := -mfloat-abi=hard #系统宏定义 C_DEFS := \ -DUSE_HAL_DRIVER \ -DSTM32F429xx # 芯片型号,用于Jlink仿真调试、下载 CHIP := STM32F429IG # 选择优化等级: # 1. gcc中指定优化级别的参数有:-O0、-O1、-O2、-O3、-Og、-Os、-Ofast。 # 2. 在编译时,如果没有指定上面的任何优化参数,则默认为 -O0,即没有优化。 # 3. 参数 -O1、-O2、-O3 中,随着数字变大,代码的优化程度也越高,不过这在某种意义上来说,也是以牺牲程序的可调试性为代价的。 # 4. 参数 -Og 是在 -O1 的基础上,去掉了那些影响调试的优化,所以如果最终是为了调试程序,可以使用这个参数。不过光有这个参数也是不行的,这个参数只是告诉编译器,编译后的代码不要影响调试,但调试信息的生成还是靠 -g 参数的。 # 5. 参数 -Os 是在 -O2 的基础上,去掉了那些会导致最终可执行程序增大的优化,如果想要更小的可执行程序,可选择这个参数。 # 6. 参数 -Ofast 是在 -O3 的基础上,添加了一些非常规优化,这些优化是通过打破一些国际标准(比如一些数学函数的实现标准)来实现的,所以一般不推荐使用该参数。 # 7. 如果想知道上面的优化参数具体做了哪些优化,可以使用 gcc -Q –help=optimizers 命令来查询。 OPT := -Og # 是否将debug信息编译进.elf文件,默认打开 DEBUG := 1 …