Jlink之J-Scope虚拟示波器

Posted Fireflycjd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jlink之J-Scope虚拟示波器相关的知识,希望对你有一定的参考价值。

01、虚拟示波器

说到虚拟示波器,大家应该都不陌生。在学校时开发智能车,调节PID时虚拟示波器是必须的工具。虚拟示波器软件有很多,之前我也分享过一篇文章《一个超赞的开源串口虚拟示波器项目》,基于QT的开源软件,大家有兴趣可以看一下。一般情况下虚拟示波器软件都是通过串口接收数据的,所以要求MCU通过串口把数据打包成软件支持的协议发给虚拟示波器软件。

02、J-Scope是什么

J-Scope是J-link的功能之一,J-Link是SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器。简单地说,是一个JTAG协议转换盒。关于J-Link可以看之前的文章《关于JTAG你知道和不知道的都在这里》《JLink cmd的使用》。

 J-Scope也是SEGGER公司推出的,使用Jlink连接MCU后,可以在目标MCU运行时,实时分析数据并图形化显示的软件。

J-Scope可以以类似示波器的方式显示多个变量的值。它读取elf或axf文件并允许选择多个变量进行可视化。

只需将目标微控制器连接到J-Link并启动J-Scope,几个步骤即可配置J-Scope,并选择要显示的符号。如下图

 J-Scope主要有RTT和HSS两种工作模式。

RTT模式:需要用户在MCU上添加代码,有点类似串口上传数据,因为有额外的代码,所以需要占用MCU的资源。优点是速度快,缺点是需要额外的代码。

HSS模式:不需要用户在MCU上添加任何代码,只需要使用J_Scope加载MDK或IAR的可执行文件即可,而且可以随时链接MCU,不影响MCU的正常功能,不需要额外的资源。使用标准的SWD接口即可。优点是不需要添加代码,缺点是速度较慢,一般为1K。

因为HSS模式不需要额外添加任何代码,所以我比较喜欢HSS模式,日常开发中也经常用到HSS模式。下文将重点讲解HSS模式。

 

软件准备,要使用J-Scope功能,除了一个JLink外,还需要安装J-Flash和J-Scope软件。下载链接如下

下载链接:https://pan.baidu.com/s/1KO13rZw8RVyIQPN4Qpp4-w

提取码:eqxx

 

03、HSS模式

首先编写测试代码,将程序下载到单片机内

#include "main.h"
#include <math.h>       /* sin */

RCC_ClocksTypeDef RCC_Clocks;

float x = 0;
double sin_o = 0;
double cos_o = 0;
int main(void)
{
  RCC_GetClocksFreq(&RCC_Clocks);
  
  while (1)
  {
    x += 1;
    if(x >= 360)
      x = 0;
    sin_o = sin(x*3.14/180);
    cos_o = cos(x*3.14/180);
  }
}

J-Scope软件的配置

新建工程,在①处选择USB,大部分情况下我们都是使用USB连接的Jlink的,在②处在SpecifyTargetDevice处选择对应的单片机型号,在③处选择不同接口,我这里使用的SWD接口,在④处选择HSS模式,额外说明⑤处的中文乱码是us。

特别说明,在⑥处加载keil工程生成的.axf文件或IAR工程生成的.out文件。路径中最好不要有中文。点击OK完成配置。

 接下来选择要观察的变量,不仅仅如下cos_o的变量,还有RCC_Clocks结构体变量也可以监控,只能选择全局变量,这也是J-Scope的局限性

 如果选择完毕,需要增加其他变量,可以在线图方框中右键,点击AddSymbols新增变量,选中已经已经添加的变量,按del键就可以删除。

 点击红色按钮开始运行

 两个技巧:移动下图①处的三角可以快速上下移动波形。如②处在变量上右键可以使用快捷菜单。

04、总结

J-Scope个人觉得是一个不错的工具,可以方便查看某些数据的波形,在ADC采集,温度传感器等等具有一定的作用。

比如一种情况:MCU采集温度数据,通过串口报给其他设备,这时候其他设备显示有很多异常的温度值,这个时候需要定位是MCU采集错了,还是其他设备解析数据错了。如果还在开发中,这个时候debug既可。但在已经发布的软件中,使用示波器监控解析串口数据是一个麻烦的事情,这个时候使用J-Scope就可以显示MCU采集的温度(保存在全局变量中)。不过这要求发布版本时,保存一份.ou文件或.axf文件。

J-Scope这么强大,但是依旧取代不了通过硬件串口发送给PC虚拟示波器的软件,因为J-Scope只能读取全局变量的数据,我们使用硬件串口可以将函数的局部变量发给虚拟示波器。

本文提供了一种针对发布版软件,在没有其他“埋点”打印的情况下,如何监控全局变量的方法,之前的文章《JLink cmd的使用》也提供了一种思路解决类似的问题,有兴趣的同学可以看一下。

文末说句感想,开发中使用的用具没有好坏,只是使用场景不同,多掌握几种工具,就可以多一些办法解决一些刺手的问题。

 

以上是关于Jlink之J-Scope虚拟示波器的主要内容,如果未能解决你的问题,请参考以下文章

J-Scope

安富莱专题教程第4期SEGGER的J-Scope波形上位机软件,HSS模式简单易用,无需额外资源,也不需要写目标板代码

代码调试之串口打印

opendds怎么监视一个变量

Jlink使用技巧之烧写SPI Flash存储芯片

有了jlink还需要装usb转串口驱动吗