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

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

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

如何使用FreeMASTER讓PC對MCU程序中的數(shù)據(jù)進(jìn)行可視化

5RJg_mcuworld ? 來源:未知 ? 作者:易水寒 ? 2018-10-20 11:58 ? 次閱讀

概述

FreeMASTER是恩智浦免費(fèi)為用戶提供的,一種在PC電腦上對MCU程序中數(shù)據(jù)可視化的工具。

使用FreeMASTER工具,不需要在目標(biāo)工程中引用同F(xiàn)reeMASTER相關(guān)的源代碼,只須將需要實(shí)時(shí)顯示的變量,創(chuàng)建為全局變量即可,即在MCU的內(nèi)存中分配一個(gè)固定的地址。之后,F(xiàn)reeMASTER將通過SWD通信接口,讀取內(nèi)存中的值并實(shí)時(shí)顯示到PC機(jī)的界面上。

通過SWD接口訪問內(nèi)存,是調(diào)試Arm程序的基本方式之一,同常用的支持在線調(diào)試的調(diào)試器工作方式相同。

硬件平臺(tái)

本文使用恩智浦官方在中國市場推出的LPC54114-Lite開發(fā)板作為目標(biāo)設(shè)備。開發(fā)板如圖1所示。

圖1 LPC54114-Lite開發(fā)板

LPC54114-Lite開發(fā)板以LPC54114微控制器為主控核心,板載集成了開源的CMSIS-DAP調(diào)試器,僅用一根USB數(shù)據(jù)線,就可以實(shí)現(xiàn)供電、調(diào)試、串口通信的功能, 適合隨身攜帶和展示。

FreeMASTER支持多種連接MCU的通信協(xié)議,如圖2所示,其中包括了常用的JLink和CMSIS-DSP。比較驚喜的是,F(xiàn)reeMASTER竟然還支持OSBDM通信協(xié)議,這就意味著一些基于JM60板載調(diào)試器的Kinetis開發(fā)板也能用起來了,較新的Kinetis開發(fā)板使用基于K20主控的板載調(diào)試器,可以自由變身為CMSIS-DAP、JLink或OpenSDA(使用OSBDM通信協(xié)議)。

圖2FreeMASTER支持多種同MCU的通信協(xié)議

LPC54114-Lite開發(fā)板板載基于LPC11u35的調(diào)試器,內(nèi)置了CMSIS-DAP的固件,本文中將使用CMSIS-DAP作為樣例介紹FreeMASTER的用法,使用其它通信協(xié)議與CMSIS-DAP類似。

創(chuàng)建MCU樣例工程

當(dāng)使用調(diào)試接口作為FreeMASTER與MCU的通信接口,有個(gè)極為明顯的好處,就是不需要在用戶程序中寫任何關(guān)于FreeMASTER代碼,這就是所謂的“非侵入性”。用戶程序只要將需要FreeMASTER進(jìn)行圖形化的數(shù)據(jù)安排到全局變量里,讓編譯過程能夠?yàn)檫@些數(shù)據(jù)分配固定地址的內(nèi)存。最終FreeMASTER會(huì)通過調(diào)試接口,直接訪問MCU的內(nèi)存,從而得到可顯示的數(shù)據(jù)。

下面使用恩智浦的MCUXpresso SDK中,提供的lpc_adc_burst工程作為示例程序的基礎(chǔ),對這個(gè)工程進(jìn)行簡化和改造,實(shí)現(xiàn)讓ADC0硬件對通道0(溫度傳感器)和通道3(板載電位器)連續(xù)采樣。采樣結(jié)果被保存在全局變量數(shù)組gAdcSensingValue[]中,并通過FreeMASTER顯示到虛擬示波器界面上。

節(jié)選main.c文件中的關(guān)鍵代碼如下:

