那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何用先楫芯片構(gòu)建J-scope工程及運(yùn)行

先楫半導(dǎo)體HPMicro ? 2023-07-08 10:02 ? 次閱讀

J-Scope是Segger推出的一款免費(fèi)軟件,用于MCU運(yùn)行時(shí),實(shí)時(shí)顯示數(shù)據(jù)波形,可以以類似示波器的方式顯示多個(gè)變量的值。本文提供簡單的例子演示如何基于先楫半導(dǎo)體芯片新建 J-scope工程并顯示運(yùn)行數(shù)據(jù)。

以下內(nèi)容介紹分為四個(gè)模塊:工作模式、軟硬件版本、HSS模式工程創(chuàng)建和RTT模式工程創(chuàng)建。

一、工作模式

J-Scope分為HSS和RTT兩種模式:

1. HSS(High-Speed-Sampling)模式:jlink周期性的讀取數(shù)據(jù),將數(shù)據(jù)上傳至j-scope顯示。

優(yōu)點(diǎn):

1)簡單,代碼無需做任何更改

2)通過elf文件確定變量地址

缺點(diǎn):

1)相比RTT模式數(shù)據(jù)傳輸速度更慢

2)異步采樣,具有相當(dāng)?shù)姆菍?shí)時(shí)性

2. RTT(Real-Time-Transfer)模式:實(shí)時(shí)傳輸模式,代碼主動(dòng)上報(bào)變量數(shù)值至j-scope顯示。

優(yōu)點(diǎn):

1)比HSS模式速度更高,最大上傳速度可達(dá)2MB/s

2)數(shù)據(jù)上傳與MCU內(nèi)程序運(yùn)行是同步的,具有實(shí)時(shí)性

3)要監(jiān)控的變量可自動(dòng)檢索,無需指定地址或提供elf文件

4)數(shù)據(jù)可加時(shí)間戳

缺點(diǎn):

1)需要寫代碼,具體的,需要加載RTT組件,并在代碼中手動(dòng)上傳要顯示的數(shù)據(jù)

2)占用一定的內(nèi)存(RTT Buffer)

二、軟硬件版本

硬件J-Link:V10版本及以上(支持risc-v內(nèi)核),推薦使用J-Link V11。

軟件J-Scope:J-Link Software and Documentation pack V7.88f及以上,一般使用最新版本J-Link驅(qū)動(dòng)即可。安裝完成后在windows內(nèi)搜索即可找到J-Scope GUI工具。

8bf08432-1d33-11ee-a579-dac502259ad0.png

三、HSS模式工程創(chuàng)建

1.代碼添加

打開SDK1.1.0內(nèi)hello_world工程,添加如下代碼:

float my_pi = 3.141592654f;

float my_two_pi = 6.283185307f;

typedef struct{

float ts;

float omega;

float theta;

float sinval;

float cosval;

}jscope_debug_t;

jscope_debug_t jscope_debug = {

.ts = 0.001f,

.omega = 2.0f * 3.141592654f * 10.0f,

.theta = 0.0f,

.sinval = 0.0f,

.cosval = 0.0f,

};

void jscope_debug_run(jscope_debug_t *p)

{

p->theta += p->omega * 0.001f;

if(p->theta > my_pi)

p->theta = p->theta - my_two_pi;

p->sinval = sinf(p->theta);

p->cosval = cosf(p->theta);

return;

}


以上代碼定義了jscope_debug_t結(jié)構(gòu)體,添加了一個(gè)jscope_debug_t型變量,并在jscope_debug_run函數(shù)內(nèi)對變量值做修改。

添加如下代碼,設(shè)計(jì)一個(gè)1ms定時(shí)器中斷,在中斷函數(shù)內(nèi)執(zhí)行jscope_debug_run:

void gptmr_init(void)

{

gptmr_channel_config_t config;

gptmr_channel_get_default_config(GPTMR, &config);

config.reload = 100*1000;

gptmr_enable_irq(GPTMR, GPTMR_CH_RLD_IRQ_MASK(GPTMR_CH));

gptmr_channel_config(GPTMR, GPTMR_CH, &config, false);

gptmr_channel_reset_count(GPTMR, GPTMR_CH);

gptmr_start_counter(GPTMR, GPTMR_CH);

intc_m_enable_irq_with_priority(GPTMR_IRQ, 1);

}

