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

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

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

如何可視化FreeRTOS任務(wù)響應(yīng)時間

麥克泰技術(shù) ? 來源:麥克泰技術(shù) ? 2023-12-22 11:12 ? 次閱讀

高效的開發(fā)基于FreeRTOS的固件需要理解任務(wù)、中斷和內(nèi)核之間的交互以及時間序列。

Tracealyzer支持基于FreeRTOS應(yīng)用的可視化分析,它提供了30多種相互關(guān)聯(lián)的視圖,觀測軟件運行時行為。

我們基于一個案例解析Tracealyzer如何幫助用戶解決實際問題。本例中, 用戶在ARM Cortex-M4微控制器上運行了FreeRTOS+TCP/IP+Flash文件系統(tǒng)的應(yīng)用。系統(tǒng)中包含多個任務(wù),一個Server任務(wù)用于響應(yīng)網(wǎng)絡(luò)請求,一個Logger文件緩沖任務(wù)。網(wǎng)絡(luò)請求的響應(yīng)時間一直不理想,最近一次構(gòu)建,響應(yīng)時間更加惡化。

為了解決響應(yīng)時間問題,他們比較了兩個版本的源代碼,找不到任何明顯的原因?qū)е马憫?yīng)時間變長。代碼有許多小的變化,但并沒有增加新的功能。因此,用戶決定使用Tracealyzer來比較新舊版本的運行時行為。

在相似的條件下記錄兩個版本的運行過程。使用Actor Statistics Report視圖進行比較 (圖1A和圖1B),視圖中提供了時間統(tǒng)計信息,如CPU使用情況、執(zhí)行次數(shù)、任務(wù)優(yōu)先級和響應(yīng)時間信息。

2b566b06-a077-11ee-8b88-92fbcf53809c.png

圖 1A

2b6e90fa-a077-11ee-8b88-92fbcf53809c.png

圖1B

Statistics Report顯示,新代碼版本中Server任務(wù)的響應(yīng)時間(Response time)增加大約50%。而執(zhí)行時間(Execution time)新版本中僅增長約7%。由此得出的結(jié)論,較長響應(yīng)時間的主要原因一定是其他任務(wù)的干擾,但是哪個任務(wù)?

為了確定哪些任務(wù)干擾了Server任務(wù),單擊Statistics Report中的極端值。跟蹤到主視圖中相應(yīng)的位置,可以看到更多執(zhí)行細節(jié),打開Tracealyzer的并行實例,可以很容易地比較并發(fā)現(xiàn)差異。

由于Server任務(wù)執(zhí)行了多個服務(wù),因此我們添加了兩個用戶事件 (標記為ServerLog)來標記接收和應(yīng)答請求,如圖2A和2B所示,圖例的縮放級別相同,可以清楚地看到新版本中響應(yīng)時間更長,Logger任務(wù)搶占了Server任務(wù)11次,而舊版本中搶占只有6次。

2b80aa7e-a077-11ee-8b88-92fbcf53809c.png

圖2A

2b939936-a077-11ee-8b88-92fbcf53809c.png

圖2B

此外,我們看到Logger任務(wù)的優(yōu)先級高于Server任務(wù),因此日志記錄的服務(wù)調(diào)用會搶占Server任務(wù)。

因此,新版本中似乎添加了新的日志記錄調(diào)用,導致Logger任務(wù)更多地干擾Server任務(wù)。為了查看記錄的內(nèi)容,我們在日志任務(wù)中添加了一個User Event,在跟蹤視圖中顯示所有日志消息??梢钥吹匠薙erver之外的其他任務(wù)生成的日志消息,例如ADC_0任務(wù)。為了查看向日志任務(wù)發(fā)送消息的所有任務(wù),我們使用Tracealyzer的通信流圖,如圖3所示。通信流圖顯示了跟蹤的任務(wù)和中斷對消息隊列、信號量和其他內(nèi)核對象執(zhí)行的所有操作,展示了上層應(yīng)用程序設(shè)計以及運行時依賴關(guān)系。

2bb7a632-a077-11ee-8b88-92fbcf53809c.png

圖3

