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

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

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

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

使用Percepio Tracealyzer等RTOS跟蹤工具可以找到并分析調(diào)試嵌入式軟件時(shí)的錯(cuò)誤

5RJg_mcuworld ? 來(lái)源:未知 ? 作者:李倩 ? 2018-09-12 16:43 ? 次閱讀

眾所周知,單獨(dú)的源代碼并不給出基于RTOS的固件實(shí)際行為的全貌表現(xiàn)。實(shí)時(shí)行為還取決于許多其他因素,如任務(wù)和中斷的定時(shí),輸入和實(shí)時(shí)操作系統(tǒng)的配置。

Tracealyzer提供了前所未有的洞察基于RTOS的軟件的運(yùn)行世界功能,從而改善開(kāi)發(fā)效率,減少上市時(shí)間,及更好的軟件質(zhì)量。使用Tracealyzer,可以記錄RTOS及應(yīng)用的實(shí)時(shí)行為,并具有強(qiáng)大的可視化功能,提供前所未有的洞察運(yùn)行時(shí)狀態(tài)的能力。這有助于加速基于RTOS的軟件開(kāi)發(fā)、驗(yàn)證和調(diào)試。

Tracealyzer支持FreeRTOS,uC/OS-III,VxWorks以及Linux的跟蹤。

近日,由《嵌入式系統(tǒng)編程》雜志的前任主編兼行業(yè)資深人士邁克爾?巴爾(Michael Barr)撰寫(xiě)的三本關(guān)于軟件漏洞主題的書(shū)籍,不僅列出了錯(cuò)誤,還提出了避免它們的設(shè)計(jì)模式。

良好的設(shè)計(jì)模式是非常寶貴的,但無(wú)論如何錯(cuò)誤總是難以避免的。在調(diào)試嵌入式軟件時(shí),使用Percepio Tracealyzer等RTOS跟蹤工具可以找到并分析這些錯(cuò)誤中的至少五個(gè)。

1、抖動(dòng)

如果軟件系統(tǒng)中有一項(xiàng)需要定期執(zhí)行的任務(wù),例如每10毫秒讀取一次模數(shù)轉(zhuǎn)換器,那么它就擁有一個(gè)對(duì)隨機(jī)延遲敏感的系統(tǒng) - 也稱為抖動(dòng)。如果10 ms間隔降低到10±2 ms,則計(jì)算精度會(huì)相應(yīng)降低。

為了最大限度地減少抖動(dòng),邁克爾?巴爾指出需要微調(diào)任務(wù)優(yōu)先級(jí),并可能使用定時(shí)器中斷來(lái)處理最敏感的代碼。Tracealyzer在定位系統(tǒng)中的抖動(dòng)方面非常有用。

2、優(yōu)先級(jí)分配不正確

設(shè)置合適的任務(wù)優(yōu)先級(jí)對(duì)于基于RTOS的系統(tǒng)的性能和可靠性至關(guān)重要,因?yàn)椴捎眠^(guò)高優(yōu)先級(jí)運(yùn)行的任務(wù)可能會(huì)導(dǎo)致其他任務(wù)中出現(xiàn)無(wú)法接受的延遲。

邁克爾?巴爾指出,速率單調(diào)分析(RMA)是一種在具有固定優(yōu)先級(jí)和搶占式調(diào)度的系統(tǒng)中分配任務(wù)優(yōu)先級(jí)的正式方法。但是,這需要有足夠的有關(guān)任務(wù)行為的信息,并且任務(wù)的行為符合此分析方法的假設(shè)。

找到在所有情況下都能正常工作的任務(wù)優(yōu)先級(jí)的正確組合可能非常困難,除非有一個(gè)良好的跟蹤工具來(lái)顯示RTOS中正在發(fā)生的事情。 Tracealyzer允許檢查執(zhí)行時(shí)間,執(zhí)行模式以及任務(wù)的最終響應(yīng)時(shí)間。這使開(kāi)發(fā)者可以評(píng)估和優(yōu)化其優(yōu)先級(jí)分配,以實(shí)現(xiàn)更快的響應(yīng)時(shí)間和更可靠的行為。