void isr_gptmr(void)

{

volatile uint32_t s = GPTMR->SR;

GPTMR->SR = s;

if (s & GPTMR_CH_RLD_STAT_MASK(GPTMR_CH)) {

//this is a 1ms isr_handler

jscope_debug_run(&jscope_debug);

}

}

SDK_DECLARE_EXT_ISR_M(GPTMR_IRQ, isr_gptmr)

注意:需要將監(jiān)控的變量放在noncachable內(nèi)存區(qū),或者直接關(guān)閉L1緩存(l1c_dc_disable()),否則數(shù)據(jù)一直在l1緩存內(nèi),J-Link讀不到數(shù)據(jù)。

2.GUI操作

打開J-Scope,新建工程,如下所示:

8c068124-1d33-11ee-a579-dac502259ad0.png

在彈出的界面配置如下:

8c158aac-1d33-11ee-a579-dac502259ad0.png

1、本文作者使用HPM6200evk,因此設(shè)備選擇HPM6280xPAx。注意,如果找不到對應(yīng)的芯片型號,考慮升級J-Link驅(qū)動(dòng)包。

2、Sampling Source選擇HSS模式。

3、Sampling Rate選擇1Khz,即每1000us采集一次數(shù)據(jù)。

4、指定elf文件。HSS模式會(huì)解析elf文件確定變量地址。


8c3cf524-1d33-11ee-a579-dac502259ad0.png

選擇要監(jiān)控的數(shù)據(jù),在變量后面的方框內(nèi)打勾即可。

8c71c2ae-1d33-11ee-a579-dac502259ad0.png

保證芯片內(nèi)程序正在運(yùn)行,點(diǎn)擊圖中開始采樣按鈕,即可開始采集波形并顯示。移動(dòng)光標(biāo)可以查看某一時(shí)刻采集的3個(gè)數(shù)據(jù)的值。

8c96340e-1d33-11ee-a579-dac502259ad0.png

Sampling后有兩個(gè)功能按鈕,前一個(gè)開始/暫停采樣,后一個(gè)停止采樣。Target后有兩個(gè)功能按鈕,前一個(gè)開始/暫停芯片執(zhí)行,后一個(gè)復(fù)位芯片。

8ca632be-1d33-11ee-a579-dac502259ad0.png

界面右上角放大縮小符號以及其后的下拉框,可控制時(shí)間軸縮放。

8cc3bdac-1d33-11ee-a579-dac502259ad0.png

界面下方watch window內(nèi),可顯示變量名、變量地址、變量數(shù)值(光標(biāo)處),最大值、最小值、滑動(dòng)平均值。修改 Y Resolution 與 Y Offset,可以對每一根曲線的Y軸縮放與偏移進(jìn)行設(shè)置。

四、RTT模式工程創(chuàng)建

1. 代碼添加

打開SDK1.1.0內(nèi)hello_world工程的cmakelists,做如下修改:

8ce4e87e-1d33-11ee-a579-dac502259ad0.png

添加如下代碼:

float my_pi = 3.141592654f;

float my_two_pi = 6.283185307f;

typedef struct{

float ts;

float omega;

float theta;

float sinval;

float cosval;

}jscope_debug_t;

jscope_debug_t jscope_debug ={

.ts = 0.001f,

.omega = 2.0f * 3.141592654f * 10.0f,

.theta = 0.0f,

.sinval = 0.0f,

.cosval = 0.0f,

};

void jscope_debug_run(jscope_debug_t *p)

{

p->theta += p->omega * 0.001f;

if(p->theta > my_pi)

p->theta = p->theta - my_two_pi;

p->sinval = sinf(p->theta);

p->cosval = cosf(p->theta);

return;

}



void isr_gptmr(void)

{

volatile uint32_t s = GPTMR->SR;

GPTMR->SR = s;

if (s & GPTMR_CH_RLD_STAT_MASK(GPTMR_CH)) {

//this is a 10ms isr_handler,add your code here

jscope_debug_run(&jscope_debug);

}

}

