精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何用先楫芯片構建J-scope工程及運行

331062281 ? 來源:先楫半導體HPMicro ? 2023-07-07 10:19 ? 次閱讀

前 言

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

以下內容介紹分為四個模塊:工作模式、軟硬件版本、HSS模式工程創建和RTT模式工程創建。

一、工作模式

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

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

優點:

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

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

缺點:

1)相比RTT模式數據傳輸速度更慢

2)異步采樣,具有相當的非實時性

2. RTT(Real-Time-Transfer)模式:實時傳輸模式,代碼主動上報變量數值至j-scope顯示。

優點:

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

2)數據上傳與MCU內程序運行是同步的,具有實時性

3)要監控的變量可自動檢索,無需指定地址或提供elf文件

4)數據可加時間戳

缺點:

1)需要寫代碼,具體的,需要加載RTT組件,并在代碼中手動上傳要顯示的數據

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

二、軟硬件版本

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

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

三、HSS模式工程創建

1.代碼添加

打開SDK1.1.0內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結構體,添加了一個jscope_debug_t型變量,并在jscope_debug_run函數內對變量值做修改。

添加如下代碼,設計一個1ms定時器中斷,在中斷函數內執行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)

注意:需要將監控的變量放在noncachable內存區,或者直接關閉L1緩存(l1c_dc_disable()),否則數據一直在l1緩存內,J-Link讀不到數據。

2.GUI操作

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

ed55a5d6-1c6b-11ee-962d-dac502259ad0.png

在彈出的界面配置如下:

ed617514-1c6b-11ee-962d-dac502259ad0.png

1、本文作者使用HPM6200evk,因此設備選擇HPM6280xPAx。注意,如果找不到對應的芯片型號,考慮升級J-Link驅動包。

2、Sampling Source選擇HSS模式。

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

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

ed837bdc-1c6b-11ee-962d-dac502259ad0.png

選擇要監控的數據,在變量后面的方框內打勾即可。

edac8f9a-1c6b-11ee-962d-dac502259ad0.png

保證芯片內程序正在運行,點擊圖中開始采樣按鈕,即可開始采集波形并顯示。移動光標可以查看某一時刻采集的3個數據的值。

edce6f2a-1c6b-11ee-962d-dac502259ad0.png

Sampling后有兩個功能按鈕,前一個開始/暫停采樣,后一個停止采樣。Target后有兩個功能按鈕,前一個開始/暫停芯片執行,后一個復位芯片。

ede3c14a-1c6b-11ee-962d-dac502259ad0.png

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

edfae6a4-1c6b-11ee-962d-dac502259ad0.png

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

四、RTT模式工程創建

1. 代碼添加

打開SDK1.1.0內hello_world工程的cmakelists,做如下修改:

ee1468e0-1c6b-11ee-962d-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函數如下:

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 ");

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"(命名規則下文描述),配置其占用的內存區為JS_RTT_UpBuffer,數組大小為4096個字節,以及寫函數的調用策略為當內存區滿時以阻塞模式寫入(請參考RTT wiki百科)。 然后在while循環內,不停的調用SEGGER_RTT_Write函數上傳數據到J-Scope進行顯示。 RTT模式uploadbuffer命名規則:

ee4697de-1c6b-11ee-962d-dac502259ad0.png

通道名稱以“JScope_”開頭,后面跟解析RTT內存數據需要的數據個數、數據類型與每個數據占用的字節數。例如浮點數一定占用4個字節,而整形可以占用1、2、4個字節。

2.GUI操作

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

ed55a5d6-1c6b-11ee-962d-dac502259ad0.png

在彈出的界面配置如下:

ee7d3316-1c6b-11ee-962d-dac502259ad0.png

選擇設備,芯片型號。

選擇RTT模式。

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

eea0b354-1c6b-11ee-962d-dac502259ad0.png

進入GUI界面,可以看到我們沒有提供任何的elf文件,J-Scope自動識別出上報的結構體有5個float型數據。這是RTT組件自動在內存中搜索,找到了我們定義的RTT buffer的結果。由于沒有提供elf,所以watch window內無變量名信息,也無地址信息。

eeca9156-1c6b-11ee-962d-dac502259ad0.png

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

eee831fc-1c6b-11ee-962d-dac502259ad0.png

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

小 結

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

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 芯片
    +關注

    關注

    454

    文章

    50460

    瀏覽量

    421980
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17019

    瀏覽量

    350375
  • 調試
    +關注

    關注

    7

    文章

    574

    瀏覽量

    33901
  • RTT
    RTT
    +關注

    關注

    0

    文章

    65

    瀏覽量

    17089
  • 先楫半導體
    +關注

    關注

    10

    文章

    214

    瀏覽量

    2082

原文標題:如何用先楫芯片構建J-scope工程及運行

文章出處:【微信號:HPMicro,微信公眾號:先楫半導體HPMicro】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    何用芯片構建J-scope工程運行

    前言J-Scope是Segger推出的一款免費軟件,用于MCU運行時,實時顯示數據波形,可以以類似示波器的方式顯示多個變量的值。本文提供簡單的例子演示如何基于半導體的
    的頭像 發表于 07-08 10:02 ?3636次閱讀
    如<b class='flag-5'>何用</b><b class='flag-5'>先</b><b class='flag-5'>楫</b><b class='flag-5'>芯片</b><b class='flag-5'>構建</b><b class='flag-5'>J-scope</b><b class='flag-5'>工程</b>及<b class='flag-5'>運行</b>

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

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

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

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

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

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

    J-Scope是什么?如何對J-Scope軟件進行配置呢

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

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

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

    如何對J-Scope軟件進行配置呢

    J-Link是什么?J-Scope又是什么?如何對J-Scope軟件進行配置呢?  
    發表于 11-11 08:06

    J-Scope虛擬示波器的相關資料推薦

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

    如何使用Segger Embedded Studio開發HPM6750?

    進行調試,Segger J-Link也已經官方支持HPM6000系列的芯片,只是該開發板沒有提供標準的JTAG調試接口,因此需要客戶自己通過焊接引出對應的調試引腳來連接
    發表于 07-26 14:48

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

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

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

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

    什么是J-Scope

    J-Scope是Segger推出的一款免費軟件,用于MCU運行時,實時顯示數據的波形。
    的頭像 發表于 07-29 15:02 ?5595次閱讀

    J-Scope簡介與使用方法

    J-Scope是Segger推出的一款免費軟件,用于MCU運行時,實時顯示數據的波形。
    的頭像 發表于 08-02 10:52 ?9179次閱讀

    如何使用J-scope

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

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

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