3、優(yōu)先級(jí)反轉(zhuǎn)

具有固定優(yōu)先級(jí)調(diào)度程序的RTOS的核心思想是,應(yīng)該在具有較低優(yōu)先級(jí)的任務(wù)之前安排高優(yōu)先級(jí)任務(wù),但是當(dāng)兩個(gè)或多個(gè)任務(wù)需要協(xié)調(diào)其工作與全局?jǐn)?shù)據(jù)區(qū)等共享資源或外圍設(shè)備時(shí),可能會(huì)導(dǎo)致系統(tǒng)出錯(cuò)。

其中一個(gè)可能出錯(cuò)的事情就是優(yōu)先級(jí)反轉(zhuǎn)(priority inversion),低優(yōu)先級(jí)任務(wù)無(wú)意中阻止了具有更高優(yōu)先級(jí)的任務(wù)。 如果你意識(shí)到這個(gè)陷阱,這也很容易地避免。 但是,如果發(fā)現(xiàn)系統(tǒng)的響應(yīng)性偶爾會(huì)出現(xiàn)延遲,則可能是因?yàn)閮?yōu)先級(jí)反轉(zhuǎn)。 使用Tracealyzer,可以通過(guò)繪制任務(wù)的響應(yīng)時(shí)間來(lái)發(fā)現(xiàn)此類延遲。 要查看此圖中任何極端值的原因,只需雙擊以顯示相應(yīng)的任務(wù)執(zhí)行跟蹤。

4、死鎖

死鎖是兩個(gè)或多個(gè)任務(wù)之間的循環(huán)依賴。 例如,如果任務(wù)1已經(jīng)獲得A,并且被阻止等待B,而任務(wù)2先前已獲得B,并且被阻止等待A,則這兩個(gè)任務(wù)都不會(huì)被喚醒。 盡管沒(méi)有更高優(yōu)先級(jí)的任務(wù)正在運(yùn)行,但是當(dāng)多個(gè)任務(wù)突然停止執(zhí)行時(shí),可能是出現(xiàn)死鎖問(wèn)題的明確跡象。 同樣,死鎖的檢測(cè)是Tracealyzer可以展示的內(nèi)容。

如果希望避免死鎖,首先要注意的是,只有當(dāng)任務(wù)試圖同時(shí)持有兩個(gè)資源時(shí)才會(huì)發(fā)生死鎖。 因此:構(gòu)建代碼時(shí),使任何任務(wù)在同一時(shí)間都不會(huì)持有多個(gè)共享資源,這樣不會(huì)產(chǎn)生死鎖。

5、內(nèi)存泄漏

通常不建議在嵌入式軟件中進(jìn)行動(dòng)態(tài)內(nèi)存分配,但有時(shí)會(huì)出于各種原因(對(duì)或錯(cuò))進(jìn)行動(dòng)態(tài)內(nèi)存分配。問(wèn)題在于,如果使用它,則必須確保一旦內(nèi)存塊不再使用時(shí),就釋放每個(gè)已分配的內(nèi)存塊。如果在某些情況下遺漏了這一點(diǎn),就會(huì)出現(xiàn)內(nèi)存泄漏,并最終耗盡內(nèi)存。請(qǐng)記住:即使在項(xiàng)目中禁止動(dòng)態(tài)內(nèi)存分配,也可能有第三方軟件庫(kù)或外部開(kāi)發(fā)團(tuán)隊(duì)在不知情的情況下使用動(dòng)態(tài)內(nèi)存分配。