SDK_DECLARE_EXT_ISR_M(GPTMR_IRQ, isr_gptmr)

void gptmr_init(void)

{

gptmr_channel_config_t config;

gptmr_channel_get_default_config(GPTMR, &config);

config.reload = 100*100;

gptmr_enable_irq(GPTMR, GPTMR_CH_RLD_IRQ_MASK(GPTMR_CH));

gptmr_channel_config(GPTMR, GPTMR_CH, &config, false);

gptmr_channel_reset_count(GPTMR, GPTMR_CH);

gptmr_start_counter(GPTMR, GPTMR_CH);

intc_m_enable_irq_with_priority(GPTMR_IRQ, 1);

}

main函數(shù)如下:

int main(void)

{

int u;

char JS_RTT_UpBuffer[4096]; // J-Scope RTT Buffer

int JS_RTT_Channel = 1; // J-Scope RTT Channel

int i;

board_init();

board_init_led_pins();

gptmr_init();

l1c_dc_disable();

board_timer_create(LED_FLASH_PERIOD_IN_MS, board_led_toggle);

printf("helloworld\n");

SEGGER_RTT_ConfigUpBuffer(JS_RTT_Channel, "JScope_f4f4f4f4f4", &JS_RTT_UpBuffer[0], sizeof(JS_RTT_UpBuffer),SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL);

while(1)

{

SEGGER_RTT_Write(JS_RTT_Channel,&jscope_debug, sizeof(jscope_debug));

}

return 0;

}


上述代碼首先配置了RTT組件的upbuffer1,將其命名為"JScope_f4f4f4f4f4"(命名規(guī)則下文描述),配置其占用的內(nèi)存區(qū)為JS_RTT_UpBuffer,數(shù)組大小為4096個(gè)字節(jié),以及寫函數(shù)的調(diào)用策略為當(dāng)內(nèi)存區(qū)滿時(shí)以阻塞模式寫入(請參考RTT wiki百科)。然后在while循環(huán)內(nèi),不停的調(diào)用SEGGER_RTT_Write函數(shù)上傳數(shù)據(jù)到J-Scope進(jìn)行顯示。
RTT模式uploadbuffer命名規(guī)則:

8d0a2df0-1d33-11ee-a579-dac502259ad0.png

通道名稱以“JScope_”開頭,后面跟解析RTT內(nèi)存數(shù)據(jù)需要的數(shù)據(jù)個(gè)數(shù)、數(shù)據(jù)類型與每個(gè)數(shù)據(jù)占用的字節(jié)數(shù)。例如浮點(diǎn)數(shù)一定占用4個(gè)字節(jié),而整形可以占用1、2、4個(gè)字節(jié)。


2.GUI操作

打開J-Scope,新建工程,如下所示:

8c068124-1d33-11ee-a579-dac502259ad0.png

在彈出的界面配置如下:

8d4f9ee4-1d33-11ee-a579-dac502259ad0.png

  1. 選擇設(shè)備,芯片型號。

  1. 選擇RTT模式。

  1. 如果需要更高的傳輸速率,可以增加JTAG速度,比如12000khz或20000khz。

8d70faf8-1d33-11ee-a579-dac502259ad0.png

進(jìn)入GUI界面,可以看到我們沒有提供任何的elf文件,J-Scope自動(dòng)識(shí)別出上報(bào)的結(jié)構(gòu)體有5個(gè)float型數(shù)據(jù)。這是RTT組件自動(dòng)在內(nèi)存中搜索,找到了我們定義的RTT buffer的結(jié)果。由于沒有提供elf,所以watch window內(nèi)無變量名信息,也無地址信息。


8d8e4720-1d33-11ee-a579-dac502259ad0.png

采樣可以觀察到,波形明顯有鋸齒了,說明RTT上傳的速度高,同一個(gè)數(shù)據(jù)上傳了多次。


8da64e4c-1d33-11ee-a579-dac502259ad0.png