在本例中,通信流圖顯示有五個任務(wù)發(fā)送日志消息。通過雙擊圖中的LoggerQueue節(jié)點,可以打開Kernel Object History視圖,查看該消息隊列上的所有操作(圖4)。正如預期的那樣,我們看到Logger任務(wù)頻繁地接收消息,每次接收一條消息,并且在每個消息之后被阻塞,如Event列中的紅色指示燈所示。

2bd22192-a077-11ee-8b88-92fbcf53809c.png

圖4

應(yīng)用可能沒有必要將日志消息一條接一條地寫入文件。如果提升Server任務(wù)的調(diào)度優(yōu)先級高于Logger任務(wù),那么Server能夠更快地響應(yīng),日志消息可以被緩沖在LoggerQueue隊列中,直到Server和其他高優(yōu)先級任務(wù)完成,Logger任務(wù)恢復執(zhí)行并批量處理所有緩沖消息。

測試的結(jié)果如圖5所示。Server任務(wù)的最高響應(yīng)時間現(xiàn)在只有5.4 ms,比早期版本(5.7 ms)還要快,Logger任務(wù)收到一條消息后不會立即搶占Server任務(wù),而是在Server完成后批量處理所有掛起的消息。

2bf1475c-a077-11ee-8b88-92fbcf53809c.png

圖5

我們還可以查看消息隊列操作的事件標簽,并且正如預期的那樣,多個xQueueSend調(diào)用,沒有引起阻塞或任務(wù)搶占。仍然有一些由A/D轉(zhuǎn)換任務(wù)引起的搶占,但這不再導致Logger任務(wù)的額外激活。

問題解決了!更多關(guān)于Tracealyzer的技術(shù)文檔,請關(guān)注BMR微信公號。

審核編輯:湯梓紅

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

    關(guān)注

    48

    文章

    7559

    瀏覽量

    151485
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    484

    瀏覽量

    62202
  • 可視化
    +關(guān)注

    關(guān)注

    1

    文章

    1194

    瀏覽量

    20952
  • 響應(yīng)時間
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    6918

原文標題:如何可視化FreeRTOS任務(wù)響應(yīng)時間?