#include "fsl_common.h" #include "board.h" #include "clock_config.h" #include "pin_mux.h" #include "fsl_clock.h" #include "fsl_power.h" #include "fsl_adc.h" /******************************************************************************* * Variables ******************************************************************************/ volatile uint32_t gAdcSensingValue[2]; /******************************************************************************* * Prototypes ******************************************************************************/ static void ADC_Configuration(void); /******************************************************************************* * Code ******************************************************************************/ /*! * @brief Main function */ int main(void) { uint8_t ch; BOARD_InitBootClocks(); BOARD_InitBootPins(); BOARD_InitDebugConsole(); printf("HelloWorld. "); ADC_Configuration(); ADC_DoSoftwareTriggerConvSeqA(ADC0); /* software start the conversion. */ while (1) { ch = getchar(); putchar(ch); } } void ADC_Configuration(void) { adc_config_t adcConvConfigStruct; adc_conv_seq_config_t adcSeqConfigStruct; /* Enable power. */ POWER_DisablePD(kPDRUNCFG_PD_ADC0); /* Power on the ADC converter. */ POWER_DisablePD(kPDRUNCFG_PD_VD7_ENA); /* Power on the analog power supply. */ POWER_DisablePD(kPDRUNCFG_PD_VREFP_SW); /* Power on the reference voltage source. */ POWER_DisablePD(kPDRUNCFG_PD_TEMPS); /* Power on the temperature sensor. */ /* Enable clock. */ CLOCK_EnableClock(kCLOCK_Adc0); if (!ADC_DoSelfCalibration(ADC0)) { printf("ADC_DoSelfCalibration() failed. "); while (1); } /* Configure the converter. */ adcConvConfigStruct.clockMode = kADC_ClockAsynchronousMode; adcConvConfigStruct.clockDividerNumber = 5; adcConvConfigStruct.resolution = kADC_Resolution12bit; adcConvConfigStruct.enableBypassCalibration = false; adcConvConfigStruct.sampleTimeNumber = 7u; ADC_Init(ADC0, &adcConvConfigStruct); /* enable the temperature sensor connected to channel 0. */ ADC_EnableTemperatureSensor(ADC0, true); /* Configure the sequence. */ adcSeqConfigStruct.channelMask = (1u << 0u) | (1u << 3u) ?; /* channel 0 and channel 3. */ ? ?adcSeqConfigStruct.triggerMask = 0u; /* no hardware trigger. */ ? ?adcSeqConfigStruct.triggerPolarity = kADC_TriggerPolarityPositiveEdge; ? ?adcSeqConfigStruct.enableSyncBypass = false; ? ?adcSeqConfigStruct.enableSingleStep = false; ? ?adcSeqConfigStruct.interruptMode = kADC_InterruptForEachSequence; /* interrupt at the end of the sequence. */ ? ?ADC_SetConvSeqAConfig(ADC0, &adcSeqConfigStruct); ? ?ADC_EnableConvSeqA(ADC0, true); ? ? ? ? ? ?/* Enable interrupts. */ ? ?ADC_EnableInterrupts(ADC0, ADC_INTEN_SEQA_INTEN_MASK); ? ?NVIC_EnableIRQ(ADC0_SEQA_IRQn); } ? ? void ADC0_SEQA_IRQHandler(void) { ? ?adc_result_info_t adcResultStruct; ? ?uint32_t flags = ADC_GetStatusFlags(ADC0); ? ? ? ?if (kADC_ConvSeqAInterruptFlag == (kADC_ConvSeqAInterruptFlag & flags)) ? ?{ ? ? ? ?ADC_GetChannelConversionResult(ADC0, 0u, &adcResultStruct); ? ? ? ?gAdcSensingValue[0] = adcResultStruct.result; ? ? ? ?ADC_GetChannelConversionResult(ADC0, 3u, &adcResultStruct); ? ? ? ?gAdcSensingValue[1] = adcResultStruct.result; ? ?} ? ? ? ? ? ?ADC_ClearStatusFlags(ADC0, flags); ? ? ? ? ? ?ADC_DoSoftwareTriggerConvSeqA(ADC0); ? ? ? ? ? ?/* ? ? * Add for ARM errata 838869, affects Cortex-M4, Cortex-M4F Store immediate overlapping ? ? * exception return operation might vector to incorrect interrupt. ? ? */ #if defined __CORTEX_M && (__CORTEX_M == 4U) ? ?__DSB(); #endif }

編譯生成"lpc_adc_burst.out"文件,如圖3所示。然后下載并運(yùn)行。

