毫無(wú)疑問(wèn),當(dāng)您開始在開發(fā)中使用實(shí)時(shí)操作系統(tǒng) (RTOS) 時(shí),會(huì)有一條學(xué)習(xí)曲線。您將在更高的抽象級(jí)別上工作,使用或多或少的并行任務(wù)而不僅僅是子例程,并且您將需要考慮您的任務(wù)應(yīng)如何共享數(shù)據(jù)和處理器時(shí)間。您需要為這些任務(wù)分配運(yùn)行時(shí)優(yōu)先級(jí),最好的解決方案是什么并不是很明顯。最后但同樣重要的是,您需要學(xué)習(xí)如何使用 RTOS 本身,例如用于控制任務(wù)和在它們之間進(jìn)行通信的配置和 API 函數(shù)。
一旦你掌握了所有這些并且你正在編寫你的代碼,就到了下一個(gè)學(xué)習(xí)曲線的時(shí)候了——你現(xiàn)在也必須學(xué)習(xí)如何調(diào)試你的代碼。
調(diào)試 RTOS 系統(tǒng)(通常使用搶占式多任務(wù)處理)與調(diào)試您自己編寫所有代碼的單線程“超級(jí)循環(huán)”系統(tǒng)有幾個(gè)不同的原因,但我想說(shuō)兩個(gè)主要原因是
由于多個(gè)任務(wù)交互并競(jìng)爭(zhēng)共享資源,軟件行為可能會(huì)受到軟件時(shí)序和 RTOS 調(diào)度行為的影響,而在源代碼中是不可見的。
您不再直接控制程序流程——任務(wù)切換可能隨時(shí)隨地發(fā)生。
這些問(wèn)題真的沒有辦法解決。您將不得不處理它們,因?yàn)槟仨毿湃?a href="http://www.asorrir.com/v/tag/527/" target="_blank">操作系統(tǒng)來(lái)安排您的任務(wù)和管理計(jì)時(shí)器。一些任務(wù)切換可能是可預(yù)測(cè)的,因此是已知的,但通常您不知道它們會(huì)在程序流的哪個(gè)位置發(fā)生。隨著系統(tǒng)中任務(wù)/線程數(shù)量的增加,組合的數(shù)量也在增加——可能存在大量可能的執(zhí)行場(chǎng)景,具有不同的時(shí)間和執(zhí)行順序,其中大多數(shù)都可以正常工作。但是,您的一位客戶報(bào)告了“噩夢(mèng)錯(cuò)誤”,只有在條件合適時(shí)才會(huì)出現(xiàn),您無(wú)法重現(xiàn)。
下面的邊欄列出了一些典型癥狀,如果您有與 RTOS 相關(guān)的時(shí)序錯(cuò)誤,您可能會(huì)看到這些癥狀。請(qǐng)注意,其中許多問(wèn)題通常具有一定程度的隨機(jī)性;問(wèn)題有時(shí)會(huì)出現(xiàn),但并非總是如此。
依賴于時(shí)間的錯(cuò)誤很難重現(xiàn)或發(fā)現(xiàn),尤其是因?yàn)榇蠖鄶?shù)調(diào)試工具對(duì)多任務(wù)問(wèn)題的支持很少。在我看來(lái),大多數(shù)工具仍然專注于靜態(tài)停止系統(tǒng),而不是動(dòng)態(tài)軟件行為。相比之下,許多系統(tǒng)具有實(shí)時(shí)要求,并且無(wú)法停止調(diào)試。
RTOS 相關(guān)時(shí)序錯(cuò)誤的一些典型癥狀
任務(wù)可以單獨(dú)工作,但不能作為一個(gè)完整的系統(tǒng)
性能緩慢
系統(tǒng)鎖定,或有時(shí)停止響應(yīng)
系統(tǒng)看起來(lái)很脆弱——微小的變化會(huì)導(dǎo)致奇怪的錯(cuò)誤
輸出時(shí)序的隨機(jī)變化
有時(shí)數(shù)據(jù)損壞或輸出錯(cuò)誤
隨機(jī)崩潰/硬故障
除了尋找癥狀之外,您當(dāng)然應(yīng)該使用您擁有的任何工具以及它們提供的工具來(lái)檢查您的 RTOS 和應(yīng)用程序是否存在錯(cuò)誤和不當(dāng)行為。例如,您的 IDE 可能支持在調(diào)試期間輕松檢查 RTOS 對(duì)象(有時(shí)通過(guò)插件),甚至可以分析任務(wù)的堆棧使用情況。RTOS 可以讓您在較高級(jí)別測(cè)量 CPU 使用率,讓您了解每個(gè)任務(wù)平均需要多少 CPU 時(shí)間。一些調(diào)試器可以在系統(tǒng)執(zhí)行時(shí)實(shí)時(shí)呈現(xiàn)變量(“實(shí)時(shí)監(jiān)視”),盡管這可能不適合快速變化的變量。
如果您想查看應(yīng)用程序和 RTOS 內(nèi)部實(shí)際發(fā)生的事情的可靠時(shí)間線,您需要能夠在事件發(fā)生時(shí)記錄事情的 RTOS 感知跟蹤,以及可以幫助您理解跟蹤信息的工具。
審核編輯:郭婷
-
cpu
+關(guān)注
關(guān)注
68文章
11037瀏覽量
216006 -
RTOS
+關(guān)注
關(guān)注
24文章
841瀏覽量
120767
發(fā)布評(píng)論請(qǐng)先 登錄
RTOS如何在FX3中工作?
詳解RTOS中的Hook函數(shù)
RTOS中的本地存儲(chǔ)指針使用

請(qǐng)問(wèn)ADS42LB49模擬地AGND和數(shù)字地DGND是如何處理?
RTOS中的錯(cuò)誤檢查機(jī)制
RTOS正在縮小與Linux的差距

數(shù)字地和模擬地如何處理
SMT錫膏加工中如何處理缺陷?

freertos和rtos區(qū)別是什么
RTOS系統(tǒng)在國(guó)產(chǎn)工業(yè)級(jí)HMI芯片Model系列中的深度應(yīng)用與性能優(yōu)化

RTOS的特性和類型
簡(jiǎn)單認(rèn)識(shí)RTOS實(shí)時(shí)操作系統(tǒng)
請(qǐng)問(wèn)比較器不用的引腳如何處理比較好?
什么是實(shí)時(shí)操作系統(tǒng)(3)-在 RTOS 中可以期待什么?

評(píng)論