说到虚拟示波器,文带大家应该都不陌生。拟示在学校时开发智能车,波器调节PID时虚拟示波器是文带必须的工具。虚拟示波器软件有很多,拟示之前我也分享过一篇文章《一个超赞的波器开源串口虚拟示波器项目》,基于QT的文带开源软件,大家有兴趣可以看一下。拟示一般情况下虚拟示波器软件都是波器通过串口接收数据的,所以要求MCU通过串口把数据打包成软件支持的文带协议发给虚拟示波器软件。 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 首先编写测试代码,将程序下载到单片机内 新建工程,在①处选择USB,大部分情况下我们都是使用USB连接的Jlink的,在②处在SpecifyTargetDevice处选择对应的单片机型号,在③处选择不同接口,我这里使用的SWD接口,在④处选择HSS模式,额外说明⑤处的中文乱码是us。 特别说明,在⑥处加载keil工程生成的云服务器.axf文件或IAR工程生成的.out文件。路径中最好不要有中文。点击OK完成配置。 接下来选择要观察的变量,不仅仅如下cos_o的变量,还有RCC_Clocks结构体变量也可以监控,只能选择全局变量,这也是J-Scope的局限性。 如果选择完毕,需要增加其他变量,可以在线图方框中右键,点击AddSymbols新增变量,选中已经已经添加的变量,按del键就可以删除。 点击红色按钮开始运行 两个技巧:移动下图①处的三角可以快速上下移动波形。如②处在变量上右键可以使用快捷菜单。 J-Scope个人觉得是一个不错的工具,可以方便查看某些数据的波形,在ADC采集,温度传感器等等具有一定的作用。 比如一种情况:MCU采集温度数据,通过串口报给其他设备,这时候其他设备显示有很多异常的温度值,这个时候需要定位是MCU采集错了,还是其他设备解析数据错了。如果还在开发中,这个时候debug既可。但在已经发布的软件中,使用示波器监控解析串口数据是一个麻烦的事情,这个时候使用J-Scope就可以显示MCU采集的温度(保存在全局变量中)。不过这要求发布版本时,保存一份.ou文件或.axf文件。 J-Scope这么强大,但是依旧取代不了通过硬件串口发送给PC虚拟示波器的软件,因为J-Scope只能读取全局变量的数据,我们使用硬件串口可以将函数的局部变量发给虚拟示波器。 本文提供了一种针对发布版软件,在没有其他“埋点”打印的情况下,如何监控全局变量的方法,之前的文章《JLink cmd的使用》也提供了一种思路解决类似的问题,有兴趣的同学可以看一下。 文末说句感想,开发中使用的用具没有好坏,只是使用场景不同,多掌握几种工具,就可以多一些办法解决一些刺手的问题。 本文转载自微信公众号「知晓编程」 【编辑推荐】01 虚拟示波器
02 J-Scope是拟示什么
03HSS模式
J-Scope软件的配置
04 总结