目录
2.3-提升一点效率:使用tasks.json配置用户任务(下拉菜单)
2.4-再提升一点效率:使用keybindings.json配置快捷键
1.1-综述
这里介绍如何在vscode下实现jlink/stlink下载及在线调试;使用前面博客里的工程(参见0503,0504两个博文)里的名为may12的project,硬件也还是NUCLEO-F429ZI。在开发中,除了使用vscode进行酷炫的代码编辑,工程组织外,还有本文的重点:使用vscode对目标板进行下载(擦除、下载、复位)及调试(单步,查看寄存器),以及配置快捷键方便一键执行,毕竟调试个bug烧写800遍也不是啥丢人的事。
note: 我并不打算写一个step-by-step的说明,我尽量扩展一些原理性的东西,增加理解,如果需要可以直接参考附录的链接去DIY作为辅助,视频信息量并不中心支撑对系统的理解,因为如果不懂原理任意一个bug都要花费数小时。当然建议视频与博文都看一下。
2-vscode实现一键下载stm32
下载的前置准备工作已经在 0503和0504两个博文里准备完毕,命令行都测试OK,接下来就是要把命令行放到makefile里,这样就可以在vscode的命令行里通过make指令调用这一大串命令行,等于一条vscode指令执行一串其他软件的功能;这是基础,是后面使用用户快捷键的基础。本章节的重点是编辑makefile文件+编辑tasks.json文件。
note: 先在vscode命令行中进行测试,确认运行正常后,放到makefile里。
2.1-jlink的下载与擦除的makefile修改
#1- First create a file with all commands
$(BUILD_DIR)/jlink_flash_file: $(BUILD_DIR)/$(TARGET).bin
@touch $@
@echo device $(DEVICE) >> $@
@echo -e si 1 '\n' speed 10000 >> $@
@echo loadbin $< 0x08000000 >> $@
@echo -e r'\n'g'\n'qc'\n' >> $@
#2- Flash with J-Link
jflash: $(BUILD_DIR)/jlink_flash_file
JLink -commanderscript $<
通过make jflash指令就可以测试下载,指令执行时会先检查/build/jlink_flash_file文件是否存在,不存在的话就调用第一条rule来创建它,
打开build/jlink_flash_file,文件里是这样的,如下图
同理,有的时候我们还需要全片擦除操作,脚本文件类似,只是第三行用erase指令,默认不给参数的话表示全片擦除
$(BUILD_DIR)/jlink_erase:
@touch $@
@echo device $(DEVICE) >> $@
@echo -e si 1 '\n' speed 10000 >> $@
@echo erase >> $@
@echo -e r'\n'g'\n'qc'\n' >> $@
jerase: $(BUILD_DIR)/jlink_erase
JLink -commanderscript $<
2.2-stlink的下载与擦除的makefile修改
st的下载指令要简单很多,一行搞定,在makefile里任意位置添加如下内容,这里是两条rule,第一条sterase,表示要擦除全片,因为是直接调用指令执行,所以没有任何依赖;第二条rule是stflash,依赖.bin文件存在,调用st-flash命令执行将bin文件下载到0x08000000的位置。
# st-util erase and flash
sterase:
st-flash --freq=4000 erase
stflash: $(BUILD_DIR)/$(TARGET).bin
st-flash --reset write $< 0x08000000
测试一下,在vscode的任意命令行里,打入make sterase 即可执行擦除,用时约半分钟,同理打入make stflash测试下载指令,下载完成后会自动复位运行,使用st进行下载的速度要远慢于使用jlink的速度。
2.3-提升一点效率:使用tasks.json配置用户任务(下拉菜单)
1-tasks.json干啥用的
在这里( Tasks in Visual Studio Code)了解关于tasks.json的作用,简单来说,就是vscode设计的专门配置如何调用外部功能的接口,因为这些外部的功能如make, lint等是开发环节中的重要部分,而且大部分是命令行式的。这一段所描述的所有内容都可以在这个链接里找到,建议认真阅读原文,要查看具体字段如"group"使用说明可以直接在网页里搜索。再简单来说,有了tasks.json就可以配置用户自己的下接菜单。
2-如何创建tasks.json?
有两个方法,一、手动自己创建.vscode/tasks.json, 因为文件内容比较简单所以完全可以自己创建,省得记忆下面提到创建方法路径, 二、菜单的Terminal->configure tasks... 或者用CTRL+P 弹出输入框,输入‘>Task’列表显示一堆,选择“Tasks:Config Task”继续选择Creat tasks.json file from template 。 这里差别不大,因为我们只是要一个文件,然后里面内容删掉重写。
3-tasks.json的文件编辑
针对stm32开发的用到的功能只是tasks.json中很简单的一块,这里一共定义了6个task,分别说明如下,
调用make指令执行编译,实际执行的命令行是‘make all -j4’调用4核全力执行
调用make指令执行清理工程,实际执行‘make clean’,删除build目录及内容
jlink的下载,实际执行的是‘make -j4 jflash’
jlink的擦除,实际执行的是‘make jerase’
stlink的下载,实际执行的是