如果內(nèi)存泄漏只是偶爾發(fā)生,那么它就特別危險(xiǎn),因?yàn)樵诠δ軠y(cè)試期間很容易錯(cuò)過(guò)“緩慢”的內(nèi)存泄漏,但在部署單元一段時(shí)間后,可能會(huì)導(dǎo)致嚴(yán)重錯(cuò)誤。考慮到許多嵌入式系統(tǒng)的長(zhǎng)期運(yùn)行特性,以及一些安全關(guān)鍵系統(tǒng)可能存在的致命或嚴(yán)重故障,內(nèi)存泄漏是絕對(duì)不希望在軟件中出現(xiàn)的一個(gè)錯(cuò)誤。

Tracealyzer可以監(jiān)視RTOS對(duì)動(dòng)態(tài)內(nèi)存分配的調(diào)用,并可以突出顯示可疑的內(nèi)存泄漏。

聲明:本文內(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)注

    4

    文章

    240

    瀏覽量

    26620
  • RTOS
    +關(guān)注

    關(guān)注

    22

    文章

    809

    瀏覽量

    119439

原文標(biāo)題:在調(diào)試嵌入式軟件時(shí),使用跟蹤工具可以找到一些典型錯(cuò)誤!

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Tracealyzer 技術(shù)分享

    為什么要使用Tracealyzer???1.在使用FreeRTOS的系統(tǒng)進(jìn)行開(kāi)發(fā)的時(shí)候,在多任務(wù)開(kāi)發(fā)的時(shí)候,多時(shí)序紊亂,導(dǎo)致系統(tǒng)異常Tracealyzer是一個(gè)很好的嵌入式OS時(shí)序分析
    發(fā)表于 01-04 21:10

    教你快遞入門(mén)-Tracealyzer跟蹤記錄庫(kù)移植

    PercepioTracealyzer是一個(gè)強(qiáng)大的工具可以在運(yùn)行時(shí)跟蹤和可視化分析RTOS系統(tǒng)。超過(guò)30種視圖,對(duì)系統(tǒng)的實(shí)時(shí)行為提供了驚人
    發(fā)表于 07-31 14:08

    淺談基于RTOS系統(tǒng)開(kāi)發(fā)調(diào)試的難題

    調(diào)試器(J-Link)或者串口通信接口,實(shí)時(shí)的將數(shù)據(jù)傳輸?shù)絇C端的分析軟件,實(shí)現(xiàn)長(zhǎng)時(shí)間的實(shí)時(shí)跟蹤
    發(fā)表于 04-28 13:28

    使用Tracealyzer跟蹤FreeRTOS內(nèi)核

    模式,可以跟蹤單個(gè)任務(wù)和特定內(nèi)核函數(shù)的內(nèi)存分配和內(nèi)存共享,使用這個(gè)工具可以很方便的找到內(nèi)存錯(cuò)誤
    發(fā)表于 12-01 14:57

    如何使用Tracealyzer流模式跟蹤ThreadX?

    TracealyzerPercepio 公司開(kāi)發(fā)的一款用于RTOS嵌入式軟件系統(tǒng)的可視化跟蹤
    發(fā)表于 09-23 13:25

    使用PercepioTracealyzer和DevAlert實(shí)現(xiàn)FreeRTOS的可觀察性!

    Percepio是著名的Tracealyzer背后的公司。Tracealyzer是一款桌面應(yīng)用程序,方便嵌入式工程師通過(guò)追蹤直觀地診斷軟件
    發(fā)表于 05-18 13:41

    如何在VIM中對(duì)嵌入式軟件進(jìn)行調(diào)試

    GNU免費(fèi)提供了一整套工具鏈,為嵌入式Linux程序的開(kāi)發(fā)和調(diào)試提供了完整的支持。其強(qiáng)大的gdb調(diào)試工具可以方便地對(duì)
    發(fā)表于 06-30 10:39 ?1134次閱讀
    如何在VIM中對(duì)<b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>進(jìn)行<b class='flag-5'>調(diào)試</b>

    UltraSoC與Percepio結(jié)盟為實(shí)時(shí)系統(tǒng)提供第一個(gè)完整的嵌入式分析平臺(tái)

    領(lǐng)先的嵌入式分析技術(shù)供應(yīng)商UltraSoC與領(lǐng)先的實(shí)時(shí)操作系統(tǒng)軟件跟蹤工具專業(yè)廠商Percepio
    發(fā)表于 02-09 15:25 ?237次閱讀
    UltraSoC與<b class='flag-5'>Percepio</b>結(jié)盟為實(shí)時(shí)系統(tǒng)提供第一個(gè)完整的<b class='flag-5'>嵌入式</b><b class='flag-5'>分析</b>平臺(tái)

    UltraSoC聯(lián)手Percepio 嵌入式調(diào)試工具實(shí)時(shí)交流和分享重要信息

    領(lǐng)先的嵌入式分析技術(shù)供應(yīng)商UltraSoC與領(lǐng)先的實(shí)時(shí)操作系統(tǒng)軟件跟蹤工具專業(yè)廠商Percepio
    發(fā)表于 12-19 16:30 ?890次閱讀

    哪些工具可以可以發(fā)現(xiàn)基于RTOS的程序錯(cuò)誤

    、饑餓、死鎖、優(yōu)先級(jí)反轉(zhuǎn)bug。 一些專門(mén)設(shè)計(jì)的工具可以幫助基于RTOS的程序開(kāi)發(fā)人員發(fā)現(xiàn)一些難以發(fā)現(xiàn)的錯(cuò)誤
    的頭像 發(fā)表于 04-12 10:46 ?1922次閱讀
    哪些<b class='flag-5'>工具</b><b class='flag-5'>可以</b><b class='flag-5'>可以</b>發(fā)現(xiàn)基于<b class='flag-5'>RTOS</b>的程序<b class='flag-5'>錯(cuò)誤</b>?

    基于RTOS嵌入式系統(tǒng)軟件的設(shè)計(jì)講解

    基于RTOS嵌入式系統(tǒng)軟件的設(shè)計(jì)講解(樹(shù)莓派嵌入式開(kāi)發(fā)板)-該文檔為基于RTOS嵌入式系統(tǒng)
    發(fā)表于 07-30 10:03 ?8次下載
    基于<b class='flag-5'>RTOS</b>的<b class='flag-5'>嵌入式</b>系統(tǒng)<b class='flag-5'>軟件</b>的設(shè)計(jì)講解

    如何使用Tracealyzer的流模式來(lái)跟蹤ThreadX應(yīng)用

    TracealyzerPercepio 公司開(kāi)發(fā)的一款用于RTOS嵌入式軟件系統(tǒng)的可視化跟蹤
    的頭像 發(fā)表于 09-16 11:14 ?1375次閱讀

    如何通過(guò)Tracealyzer導(dǎo)出的跟蹤數(shù)據(jù)對(duì)任務(wù)進(jìn)行分析

    TracealyzerPercepio 公司開(kāi)發(fā)的一款用于RTOS的可視化跟蹤工具, 目前Tracea
    的頭像 發(fā)表于 02-06 14:13 ?1071次閱讀

    使用PercepioTracealyzer和DevAlert實(shí)現(xiàn)FreeRTOS的可觀察性

    執(zhí)行過(guò)程中解釋系統(tǒng)狀態(tài)。在對(duì)意外行為進(jìn)行故障排除時(shí),使用FreeRTOS分析基于微控制器的應(yīng)用程序的追蹤可以節(jié)省嵌入式工程師大量時(shí)間和精力。如需將此工具與FreeRTOS應(yīng)用程序一起使
    的頭像 發(fā)表于 05-16 14:17 ?1711次閱讀
    使用<b class='flag-5'>Percepio</b>的<b class='flag-5'>Tracealyzer</b>和DevAlert實(shí)現(xiàn)FreeRTOS的可觀察性

    Percepio Tracealyzer 4.9版本改善Linux用戶體驗(yàn)

    嵌入式邊緣系統(tǒng)工具解決方案的領(lǐng)先供應(yīng)商Percepio AB宣布提供Tracealyzer4.9版本——這是其嵌入式
    的頭像 發(fā)表于 10-22 14:08 ?292次閱讀