trigger功能可以用來達(dá)成條件觸發(fā)采樣,如圖所示,設(shè)置sin的值大于0.5時(shí)觸發(fā)采樣,則波形從sin=0.5358時(shí)開始采樣。

小 結(jié)

本文首先介紹了基于HPM6000系列芯片如何使用J-Scope調(diào)試??傮w而言J-Scope是一款相當(dāng)易用的工具,使用時(shí)只需注意變量放在非l1緩存區(qū)即可。讀者可自行嘗試,提高調(diào)試效率。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 芯片
    +關(guān)注

    關(guān)注

    456

    文章

    51161

    瀏覽量

    427199
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17317

    瀏覽量

    352618
  • 先楫半導(dǎo)體
    +關(guān)注

    關(guān)注

    10

    文章

    217

    瀏覽量

    2182
收藏 人收藏

    評論

    相關(guān)推薦

    【專題教程第4期】SEGGER的J-Scope波形上位機(jī)軟件,HSS模式簡單易用,無需額外資源,也不需要寫目標(biāo)板代碼

    ,USB接口上位機(jī)或者M(jìn)DK的邏輯分析儀功能,使用這三種方式都比較繁瑣。本期專題為大家講解的J-Scope波形軟件簡單易用,不占用系統(tǒng)額外資源,無需用戶寫目標(biāo)板代碼,僅需將JLINK插上即可。2
    發(fā)表于 07-02 15:27

    靈動(dòng)微課堂 (第163講) | MM32F013x——J-Scope虛擬示波器功能

    。J-Scope上位機(jī)J-Scope是SEGGER公司推出的,可以在目標(biāo)MCU運(yùn)行時(shí),實(shí)時(shí)分析數(shù)據(jù)并圖形化顯示的軟件。它不需要SWO或目標(biāo)上的任何額外引腳等功能,使用標(biāo)準(zhǔn)的調(diào)試接口即可。J-S
    發(fā)表于 04-09 18:24

    怎樣去安裝J-Flash和J-Scope軟件呢

    J-Link是什么?J-Scope是什么?怎樣去安裝J-Flash和J-Scope軟件呢?
    發(fā)表于 11-09 07:03

    J-Scope是什么?如何對J-Scope軟件進(jìn)行配置呢

    J-Link是什么?J-Link仿真器有何功能呢?J-Scope是什么?如何對J-Scope軟件進(jìn)行配置呢?
    發(fā)表于 11-09 07:21

    如何去使用J-Scope軟件的功能呢

    J-Link是什么?J-Scope又是什么?如何去使用J-Scope軟件的功能呢?
    發(fā)表于 11-10 06:09

    如何對J-Scope軟件進(jìn)行配置呢

    J-Link是什么?J-Scope又是什么?如何對J-Scope軟件進(jìn)行配置呢?  
    發(fā)表于 11-11 08:06

    J-Scope虛擬示波器的相關(guān)資料推薦

    的開源軟件,大家有興趣可以看一下。一般情況下虛擬示波器軟件都是通過串口接收數(shù)據(jù)的,所以要求MCU通過串口把數(shù)據(jù)打包成軟件支持的協(xié)議發(fā)給虛擬示波器軟件。02、J-Scope是什么J-ScopeJ-link的功能之一,
    發(fā)表于 02-28 07:28

    如何使用Segger Embedded Studio開發(fā)HPM6750?

    進(jìn)行調(diào)試,Segger J-Link也已經(jīng)官方支持HPM6000系列的芯片,只是該開發(fā)板沒有提供標(biāo)準(zhǔn)的JTAG調(diào)試接口,因此需要客戶自己通過焊接引出對應(yīng)的調(diào)試引腳來連接
    發(fā)表于 07-26 14:48

    如何在J-Scope中設(shè)置RTT控制塊的搜索位置?

    芯片比較特殊,或者偶然出現(xiàn)了無法自動(dòng)搜索到RTT控制塊的情況,可以在創(chuàng)建J-Scope工程的時(shí)候添加J-Link腳本文件(*.script格式文件)來指定RTT控制塊的搜索位置。在
    發(fā)表于 03-22 14:01

    虛擬示波器J-scope使用教程

    J-Scope介紹J-Scope可以像示波器一樣顯示多個(gè)變量的值。它讀取一個(gè)elf文件,并允許選擇多個(gè)變量以使其可視化。我們可以簡單地將目標(biāo)微控制器連接到J-Link,刷新應(yīng)用程序并啟動(dòng)J-S
    的頭像 發(fā)表于 03-19 17:00 ?1.1w次閱讀

    什么是J-Scope

    J-Scope是Segger推出的一款免費(fèi)軟件,用于MCU運(yùn)行時(shí),實(shí)時(shí)顯示數(shù)據(jù)的波形。
    的頭像 發(fā)表于 07-29 15:02 ?5883次閱讀

    J-Scope簡介與使用方法

    J-Scope是Segger推出的一款免費(fèi)軟件,用于MCU運(yùn)行時(shí),實(shí)時(shí)顯示數(shù)據(jù)的波形。
    的頭像 發(fā)表于 08-02 10:52 ?9759次閱讀

    如何使用J-scope

    J-Scope可以像示波器一樣顯示多個(gè)變量的值。它讀取一個(gè)elf文件,并允許選擇多個(gè)變量以使其可視化。我們可以簡單地將目標(biāo)微控制器連接到J-Link,刷新應(yīng)用程序并啟動(dòng)J-Scope
    的頭像 發(fā)表于 11-16 11:51 ?3429次閱讀
    如何使用<b class='flag-5'>J-scope</b>呢

    如何在J-Scope中設(shè)置RTT控制塊的搜索位置?

    J-Scope是SEGGER公司推出的搭配J-Link使用的調(diào)試軟件,可以在MCU運(yùn)行時(shí),實(shí)時(shí)查看全局變量的值,并以圖形化顯示,就像示波器一樣。
    的頭像 發(fā)表于 03-06 09:26 ?2780次閱讀

    何用芯片構(gòu)建J-scope工程運(yùn)行

    J-Scope是Segger推出的一款免費(fèi)軟件,用于MCU運(yùn)行時(shí),實(shí)時(shí)顯示數(shù)據(jù)波形,可以以類似示波器的方式顯示多個(gè)變量的值。本文提供簡單的例子演示如何基于半導(dǎo)體的
    的頭像 發(fā)表于 07-07 10:19 ?2293次閱讀
    如<b class='flag-5'>何用</b><b class='flag-5'>先</b><b class='flag-5'>楫</b><b class='flag-5'>芯片</b><b class='flag-5'>構(gòu)建</b><b class='flag-5'>J-scope</b><b class='flag-5'>工程</b>及<b class='flag-5'>運(yùn)行</b>
    灌南县| 德州扑克的规则| 百家乐官网下注瀛钱法| 百家乐官网真钱棋牌| 百家乐二游戏机| 皇冠足球网址| 百家乐中P代表| kk娱乐城开户| 做生意摆放风水好吗| 赌博堕天录 和也篇| 百家乐的桌子| 广州百家乐官网酒店用品制造有限公司 | 澳门百家乐官网下三路| 澳门百家乐官方网站破解百家乐技巧 | 威尼斯人娱乐场开户| 怎么赌百家乐官网能赢| 大发888真人娱乐场游戏| 蓝盾百家乐官网代理打| 宝博娱乐城开户| 百家乐园小区户型图| 网上百家乐官网合法吗| 大发888客服电话 在线| 24山向水法吉凶断| 新葡京国际娱乐城| 凤凰百家乐的玩法技巧和规则 | 百家乐也能赢钱么| 太阳城百家乐官网筹码租| 威尼斯人娱乐网假吗| 战神百家乐官网的玩法技巧和规则 | 百家乐官网赌场凯时娱乐| 大发888-大发娱乐城| 单机百家乐棋牌| 开心8百家乐官网娱乐城| 威尼斯人娱乐场内幕| 百家乐娱乐城博彩正网| 网上百家乐官网大赢家筹码| 大发888网址是多少| 网络百家乐官网赌博赢钱| 大发888真人官网| 代理百家乐免费试玩| 金牌百家乐官网的玩法技巧和规则 |