嵌入式軟件跟蹤調(diào)試技術(shù)的研究與設(shè)計(jì)
摘要:針對(duì)在嵌入式實(shí)時(shí)操作系統(tǒng)環(huán)境下高低優(yōu)先級(jí)任務(wù)切換過程引起的跟蹤信息亂序和丟失問題,對(duì)跟蹤信息嵌套緩存機(jī)制和解析機(jī)制進(jìn)行了設(shè)計(jì),提出了物理緩存管理機(jī)制與遞歸調(diào)用解析機(jī)制相結(jié)合、備份緩存管理機(jī)制與普通查詢解析機(jī)制相結(jié)合的兩種跟蹤方案,解決了跟蹤信息亂序和丟失問題,提高了跟蹤系統(tǒng)的運(yùn)行效率。
關(guān)鍵詞:嵌入式實(shí)時(shí)操作系統(tǒng);緩存管理;跟蹤調(diào)試
引言
嵌入式系統(tǒng)是當(dāng)今計(jì)算機(jī)軟件領(lǐng)域的熱點(diǎn),實(shí)時(shí)性是嵌入式系統(tǒng)的基本要求。隨著嵌入式技術(shù)的不斷發(fā)展,在嵌入式應(yīng)用的不斷增長以及嵌入式系統(tǒng)復(fù)雜性不斷提高的情況下,調(diào)試階段在整個(gè)系統(tǒng)開發(fā)過程中所占的比重越來越大。調(diào)試環(huán)境和調(diào)試技術(shù)直接影響軟件開發(fā)的效率和質(zhì)量,高效的調(diào)試系統(tǒng)可以大大減少嵌入式系統(tǒng)開發(fā)的時(shí)間,減輕系統(tǒng)開發(fā)工作量。
跟蹤調(diào)試系統(tǒng)主要有JTAG在線調(diào)試和運(yùn)行時(shí)跟蹤調(diào)試兩種方式。JTAG在線調(diào)試在調(diào)試實(shí)時(shí)系統(tǒng)時(shí)有很大的局限性,如通過斷點(diǎn)查詢完參數(shù)后系統(tǒng)無法再按照正常時(shí)序運(yùn)行,以及無法檢測到系統(tǒng)順序化執(zhí)行的變遷狀態(tài)。運(yùn)行時(shí)跟蹤調(diào)試采用軟件插樁技術(shù),通過在程序中嵌入跟蹤點(diǎn),開發(fā)人員可以在程序運(yùn)行過程中通過跟蹤點(diǎn)實(shí)時(shí)觀察輸出的信息,如各模塊之間進(jìn)行交互的信息以及程序運(yùn)行的順序等。
本項(xiàng)目設(shè)計(jì)的實(shí)時(shí)跟蹤系統(tǒng)基于運(yùn)行時(shí)跟蹤調(diào)試手段,采用ARM11系列處理器作為硬件開發(fā)平臺(tái),運(yùn)行于Nucleus實(shí)時(shí)操作系統(tǒng)上。Nucl eus實(shí)時(shí)操作系統(tǒng)為搶先式多任務(wù)操作系統(tǒng),在程序執(zhí)行過程中,低優(yōu)先級(jí)任務(wù)會(huì)被高優(yōu)先級(jí)任務(wù)搶占,可能出現(xiàn)跟蹤任務(wù)沖突而導(dǎo)致跟蹤信息相互覆蓋、亂序等問題。特別是在跟蹤信息量較大時(shí),一旦超過傳輸峰值就會(huì)造成跟蹤信息的丟失。該實(shí)時(shí)跟蹤系統(tǒng)采用特殊緩存機(jī)制和解析機(jī)制,能夠解決跟蹤信息丟失的問題,實(shí)現(xiàn)跟蹤信息的完整、有序傳輸。
1 原始跟蹤方案
實(shí)時(shí)跟蹤系統(tǒng)由跟蹤信息緩存單元、傳輸控制單元和PC端解析單元組成,如圖1所示。其中,跟蹤信息緩存單元負(fù)責(zé)對(duì)跟蹤信息的組裝和跟蹤緩存的管理,傳輸控制單元負(fù)責(zé)將跟蹤信息從跟蹤緩存搬移到PC端,PC端解析單元負(fù)責(zé)對(duì)跟蹤信息進(jìn)行解析。
跟蹤緩存管理機(jī)制是指如何管理該跟蹤緩存的讀寫權(quán)限,如何記錄讀寫索引的變化。在有跟蹤備份緩存的跟蹤方案中,跟蹤緩存管理機(jī)制還負(fù)責(zé)對(duì)備份緩存的管理。在跟蹤系統(tǒng)中,所有跟蹤信息在跟蹤點(diǎn)輸出時(shí)被封裝成為固定幀格式(消息頭+消息內(nèi)容),寫入到跟蹤信息緩存單元中同一個(gè)長度為X字節(jié)的環(huán)形隊(duì)列。
由于Nucleus多任務(wù)操作系統(tǒng)下實(shí)時(shí)跟蹤系統(tǒng)中跟蹤源主要分為低級(jí)中斷、高級(jí)中斷/定時(shí)器和任務(wù)等,因此在對(duì)跟蹤源中的跟蹤點(diǎn)進(jìn)行跟蹤的過程中,不同優(yōu)先級(jí)的跟蹤點(diǎn)可能出現(xiàn)對(duì)全局跟蹤信息緩存的競爭。跟蹤沖突場景如圖2所示。跟蹤信息緩存單元中僅設(shè)置了一個(gè)寫指針訪問跟蹤信息緩存,保證了跟蹤信息的有序性,但不同優(yōu)先級(jí)跟蹤源進(jìn)行切換時(shí)會(huì)產(chǎn)生沖突,需要對(duì)寫指針現(xiàn)場進(jìn)行保護(hù)。
由于阻塞高優(yōu)先級(jí)任務(wù)會(huì)造成系統(tǒng)流程異常,在產(chǎn)生沖突時(shí),為了保證跟蹤信息完整性,同時(shí)又不能阻塞高優(yōu)先級(jí)任務(wù),只能丟棄高優(yōu)先級(jí)任務(wù)中的跟蹤請(qǐng)求。當(dāng)操作系統(tǒng)任務(wù)頻繁切換時(shí),會(huì)出現(xiàn)較多跟蹤信息丟棄的現(xiàn)象。跟蹤信息丟棄現(xiàn)象的特征是跟蹤信息整條丟失、連續(xù)丟失(主動(dòng)搶占任務(wù)中的所有跟蹤),且跟蹤信息丟棄與跟蹤信息傳輸損耗無關(guān)。因此,跟蹤系統(tǒng)中的緩存機(jī)制有待優(yōu)化。
評(píng)論