一文带你了解Jlink之J-Scope虚拟示波器

开发 开发工具
J-Scope是J-link的功能之一,J-Link是SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器。简单地说,是一个JTAG协议转换盒。

[[422228]]

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

03HSS模式

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

  1. #include "main.h" 
  2. #include <math.h>       /* sin */ 
  3.  
  4. RCC_ClocksTypeDef RCC_Clocks; 
  5.  
  6. float x = 0; 
  7. double sin_o = 0; 
  8. double cos_o = 0; 
  9. int main(void) 
  10.   RCC_GetClocksFreq(&RCC_Clocks); 
  11.    
  12.   while (1) 
  13.   { 
  14.     x += 1; 
  15.     if(x >= 360) 
  16.       x = 0; 
  17.     sin_o = sin(x*3.14/180); 
  18.     cos_o = cos(x*3.14/180); 
  19.   } 

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的使用》也提供了一种思路解决类似的问题,有兴趣的同学可以看一下。

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

本文转载自微信公众号「知晓编程」

【编辑推荐】

 

责任编辑:姜华 来源: 知晓编程
相关推荐

2023-11-06 08:16:19

APM系统运维

2022-11-11 19:09:13

架构

2023-11-20 08:18:49

Netty服务器

2023-11-08 08:15:48

服务监控Zipkin

2023-10-27 08:15:45

2022-02-24 07:34:10

SSL协议加密

2022-04-28 09:22:46

Vue灰度发布代码

2020-10-08 14:32:57

大数据工具技术

2022-09-29 13:09:38

DataClassPython代码

2020-02-02 15:14:24

HTTP黑科技前端

2019-08-06 09:00:00

JavaScript函数式编程前端

2023-05-17 11:33:45

梯度下降机器学习

2024-02-04 09:44:41

量子计算量子量子物理

2022-03-14 08:01:06

LRU算法线程池

2023-04-11 08:01:32

Web 开发源代码映射

2021-09-27 07:39:52

Go初始化函数package

2023-11-29 07:47:58

DDIA两阶段提交

2023-09-07 07:17:01

KubernetesCRI标准

2023-12-06 16:28:56

2022-02-18 10:13:07

SolrElasticSea开源
点赞
收藏

51CTO技术栈公众号