今天的主角是国民技术的N32G457VE开发板,有幸能拿到这块开发板,今天我们就来看看国产芯片能不能完美兼容常用的调试工具JLink吧,我们将主要测试以下几个方面的内容:
1、Jlink RTT Viewer调试日志打印
2、J-Scope虚拟示波器
3、JLink SWO Viewer 配置
4、JLINK一键批量烧录
下面说下用到软硬件:
1、JLink硬件:淘宝JLink v9.4,100元左右;
2、JLink软件版本:JLink v7.66(与之前版添加国民MCU支持包方法一致,又与最新版差的不多,当前最新版是7.8。
另外本文是在已经给JLink添加好了国民技术MCU支持,所以可以直接选到对应的型号,如果还不会配置,请看我的另一遍教程:
<a >N32MCU开源项目--1、为JLink添加国民技术MCU芯片支持</a>
JLink是集成调试、烧录的各种软件,本身JLink是没有对国民技术MCU芯片支持的,这就需要我对其添加支持,以便能使用其全部功能。当然,如果不添加也是可以使用大部分功能,但总是有些不方便,所以我们就先来说说如果添加支持文件。首先,需要知道自己JLink的安装目录及版本,方便我们接下来的操作,我本地环境信息如下:
操作系统: Windows 10
JLink版本: V7.66
安装路径: C:\Program Files\SEGGER\JLink 请注意:不同版本
好了,现在进入正题。
一、Jlink RTT VIEWER调试日志打印
1、RTT配置:
首先找到J-Link安装目录,我们需要把库文件加入到工程:
# 本文都将以JLink v7.66版本为例
# JLink安装目录在 C:\Program Files\SEGGER\JLink
# RTT 支持库文件在 C:\Program Files\SEGGER\JLink\Samples\RTT\SEGGER_RTT_V766.zip
我们需要将压缩包 SEGGER_RTT_V766.zip 解压后把RTT文件夹复制到我们工程下,然后添加入工程。
然后在我们需要输出调试信息的页面加入 RTT 头文件,打印使用 SEGGER_RTT_printf 方法即可,以下是示例:
<blockquote>#include "main.h"
编译下载完成后,我们打开 J-Link RTT Viewer
之后就可以点Ok,就可以看到打印出来的信息了。
二、J-Scope虚拟示波器
3.1 功能描述
我们知道,示波器就是把模拟数据以图形化方式展示出来,以便直观的进行观察和分析,不管是数字电路,还是在模拟电路都有非常广泛的应用。
而J-Scope呢,是可以用类型似示波器的方式,把我们程序中的变量值显示出来,可以直观的观察到数据的变化过程,而且不需要借助于其它工具或软件,仅需要JLink和其自带的软件来实现功能,为了便于大家了解,我下面截了一张图,看看是不是非常像是示波器^_^。
3.2 J-Scope有两种工作模式
1、 RTT模式:我们需要定义一个缓存区,把需要的数据上传,这样才能使用,也就是需要用户编辑代码才能使用。优点是速度快,缺点是需要额外编写代码才能用;
2、 HSS模式:用户按正常编写代码就可以了,但是要展示的数据需要是全局变量,局部变量不行。优点非常明显,不需要额外代码即可使用,并且无干扰,随时可以连接MCU,不会影响MCU正常运行,缺点是仅支持全局变量,并且速度较慢,仅有1K。
下面我就使用两种方式进行下展示,为了方便展示,我们添加几个变量进行测试,实际测试过程如下:
HSS模式(申明:测试用例来源于 https://www.51cto.com/article/681050.html)
// 测试代码
#include "main.h"
#include <math.h> /* sin */
// 待测数据申明为全局变量
float x = 0;
<blockquote>// 测试代码
编译下载后,打开J-Scope ,选择New Project,按下面配置,芯片根据实际选择
点 OK 后就会弹出选择需要显示的变量,根据需要选择即可,这个后面也可以更改
因为HSS模式速度较慢,第一次点开始会弹出提示窗口,点 OK 继续就可以了
接下来就可以看到图形了,鼠标滚轮可以进行放大缩小,鼠标左键按下不放可以左右拖动
RTT模式:
<blockquote>#include "main.h"
编译下载后,打开J-Scope ,选择New Project,这次选择RTT模式
RTT模式配置
点 OK 后,就可以进入调试界面了,如果出现如下弹窗,就说明SEGGER_RTT_ConfigUpBuffer这里配置不正确,注意JScope_F4F4配置有问题
下面是官网上描述的类型,也可以打开 https://wiki.segger.com/UM08028_J-Scope 查看详细说明
好了,如果正常,就会直接显示出有几个变量,这里不再会像RSS模式时还要选择变量
可以看到J-Scope还是非常好用的,特别是RSS模式下,随时可以观察变量的变化情况,完全不会影响到程序的正常运行,非常实用也方便,并且能十分直观的观察到数据的变化,可以说是调试程序的一把利器。
4 JLINk SWO View配置
本来准备测试下SWO配置的,但目前国民技术的资料并没有相关信息的详细描述,所以暂时也不知道怎么配置。STM芯片开始调时能正常打印出信息,但之后又不能用,目前也没找到问题,不知道是不是我的JLink硬件有问题还是怎么的,所以这块内容只能暂时时先放弃,不好意思了,不过也给出STM32F103的开启代码,当然如果用CubeMx开启的话也比较简单,可以网上搜索下,教程非常多。
量产过程中会涉及到批量烧录的问题,如果再一个个的来烧,哪肯定要疯掉,所以批量烧当就必不可少,下面来讲解下如何配置批量烧录,测试案例也是在Windows环境下。
首先我们需要配置烧录命令,我们新建一个文本文件,取名为 jflash_n32g457VE.txt,下面是配置信息:
// 选择SW
si 1
// 速度4000KHz
speed 4000
// 芯片型号
device N32G457VE
//重新复位目标
r
//挂起目标
h
//擦除flash的内容
erase
// 固件文件完整路径
loadfile E:\Nationstech\Project\Objects\project.hex
reset
q
接下来要配置一键烧录脚本,命名为 jflash_upgrade.bat:
REM 单个设备烧录
"C:\Program Files\SEGGER\JLink\JLink.exe" ".\jflash_n32g457VE.txt"
将JLink连接到开发板上,然后双击 jflash_upgrade.bat ,就可以看到弹出一个烧录进度窗口,进度走完后就烧录完成了,是不是非常方便。
有心的大家应该也发现了,这里只能烧一个设备,如果有多个JLink,怎么实现批量烧录呢?其实很简单,但这里就需要知道JLink设备的序列号 SN,然后修改下脚本就可以了,JLink序列号可以在Keil5中看到,打开Keil5 配置页,在Debug中选JLink进去后就可以看到序列号:
假设有三个设备,序列号分别为 12345678、12345679、12345680,我们就可以按如下方式配置,其中 -device 后面就是指设备的序列号,配置完成后就可以一键批量烧录了,大提高了批量烧录的效率,而且成本也不高,下面来看下脚本配置:
REM 多设备批量烧录
REM 设备1
"C:\Program Files\SEGGER\JLink\JLink.exe" -autoconnect 1 -device 12345678 -if swd -speed 4000 -commandfile jflash_n32g457VE.txt
REM 设备2
"C:\Program Files\SEGGER\JLink\JLink.exe" -autoconnect 1 -device 12345679 -if swd -speed 4000 -commandfile jflash_n32g457VE.txt
REM 设备3
"C:\Program Files\SEGGER\JLink\JLink.exe" -autoconnect 1 -device 12345680 -if swd -speed 4000 -commandfile jflash_n32g457VE.txt
当然毕竟我们大多买到的都和谐版的,如果序列号一样话可以百度搜索 “JLink 修改SN”进行修改就可以了。
6 免现声明
因个人理解或操作可能有不正确的地方,或因版本变动导致的不确定因素,希望理解,如果有差错的地方麻烦自行改正,如因本文描述错误而引起的损失,本人不承担相关责任,也不承担任何的损失赔偿。
|