--嵌入式開發概略--
(2006-07-13 07:09:11)
下一個
嵌入式軟件係統的開發要點
(這裏均指應用開發,而不是內核本身的開發)
嵌入式操作係統內核,後文均簡稱為嵌入式核心
嵌入式核心與通用係統核心有著大體相似的構成,但是由於嵌入式係統地實時性要求,
嵌入式係統必須具備下列特征:
1.實時性:
嵌入式核心必須擁有很高的實施響應的特性,也就是說,在既定的時間必須對要求給出答複,比如在通信,音視頻錄像,宇航等係統中。
2.虛擬設備管理的剪裁
為了達到實時性的要求,在通用係統中被廣泛運用的手段都受到限製,比如虛擬文件係統被分層式的文件係統代替,並且限定文件數,和目錄名稱;不支持內存分頁技術,轉而使用真實地址的cache技術;不支持模塊的動態加載。
3.係統實現的高效性
嵌入式核心的開發及周邊應用模塊的開發,要求很高的代碼效率,以確保以盡可能少的代碼完成盡可能多的計算,同時減少調試的困難。
4.同時支持多平台能力的犧牲
嵌入式係統一旦與應用模塊被一起編譯,將隻對某個硬件平台有效,不具備動態兼容的特性。因此,在嵌入式係統裏,嵌入式核心的兼容能力,僅限於編譯前多平台支持的代碼的選擇或是編譯開關。
嵌入式軟件的實現主要包括下列要點
實時性任務的實現:
除了與操作係統相似的功能之外,實時係統要求很高的任務切換能力,並盡量減少切換成本,在不同的任務切換的設計上采用搶占式方式(即一個任務可以通過製定優先級的方式被調度)。保證重要的任務可以得到優先執行。
任務的效率評價通常都在掛接某些必要的模塊之後進行,真實反映實裝條件下的任務調度水平。
中斷句柄的管理
實時係統中,各種硬件設備都有一個相互不同的標識,稱為句柄,句柄的管理策略代表了某個實時係統的效率的高低,句柄都是通過硬件中斷來實現的,硬件中斷依賴於CPU的設計和軟件核心的響應策略,由於不允許出現通用係統裏的等待,一般都嚴格控製超時,超時則進入錯誤處理。
任務的同步協調
實時性要求各個任務之間有很高的任務協調能力,通常選擇信號量作為唯一的同步手段,不同級的任務由不同級別的信號量,級別越高,又能快速的被執行,同時為了防止低級別在某一時刻擁有的高響應的要求,又附加以優先級反轉的功能,即在某一時刻,當等待一個信號量時,原本優先級底的信號量由於傳輸緩衝已滿或其他的原因,需要立即處理的是,將通過修改消息隊列裏的優先度,提高信號量的級別,從而先期被響應
消息機製
在實時係統中,信息共享通常隻使用消息機製,在消息結構裏,定義消息所屬任務,消息標識符,消息響應模塊的名稱,消息需要傳遞的數據的緩衝區指針等。消息總是成對出現的,在發送消息的模塊裏,開頭部分發送消息SendMessage(),在最後的尾部接受消息處理結果RecvMessage(),而在消息處理的主題模塊裏,通常有各種消息的響應代碼,開頭是RecvMessage(),然後是根據消息響應模塊的名稱處理響應的消息,結果出來以後SendMessage(),結果返回給發送消息的模塊。
文件管理和設備管理
實時係統中通常不將文件管理和設備管理納入核心中,也就是說,文件管理和設備管理將根據實際的產品情況選擇性地加入讀懂代碼,因此,也很少有兼容性可言。為了適應不同的場合,文件係統不使用虛擬文件係統轉而采用多層式的文件係統來增加兼容性。文件係統通常由產品設計的公司自行編製完成。
內存管理策略
實時係統中,所有內存都以實地址方式映射,通常分為數據不斷改變的cache領域和啟動後數據不發生改變的領域uncache領域,內存的邊界對齊手段被強製運用,以加快存取速度。通常為16位的整數倍。
在日本,日本本土的嵌入式係統iTRON被廣發使用,它擁有比嵌入式Linux搞一個數量級的響應速度,但是在軟硬件支持尚不夠豐富。很孤獨。也不如Linux健壯,iTRON的下一代是T-Engine,可以通過T-engine論壇申請獲取代碼(免費)(T-engine的開發者是東大的阪村教授,真有去阪村研究室作研究的衝動,歲月不饒人,歎),學習嵌入式編成的環境可以利用skyeye芯片模擬軟件來實現,並且需要安裝VMWare軟件。比起內核的開發來,應用的開發需求更為迫切,實施嵌入編成中,函數指針,volatile保留字,宏定義被大量使用。鑒於調試多任務係統的困難,調試的手段包括,終端的log顯示,斷點設定時的內存dump,時間跟蹤器的跟蹤,調試宏,調試代碼的測定,同步構造中相關數值堅實,斷言等手段。
複雜的嵌入式係統代碼達到500萬行級別,代碼調試變得極為困難,這對各個開發企業來實都是巨大挑戰。專業的圈子裏通常使用CVS進行代碼開發管理,使用EMACS或其變體作為代碼編輯器,嵌入式開發已經與GNU的軟件密不可分,GNU是由世界最頂尖的編程高手,超級黑客麻省理工的RichardStallman博士創立的,了解GNU,可以在Google檢索,在那裏可以領略關於版權的不同的的哲學觀點,你的思想可能會獲得解放。由於GNU是由世界上許許多多的軟件奇才參與的項目,裏麵的一個軟件都閃耀著自由與智慧的光芒。GNU的核心不在於是否收費,而在於源代碼必須公開,以及基於GNU源代碼的代碼也必須公開的第歸過程。剛開始使用EMACS會感覺不暢,很多鍵的組合需要記憶,但在用熟之後,程序員將再也不能離開EMACS。