圖3 在Keil中設(shè)置生成映像文件格式

注意,如果是以調(diào)試方式下載程序,切記要確保下載后再退出調(diào)試模式,然后通過開發(fā)板上的復(fù)位按鍵硬件復(fù)位。此時(shí)Keil要讓出對調(diào)試器的占用,在接下來的操作中要把調(diào)試通信總線交給FreeMASTER。

創(chuàng)建并配置FreeMASTER工程

FreeMASTER軟件在恩智浦官網(wǎng)的產(chǎn)品主頁是:https://www.nxp.com/support/developer-resources/software-development-tools/freemaster-run-time-debugging-tool:FREEMASTER。

創(chuàng)建FreeMASTER新工程

下載、安裝軟件后啟動(dòng)FreeMASTER軟件,默認(rèn)創(chuàng)建了一個(gè)新工程。 右鍵選中左側(cè)樹形目錄中的工程名,選中“屬性”,在彈出對話框中編輯工程名,本例中改為“l(fā)pc54114-lite”,如圖4所示。

圖4 創(chuàng)建FreeMASTER新工程

此時(shí)一定要先保存工程,讓工程文件有個(gè)確定的文件地址,以便于后續(xù)關(guān)聯(lián)其它文件時(shí)可以使用相對路徑。

配置與MCU的通信協(xié)議并導(dǎo)入調(diào)試程序文件

配置新的FreeMASTER工程:

使用CMSIS-DAP通信協(xié)議,通過LPC54114-Lite板載的CMSIS-DSP調(diào)試器,與主控芯片LPC54114通信。

導(dǎo)入"lpc_adc_burst.out"文件,F(xiàn)reeMASTER會(huì)自動(dòng)分析出變量名對應(yīng)的內(nèi)存地址。

操作見圖5所示:

圖5 配置與MCU的通信協(xié)議并導(dǎo)入調(diào)試程序文件

這里面有兩個(gè)要點(diǎn):

指定調(diào)試程序的映像文件時(shí)最好用相對路徑,否則整個(gè)文件夾被復(fù)制到別的電腦上后會(huì)識(shí)別不出來原有電腦的路徑。

為了確保變量的地址映射被成功識(shí)別出來,可以單擊“View”查看解析出來的符號(hào)表,如圖6所示。

圖6FreeMASTER從映像文件中解析出的符號(hào)表

生成FreeMASTER變量表

FreeMASTER工程需要在內(nèi)部保存一個(gè)FreeMASTER變量的清單,為后續(xù)步驟提供操作對象。FreeMASTER變量是對目標(biāo)芯片上地址的封裝,同時(shí)在FreeMASTER內(nèi)部在電腦的內(nèi)存中建立了一個(gè)定期刷新的數(shù)據(jù)緩存,并自動(dòng)更新緩存中變量的值。后續(xù)示波器顯示的變量,是直接從這個(gè)緩存中讀取的。創(chuàng)建變量表的操作如圖7所示。

圖7 生成FreeMASTER變量表

注意,只有在變量表中創(chuàng)建的變量才能被后續(xù)創(chuàng)建的虛擬示波器識(shí)別出來。

創(chuàng)建虛擬示波器頁面并設(shè)定顯示通道

右鍵選中工程名,在彈出菜單中選中“New Scope...”,創(chuàng)建新的示波器頁面。 在配置新示波器頁面中,為新示波器頁面命名并指定該示波器頁面的刷新周期,在“Setup”標(biāo)簽頁中指定顯示通道,為指定通道選擇變量,并可為指定通道命名。此處在一個(gè)示波器頁面中支持最多8個(gè)通道,并可分組顯示。操作界面如圖8所示。

圖8 創(chuàng)建新的示波器頁面并設(shè)定顯示通道

用戶可以在一個(gè)FreeMASTER工程下面創(chuàng)建多個(gè)示波器頁面。另外FreeMASTER還允許創(chuàng)建其它可視化數(shù)據(jù)的子模塊,用戶可以通過JavaScript和Html語言編寫網(wǎng)頁添加到其中。

啟動(dòng)FreeMASTER工程

