一文帶你了解Jlink之J-Scope虛擬示波器
01 虛擬示波器
說(shuō)到虛擬示波器,大家應(yīng)該都不陌生。在學(xué)校時(shí)開(kāi)發(fā)智能車(chē),調(diào)節(jié)PID時(shí)虛擬示波器是必須的工具。虛擬示波器軟件有很多,之前我也分享過(guò)一篇文章《一個(gè)超贊的開(kāi)源串口虛擬示波器項(xiàng)目》,基于QT的開(kāi)源軟件,大家有興趣可以看一下。一般情況下虛擬示波器軟件都是通過(guò)串口接收數(shù)據(jù)的,所以要求MCU通過(guò)串口把數(shù)據(jù)打包成軟件支持的協(xié)議發(fā)給虛擬示波器軟件。
02 J-Scope是什么
J-Scope是J-link的功能之一,J-Link是SEGGER公司為支持仿真ARM內(nèi)核芯片推出的JTAG仿真器。簡(jiǎn)單地說(shuō),是一個(gè)JTAG協(xié)議轉(zhuǎn)換盒。關(guān)于J-Link可以看之前的文章《關(guān)于JTAG你知道和不知道的都在這里》《JLink cmd的使用》。
J-Scope也是SEGGER公司推出的,使用Jlink連接MCU后,可以在目標(biāo)MCU運(yùn)行時(shí),實(shí)時(shí)分析數(shù)據(jù)并圖形化顯示的軟件。
J-Scope可以以類(lèi)似示波器的方式顯示多個(gè)變量的值。它讀取elf或axf文件并允許選擇多個(gè)變量進(jìn)行可視化。
只需將目標(biāo)微控制器連接到J-Link并啟動(dòng)J-Scope,幾個(gè)步驟即可配置J-Scope,并選擇要顯示的符號(hào)。如下圖

J-Scope主要有RTT和HSS兩種工作模式。
RTT模式:需要用戶在MCU上添加代碼,有點(diǎn)類(lèi)似串口上傳數(shù)據(jù),因?yàn)橛蓄~外的代碼,所以需要占用MCU的資源。優(yōu)點(diǎn)是速度快,缺點(diǎn)是需要額外的代碼。
HSS模式:不需要用戶在MCU上添加任何代碼,只需要使用J_Scope加載MDK或IAR的可執(zhí)行文件即可,而且可以隨時(shí)鏈接MCU,不影響MCU的正常功能,不需要額外的資源。使用標(biāo)準(zhǔn)的SWD接口即可。優(yōu)點(diǎn)是不需要添加代碼,缺點(diǎn)是速度較慢,一般為1K。
因?yàn)镠SS模式不需要額外添加任何代碼,所以我比較喜歡HSS模式,日常開(kāi)發(fā)中也經(jīng)常用到HSS模式。下文將重點(diǎn)講解HSS模式。
軟件準(zhǔn)備,要使用J-Scope功能,除了一個(gè)JLink外,還需要安裝J-Flash和J-Scope軟件。下載鏈接如下
下載鏈接:https://pan.baidu.com/s/1KO13rZw8RVyIQPN4Qpp4-w
提取碼:eqxx
03HSS模式
首先編寫(xiě)測(cè)試代碼,將程序下載到單片機(jī)內(nèi)
- #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處選擇對(duì)應(yīng)的單片機(jī)型號(hào),在③處選擇不同接口,我這里使用的SWD接口,在④處選擇HSS模式,額外說(shuō)明⑤處的中文亂碼是us。
特別說(shuō)明,在⑥處加載keil工程生成的.axf文件或IAR工程生成的.out文件。路徑中最好不要有中文。點(diǎn)擊OK完成配置。
接下來(lái)選擇要觀察的變量,不僅僅如下cos_o的變量,還有RCC_Clocks結(jié)構(gòu)體變量也可以監(jiān)控,只能選擇全局變量,這也是J-Scope的局限性。
如果選擇完畢,需要增加其他變量,可以在線圖方框中右鍵,點(diǎn)擊AddSymbols新增變量,選中已經(jīng)已經(jīng)添加的變量,按del鍵就可以刪除。
點(diǎn)擊紅色按鈕開(kāi)始運(yùn)行
兩個(gè)技巧:移動(dòng)下圖①處的三角可以快速上下移動(dòng)波形。如②處在變量上右鍵可以使用快捷菜單。
04 總結(jié)
J-Scope個(gè)人覺(jué)得是一個(gè)不錯(cuò)的工具,可以方便查看某些數(shù)據(jù)的波形,在ADC采集,溫度傳感器等等具有一定的作用。
比如一種情況:MCU采集溫度數(shù)據(jù),通過(guò)串口報(bào)給其他設(shè)備,這時(shí)候其他設(shè)備顯示有很多異常的溫度值,這個(gè)時(shí)候需要定位是MCU采集錯(cuò)了,還是其他設(shè)備解析數(shù)據(jù)錯(cuò)了。如果還在開(kāi)發(fā)中,這個(gè)時(shí)候debug既可。但在已經(jīng)發(fā)布的軟件中,使用示波器監(jiān)控解析串口數(shù)據(jù)是一個(gè)麻煩的事情,這個(gè)時(shí)候使用J-Scope就可以顯示MCU采集的溫度(保存在全局變量中)。不過(guò)這要求發(fā)布版本時(shí),保存一份.ou文件或.axf文件。
J-Scope這么強(qiáng)大,但是依舊取代不了通過(guò)硬件串口發(fā)送給PC虛擬示波器的軟件,因?yàn)镴-Scope只能讀取全局變量的數(shù)據(jù),我們使用硬件串口可以將函數(shù)的局部變量發(fā)給虛擬示波器。
本文提供了一種針對(duì)發(fā)布版軟件,在沒(méi)有其他“埋點(diǎn)”打印的情況下,如何監(jiān)控全局變量的方法,之前的文章《JLink cmd的使用》也提供了一種思路解決類(lèi)似的問(wèn)題,有興趣的同學(xué)可以看一下。
文末說(shuō)句感想,開(kāi)發(fā)中使用的用具沒(méi)有好壞,只是使用場(chǎng)景不同,多掌握幾種工具,就可以多一些辦法解決一些刺手的問(wèn)題。
本文轉(zhuǎn)載自微信公眾號(hào)「知曉編程」
【編輯推薦】