模擬器開發(fā)以及嵌入式系統(tǒng)內(nèi)核調(diào)試
一、模擬器的開發(fā)
1. 什么是模擬器
模擬器是一組應(yīng)用程序,它運(yùn)行于一個OS之上(linux或windows),提供對目標(biāo)板功能的模擬,包括中斷系統(tǒng),RAM,F(xiàn)LASH系統(tǒng),以及目標(biāo)OS到宿主OS任務(wù)的映射。
2. 模擬器與虛擬機(jī)的區(qū)別
模擬器不同于虛擬機(jī),虛擬機(jī)從設(shè)備的角度來模擬一個目標(biāo)板,微細(xì)到提供對每條處理器指令的支持,而模擬器則從功能的角度進(jìn)行模擬,重點(diǎn)在于對目標(biāo)OS運(yùn)行狀態(tài)的監(jiān)視,以及執(zhí)行邏輯的監(jiān)視。方便調(diào)試系統(tǒng)內(nèi)核,以及開發(fā)初期的可行性調(diào)研。另外模擬器是在C語言級別上提供模擬,所以無論目標(biāo)OS基于什么CPU,只要是C語言寫的,模擬器就能提供對它的模擬。
3. 如何在windows環(huán)境下開發(fā)模擬器
3.1.模擬器的基本構(gòu)造
一個基本的模擬器只要提供對中斷系統(tǒng)的模擬,任務(wù)映射的模擬,內(nèi)存以及堆棧的模擬就可以在其上面運(yùn)行嵌入式實(shí)時內(nèi)核了,當(dāng)然我們還需要一個輸入輸出的設(shè)備,來干預(yù)及監(jiān)視嵌入式內(nèi)核的運(yùn)行。
3.2.中斷系統(tǒng)
中斷系統(tǒng)是模擬器的核心,因為任務(wù)的調(diào)度本質(zhì)上都是通過中斷完成的(非搶占式系統(tǒng)例外)。以simuos為例,有8個中斷源,包括異常、時鐘、串口、鍵盤等。為了減輕模擬器的負(fù)擔(dān),實(shí)際上只產(chǎn)生一個中斷事件,然后通過查詢的方式來進(jìn)行中斷的路由。
3.3.任務(wù)映射
任務(wù)映射是模擬器與虛擬機(jī)的主要區(qū)別,虛擬機(jī)不需要任務(wù)映射,因此它也不可能了解嵌入式內(nèi)核的運(yùn)行邏輯與運(yùn)行狀態(tài),只能通過觀察寄存器來推斷。而模擬器將每一個目標(biāo)OS的任務(wù)都記錄下來,然后統(tǒng)一管理它們的運(yùn)行,而達(dá)到監(jiān)視和干預(yù)的目的。
3.4.其他
LCD和鍵盤的模擬。
二、實(shí)時內(nèi)核移植
1. 移植的前提
移植的唯一前提是我們必須擁有目標(biāo)OS的源代碼。
2. 移植時的注意事項
注意中斷系統(tǒng)的掛接,注意任務(wù)管理器的安裝。
3. 以ucosii舉例(搶占式)
ucosii為優(yōu)先級搶占式實(shí)時系統(tǒng)內(nèi)核,廣泛應(yīng)用于工控領(lǐng)域,由于其源碼開放
所以倍受學(xué)生和廣大嵌入式愛好者的青睞。但是對于初學(xué)者而言,嵌入式系統(tǒng)就象一個黑盒子,雖然有代碼在手但卻不能感觀體驗到其運(yùn)行時所帶來的魅力。將其移植到模擬器上,我們不但能觀察ucosii的任務(wù)管理方式,還能隨時設(shè)置斷點(diǎn)來對自己的程序進(jìn)行調(diào)試。移植的源代碼及demo程序請自行下載:www.mshowtec.com
4. 以rtke舉例(非搶占式)
rtke是菲利普手機(jī)解決方案中應(yīng)用的實(shí)時內(nèi)核,該內(nèi)核的最大缺點(diǎn)就是非搶占式,一個task必須自己放棄CPU的使用權(quán)才能使其他高優(yōu)先級的任務(wù)得到調(diào)度。因此在其上面寫程序必須十分小心,另外通過模擬器我們可以跟蹤到每個消息發(fā)往何處,每個信號量的使用狀況,當(dāng)前內(nèi)存的狀態(tài)等等。Demo程序請自行下載:www.mshowtec.com
三、VC環(huán)境下調(diào)試
1. 模擬器下調(diào)試的優(yōu)缺點(diǎn)
優(yōu)點(diǎn)是直觀方便,缺點(diǎn)是由于模擬器并不是真實(shí)的硬件環(huán)境,因此許多依賴于硬件的代碼無法進(jìn)行調(diào)試,但是對于調(diào)試系統(tǒng)內(nèi)核和普通的應(yīng)用程序已經(jīng)是夠用了,尤其是在解決系統(tǒng)死鎖的問題上是最有用的利器。
2. 調(diào)試手段與方法
可以利用模擬器本身提供的調(diào)試工具進(jìn)行分析系統(tǒng)狀態(tài),也可以在OS代碼中加入自己的trace信息來跟蹤系統(tǒng)的運(yùn)行,具體請參照上面提供的兩個例子。
四、小結(jié)
通過對模擬器simuos的開發(fā),以及對幾個實(shí)時內(nèi)核的移植,我們發(fā)現(xiàn)在嵌入式領(lǐng)域我們?nèi)狈Φ氖腔A(chǔ)教育,每個從事嵌入式開發(fā)的工程師大多都是工作以后才對嵌入式系統(tǒng)有一個比較完整和深刻的認(rèn)識的,如果每所大學(xué)能讓我們的學(xué)生在上學(xué)期間親手移植一個甚至是幾個嵌入式系統(tǒng)內(nèi)核,那么我們的畢業(yè)生的技術(shù)素質(zhì)將會有顯著的提高。Simuos這個項目就是為這個目的而開發(fā)的,希望它能給正在學(xué)習(xí)或打算學(xué)習(xí)嵌入式開發(fā)的同學(xué)或工程師帶來幫助。
評論