文章出處:【微信號:麥克泰技術(shù),微信公眾號:麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    請問freertos可視化調(diào)試中打印任務(wù)信息是不是只可以打印一次?

    freertos中,使用可視化調(diào)試打印任務(wù)消息,但是打印不全,還只能打印一次,使用IAR自帶的調(diào)試插件看,顯示可視化調(diào)試任務(wù)的堆棧頂全是a
    發(fā)表于 05-07 06:16

    基于無線的應(yīng)急現(xiàn)場可視化協(xié)作系統(tǒng)設(shè)計

    應(yīng)急現(xiàn)場可視化協(xié)作系統(tǒng)基于各種先進的技術(shù),面向城市應(yīng)急現(xiàn)場處理和協(xié)作問題,提供可靠、快速、完整的城市應(yīng)急現(xiàn)場可視化協(xié)作系統(tǒng)方案,為應(yīng)急事件實時上報、應(yīng)急事件快速響應(yīng)、應(yīng)急事件遠程指揮和調(diào)度、應(yīng)急
    發(fā)表于 07-26 18:10

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

    ,企業(yè)的生產(chǎn)經(jīng)營將蒙受損失。所以企業(yè)能及時正確地傳達和響應(yīng)這些生產(chǎn)過程、設(shè)備和質(zhì)量信息。針對上述需求,結(jié)合物聯(lián)技術(shù),研究MES系統(tǒng)軟件可視化系統(tǒng),通過部署多個傳感器節(jié)點,利用RFID標簽定位技術(shù),追蹤物料
    發(fā)表于 11-30 19:55

    如何把AD中非可視化區(qū)域物件移到可視化區(qū)域?

    AD中非可視化區(qū)域物件怎么移到可視化區(qū)域???
    發(fā)表于 09-10 05:36

    可視化電子看板系統(tǒng)的崗位需求

    庫存、生產(chǎn)、品質(zhì)和機臺等運行狀況處于可控狀態(tài)。生產(chǎn)運作高效可視化電子看板系統(tǒng)通過各部門和生產(chǎn)環(huán)節(jié)的緊密合作,可視化、精細化管理,節(jié)省庫存成本、杜絕浪費,包括任何一點材料、人力、時間
    發(fā)表于 10-19 20:07

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

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

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

    ,為此三維可視化運維系統(tǒng)登場了?! ∪S可視化的應(yīng)用  宏觀場景可視化:在特定的環(huán)境中對隨著時間推移而不斷變化的目標實體進行檢測,可以直觀、靈活、逼真的展示所處區(qū)域的情景和環(huán)境,可以快
    發(fā)表于 12-02 11:52

    數(shù)據(jù)可視化在電力行業(yè)的應(yīng)用前景如何?

    、信息管理和數(shù)據(jù)管理的量化展示,支持變電站多維數(shù)據(jù)的深度挖掘和智能分析。將實際生產(chǎn)業(yè)務(wù)無縫集成到平臺上,使日常管理任務(wù)標準、自動和企業(yè)智能、專業(yè)管理。案例預覽地址:https://www.hightopo.com/blog/
    發(fā)表于 07-06 07:44

    常見的幾種可視化介紹

    說說常見的幾種可視化一、信息可視化信息可視化就是對抽象數(shù)據(jù)進行直觀視覺呈現(xiàn)的研究,抽象數(shù)據(jù)既包含數(shù)值數(shù)據(jù),也包含非數(shù)值數(shù)據(jù)如文本信息、地圖信息等,它們可通過利用圖形圖像處理、人機交互、人工智能的技術(shù)
    發(fā)表于 07-12 07:49

    基于OneNET View 3.0的可視化數(shù)據(jù)監(jiān)測系統(tǒng)的設(shè)計資料分享

    姿態(tài)定位制作說明功能說明將維特WT901C姿態(tài)傳感器數(shù)據(jù)通過合宙Air724UG-4G模塊將數(shù)據(jù)傳輸?shù)給nenet云平臺,并建立onenetview可視化界面成果展示可視化成果注:由于采用免費可視化
    發(fā)表于 01-20 06:28

    什么是響應(yīng)時間

    什么是響應(yīng)時間      響應(yīng)時間是指液晶顯示器各像素點對輸入信號反應(yīng)的速度,即像素由暗轉(zhuǎn)亮或由亮轉(zhuǎn)暗所需要的時間(其原理是在液晶分子內(nèi)
    發(fā)表于 05-24 21:53 ?5540次閱讀

    什么是液晶電視的響應(yīng)時間

    什么是液晶電視的響應(yīng)時間   響應(yīng)時間是液晶電視各像素點對輸入信號反應(yīng)的速度,即像素由暗轉(zhuǎn)亮或由亮轉(zhuǎn)暗所需要的時間(其原理是在液晶分子內(nèi)
    發(fā)表于 03-27 13:29 ?4386次閱讀

    AS:可視化的調(diào)試工具--FreeRTOS+Trace

    在AS開發(fā)庫中,除了直接用于程序嵌入的庫和內(nèi)核以外,還有用來調(diào)試的工具。對于FreeRTOS而言,相對的線程和任務(wù)調(diào)度是比較難于用普通的設(shè)置斷點,進行參數(shù)跟蹤來實現(xiàn)的。因此,一種可視化的調(diào)試工具就被
    的頭像 發(fā)表于 02-09 14:17 ?6874次閱讀

    面板響應(yīng)時間有什么影響

    響應(yīng)時間是一個計算機,顯示器成像等多個領(lǐng)域的概念,在網(wǎng)絡(luò)上,指從空載到負載發(fā)生一個步進值的變化時,傳感器的響應(yīng)時間。
    的頭像 發(fā)表于 01-14 14:56 ?3975次閱讀

    進程響應(yīng)時間是指什么

    進程響應(yīng)時間是指從發(fā)出請求到收到響應(yīng)時間間隔,是衡量系統(tǒng)性能和用戶體驗的重要指標之一。在計算機系統(tǒng)中,進程是指一個正在運行的程序?qū)嵗.斢脩舭l(fā)出請求,系統(tǒng)會創(chuàng)建一個新的進程來處理該請求。進程
    的頭像 發(fā)表于 11-17 11:31 ?1063次閱讀