在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

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

331062281 ? 來(lái)源:先楫半導(dǎo)體HPMicro ? 2023-07-07 10:19 ? 次閱讀

前 言

J-Scope是Segger推出的一款免費(fèi)軟件,用于MCU運(yùn)行時(shí),實(shí)時(shí)顯示數(shù)據(jù)波形,可以以類(lèi)似示波器的方式顯示多個(gè)變量的值。本文提供簡(jiǎn)單的例子演示如何基于先楫半導(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)簡(jiǎn)單,代碼無(wú)需做任何更改

2)通過(guò)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)檢索,無(wú)需指定地址或提供elf文件

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

缺點(diǎn):

1)需要寫(xiě)代碼,具體的,需要加載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工具。

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

1.代碼添加

打開(kāi)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)對(duì)變量值做修改。

添加如下代碼,設(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操作

打開(kāi)J-Scope,新建工程,如下所示:

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

在彈出的界面配置如下:

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

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

2、Sampling Source選擇HSS模式。

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

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

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

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

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

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

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

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

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

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

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

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

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

1. 代碼添加

打開(kāi)SDK1.1.0內(nèi)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函數(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 ");

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é),以及寫(xiě)函數(shù)的調(diào)用策略為當(dāng)內(nèi)存區(qū)滿(mǎn)時(shí)以阻塞模式寫(xiě)入(請(qǐng)參考RTT wiki百科)。 然后在while循環(huán)內(nèi),不停的調(diào)用SEGGER_RTT_Write函數(shù)上傳數(shù)據(jù)到J-Scope進(jìn)行顯示。 RTT模式uploadbuffer命名規(guī)則:

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

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

2.GUI操作

打開(kāi)J-Scope,新建工程,如下所示:

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

在彈出的界面配置如下:

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

選擇設(shè)備,芯片型號(hào)。

選擇RTT模式。

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

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

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

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

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

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

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

小 結(jié)

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

審核編輯:湯梓紅

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

    關(guān)注

    456

    文章

    51192

    瀏覽量

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

    關(guān)注

    146

    文章

    17324

    瀏覽量

    352658
  • 調(diào)試
    +關(guān)注

    關(guān)注

    7

    文章

    589

    瀏覽量

    34064
  • RTT
    RTT
    +關(guān)注

    關(guān)注

    0

    文章

    65

    瀏覽量

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

    關(guān)注

    10

    文章

    217

    瀏覽量

    2188

原文標(biāo)題:如何用先楫芯片構(gòu)建J-scope工程及運(yùn)行

文章出處:【微信號(hào):HPMicro,微信公眾號(hào):先楫半導(dǎo)體HPMicro】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

    前言J-Scope是Segger推出的一款免費(fèi)軟件,用于MCU運(yùn)行時(shí),實(shí)時(shí)顯示數(shù)據(jù)波形,可以以類(lèi)似示波器的方式顯示多個(gè)變量的值。本文提供簡(jiǎn)單的例子演示如何基于半導(dǎo)體的
    的頭像 發(fā)表于 07-08 10:02 ?3974次閱讀
    如<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>

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

    ,USB接口上位機(jī)或者M(jìn)DK的邏輯分析儀功能,使用這三種方式都比較繁瑣。本期專(zhuān)題為大家講解的J-Scope波形軟件簡(jiǎn)單易用,不占用系統(tǒng)額外資源,無(wú)需用戶(hù)寫(xiě)目標(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是什么?如何對(duì)J-Scope軟件進(jìn)行配置呢

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

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

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

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

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

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

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

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

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

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

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

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

    J-Scope介紹J-Scope可以像示波器一樣顯示多個(gè)變量的值。它讀取一個(gè)elf文件,并允許選擇多個(gè)變量以使其可視化。我們可以簡(jiǎn)單地將目標(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 ?5890次閱讀

    J-Scope簡(jiǎn)介與使用方法

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

    如何使用J-scope

    J-Scope可以像示波器一樣顯示多個(gè)變量的值。它讀取一個(gè)elf文件,并允許選擇多個(gè)變量以使其可視化。我們可以簡(jiǎn)單地將目標(biāo)微控制器連接到J-Link,刷新應(yīng)用程序并啟動(dòng)J-Scope
    的頭像 發(fā)表于 11-16 11:51 ?3444次閱讀
    如何使用<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 ?2785次閱讀
    主站蜘蛛池模板: 欧美一区二区三区在线观看免费 | 午夜网站在线播放 | 狠狠色婷婷丁香六月 | 午夜在线视频观看 | 黄色网在线看 | 康熙古代高h细节肉爽文全文 | 亚洲最新 | 91极品女神私人尤物在线播放 | 有没有免费的视频在线观看 | 三级网站国产 | 亚洲一区二区视频 | 黄网站色视频免费观看 | 性做久久久久久久免费看 | 欧美a级网站 | 黄色视屏免费看 | 91精品啪在线观看国产日本 | 六月婷操| 国产成+人+综合+亚洲欧美丁香花 | 天天射天天舔 | 国产亚洲综合色就色 | 你懂的国产| 国产网站大全 | 国产成人一区二区三中文 | 四虎www成人影院免费观看 | 失禁h啪肉尿出来高h健身房 | 大喷水吹潮magnet | 日本黄页网站在线观看 | 国产黄在线观看免费观看不卡 | 干成人| 日韩视频高清 | 久久青青草原精品老司机 | 天天爽夜夜爽8888视频精品 | 国产精品成人aaaaa网站 | 亚洲天天看 | 亚洲天堂资源网 | 中文字幕第五页 | 午夜一级毛片不卡 | 国产美女视频免费 | 成人午夜视频免费看欧美 | 天天草天天操 | 91av成人|