0505-stm32的调试工具:vscode下jlink或stlink下载及调试+设置快捷键

目录

1.1-综述

2-vscode实现一键下载stm32

2.1-jlink的下载与擦除的makefile修改

2.2-stlink的下载与擦除的makefile修改

 2.3-提升一点效率:使用tasks.json配置用户任务(下拉菜单)

1-tasks.json干啥用的

2-如何创建tasks.json?

 3-tasks.json的文件编辑

4-tasks的使用方法

 2.4-再提升一点效率:使用keybindings.json配置快捷键

 1-keybindings.json可以配置自定义快捷键

 2-打开keybindings.json

 3-keybindings.json文件的编译

3-实现vscode里在线调试stm32

3.1-调试原理及分层结构

 3.2-配置settings.json用于在线调试

1-配置vscode的settings.json

 2-Cortex-Debug介绍

 3-launch.json用于配置vscode的调试设置

4-测试运行

 4.1-结论


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修改

注意jlink只能用批处理文件,不能像stlink那样。参考  J-Link Commander - SEGGER Wiki ,所有jlink.exe指令的使用,注意批处理也只能先造一个文件,然后再执行文件,参考链接里给的例子也是如此。
在makefile添加如下两个rule,第一条是创建一个/build/ jlink_flash_file文件,其中 jlink_flash_file是文件名可以是任意字符,这个rule依赖.bin文件,第一行touch是创建脚本文件,文件名即 $@指的是target,第二行echo 是将device 名写入target, 第三行设置接口为SWD,速度为10Mhz,第三行是loadbin指令,第四行r复位,g运行,qc退出。第二条rule是调用JLink指令来执行这个脚本文件。
#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,分别说明如下,

  1. 调用make指令执行编译,实际执行的命令行是‘make all -j4’调用4核全力执行

  2. 调用make指令执行清理工程,实际执行‘make clean’,删除build目录及内容

  3. jlink的下载,实际执行的是‘make -j4 jflash’

  4. jlink的擦除,实际执行的是‘make jerase’

  5. stlink的下载,实际执行的是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值