此時(shí)全部配置工作就已經(jīng)做好了,確保MCU端程序正在運(yùn)行,并且電腦上沒有其它程序占用與MCU連接的調(diào)試總線,就可以啟動(dòng)FreeMASTER開始采集和顯示數(shù)據(jù)了。

點(diǎn)擊FreeMASTER工程窗口工具欄中的“Start/Stop Communication(Ctrl+K)”圖標(biāo),之后就能看到示波器頁面上有曲線出來了。如圖9所示。

圖9 啟動(dòng)FreeMASTER工程

圖中可以看到:

一條比較平穩(wěn)的紅色曲線,它顯示的是變量gAdcSensingValue[0]的值,也就是芯片內(nèi)部溫度傳感器的采樣值.

一條變化劇烈的綠色曲線,它顯示的是變量gAdcSensingValue[1]的值,也就是從板載電位器上取得帶采樣值,而此時(shí),我正在用螺絲刀旋轉(zhuǎn)它以改變采樣值。

總結(jié)

本文基于恩智浦官方的LPC54114-Lite開發(fā)板,簡單介紹了數(shù)據(jù)可視化工具FreeMASTER軟件的用法。

FreeMASTER可以使用常用的CMSIS-DAP調(diào)試器作為通信媒介,使用通用的SWD接口通信,無需在應(yīng)用程序中進(jìn)行專門的通信協(xié)議移植工作,F(xiàn)reeMASTER軟件不需要“侵入”目標(biāo)程序,只要將待檢測變量創(chuàng)建為全局變量即可。使用FreeMASTER可以快速實(shí)現(xiàn)對MCU的數(shù)據(jù)可視化,方便調(diào)試。

另外,F(xiàn)reeMASTER具有非常豐富的功能和強(qiáng)大的可擴(kuò)展性,例如,可以自動(dòng)記錄數(shù)據(jù)并導(dǎo)出到多種常用的數(shù)據(jù)文件格式,可以支持JavaScript和Html語言編程的網(wǎng)頁,定制顯示頁面。這些功能讀者在基于本文入門FreeMASTER軟件后繼續(xù)發(fā)掘。

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

    關(guān)注

    146

    文章

    16667

    瀏覽量

    347772
  • PC
    PC
    +關(guān)注

    關(guān)注

    9

    文章

    2030

    瀏覽量

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

    關(guān)注

    1

    文章

    297

    瀏覽量

    23568

原文標(biāo)題:在PC上對MCU程序中的數(shù)據(jù)進(jìn)行可視化,用過FreeMASTER嗎?

文章出處:【微信號(hào):mcuworld,微信公眾號(hào):嵌入式資訊精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    可視化MES系統(tǒng)軟件

    和客戶都會(huì)造成損失,為了更好的滿足客戶需求、實(shí)現(xiàn)企業(yè)信息,目前企業(yè)制造過程主要還存在以下需求:(1)數(shù)據(jù)可視化方面。MES系統(tǒng)軟件之所以能有效的監(jiān)控整個(gè)車間的生產(chǎn)過程,主要是通過對
    發(fā)表于 11-30 19:55

    15個(gè)玩轉(zhuǎn)數(shù)據(jù)可視化的技巧

    高手總結(jié)的15個(gè)技巧,你輕松玩轉(zhuǎn)數(shù)據(jù)可視化!
    發(fā)表于 05-22 09:59

    只有報(bào)表直觀了,不能算真正的數(shù)據(jù)可視化

    ——數(shù)據(jù)中心(數(shù)據(jù)臺(tái))。OurwayBI數(shù)據(jù)可視化軟件的數(shù)據(jù)
    發(fā)表于 07-01 17:20

    Python數(shù)據(jù)可視化

    Python數(shù)據(jù)可視化:網(wǎng)易云音樂歌單
    發(fā)表于 07-19 08:30

    三維可視化的應(yīng)用和優(yōu)勢

    數(shù)據(jù)體現(xiàn):將數(shù)據(jù)的每個(gè)信息進(jìn)行分類、排序、組合和優(yōu)化,操作界面更加符合人性操作流程,數(shù)據(jù)多個(gè)屬性或者變量視圖更加直觀。  
    發(fā)表于 12-02 11:52

    怎么做以中國地圖為底圖的數(shù)據(jù)可視化報(bào)表?

    就該地的銷售數(shù)據(jù)進(jìn)行分析和可視化展示,瀏覽者能立即了解該地區(qū)的具體銷售情況。浮窗效果浮窗效果我們也是常見的,比如說當(dāng)鼠標(biāo)經(jīng)過某地時(shí),就會(huì)在頁面上出現(xiàn)一個(gè)浮窗,上面可以是一個(gè)銷售
    發(fā)表于 07-06 16:07

    常見的幾種可視化介紹

    說說常見的幾種可視化一、信息可視化信息可視化就是對抽象數(shù)據(jù)進(jìn)行直觀視覺呈現(xiàn)的研究,抽象數(shù)據(jù)既包含
    發(fā)表于 07-12 07:49

    FreeMASTER工具概述

    概述FreeMASTER是恩智浦免費(fèi)為用戶提供的,一種在PC電腦上對MCU程序數(shù)據(jù)
    發(fā)表于 08-06 09:54

    經(jīng)驗(yàn)分享|BI數(shù)據(jù)可視化報(bào)表布局——容器

    的數(shù)字修改成【0】,即可將報(bào)表的背景顯示出來。 注意:為了能更好地協(xié)調(diào)整張BI數(shù)據(jù)可視化報(bào)表的美觀設(shè)置,同時(shí)也需要將被拉入容器的圖表的背景進(jìn)行透明
    發(fā)表于 03-15 17:10

    奧威BI數(shù)據(jù)可視化軟件|業(yè)務(wù)獨(dú)立自主分析

    增加。怎么才能提高分析效率?BI數(shù)據(jù)可視化軟件的零編程構(gòu)建分析模型,業(yè)務(wù)獨(dú)立自助分析的做法也就應(yīng)運(yùn)而生了。零編程構(gòu)建分析模型這種做法有兩個(gè)明顯的好處,一個(gè)是提高了數(shù)據(jù)分析的效率,另一
    發(fā)表于 04-11 10:29

    如何對MCU程序數(shù)據(jù)進(jìn)行可視化

    概述FreeMASTER是恩智浦免費(fèi)為用戶提供的,一種在PC電腦上對MCU程序數(shù)據(jù)
    的頭像 發(fā)表于 10-29 15:30 ?5877次閱讀

    數(shù)據(jù)可視化工具:FreeMASTER v3.0發(fā)布評(píng)測

    FreeMASTER 是一個(gè)界面友好的,可用于實(shí)時(shí)觀察目標(biāo)系統(tǒng)變量內(nèi)容的數(shù)據(jù)可視化軟件??梢酝ㄟ^多種通信方式將 PC 機(jī)和微控制器電路板連
    的頭像 發(fā)表于 10-30 03:48 ?783次閱讀

    Freemaster嵌入式系統(tǒng)數(shù)據(jù)可視化工具的入門簡介

    Freemaster 是恩智浦免費(fèi)為用戶提供的,一種在 PC 電腦上對 MCU 程序數(shù)據(jù)
    發(fā)表于 12-28 11:33 ?10次下載

    PC上對MCU程序數(shù)據(jù)進(jìn)行可視化,用過FreeMASTER嗎?

    概述FreeMASTER是恩智浦免費(fèi)為用戶提供的,一種在PC電腦上對MCU程序數(shù)據(jù)
    發(fā)表于 10-28 19:35 ?10次下載
    在<b class='flag-5'>PC</b>上對<b class='flag-5'>MCU</b><b class='flag-5'>程序</b><b class='flag-5'>中</b>的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>進(jìn)行</b><b class='flag-5'>可視化</b>,用過<b class='flag-5'>FreeMASTER</b>嗎?

    數(shù)據(jù)資源可視化是什么?有什么好處?

    分析研究方法,獲取數(shù)據(jù)背后隱含的價(jià)值信息,以更直觀的形式為企業(yè)提供信息支撐,輔助管理人員進(jìn)行發(fā)展決策。 數(shù)據(jù)資源可視化有什么好處? 1、
    的頭像 發(fā)表于 09-09 16:44 ?2283次閱讀