一種改進嵌入Linux實時性的新型方案
而從前面的分析可以看出,RTAI是基于普通Linux內核,相對于嵌入式應用其內核過于龐大;而uClinux本身并沒有更多地關注實時問題。因此,可以將RTAI和uClinux相結合,采用雙內核的設計方案,既滿足了嵌入式應用的需求,又保證了系統的硬實時性。
1.硬件抽象層

圖3 系統中斷處理流程圖
系統的實現基礎是硬件抽象層,通過硬件抽象層進行硬件管理,把基本內核和實時內核結合在一起,其中一個內核的改變,不會影響另一個內核的執行。
硬 件抽象層定義了本系統同硬件之間的抽象接口,主要用來截取硬件中斷,并且依據實時內核調度器的需求,重定向為基本內核任務或是實時任務。RTHAL包含一 個關鍵的組件:中斷描述符表(IDT,Interrupt Descriptor Table),它定義了一套指針用來處理中斷例程。RTHAL本身定義了一個結構,使得基本內核中斷處理函數能夠很容易地被實時處理函數所替代。這樣,當 實時內核通過RTHAL激活后,新的IDT表為合法。在以上控制下,基本內核作為實時系統的任務提供服務。
2.雙內核結構
雙內核實時系統的總體結構模型如圖1所示,主要包含了基本內核、實時內核、硬件抽象層、硬件部分。
其 中基本內核(uClinux)和實時內核(RTAI)分別處理非實時和實時任務的調度和執行,而實時任務和非實時任務之間信息的交換要通過管道 (FIFO)或共享內存(MBUFF)來實現。當實時任務運行時,基本內核被硬件抽象層屏蔽。即實時內核將基本內核作為優先級最低的一個任務來運行,只有 在沒有實時任務運行的時候才予以調度。
3.實時內核動態加載
嵌入式實時Linux的實時內核是動態加載的。實時任務被激活前,實時內核并沒有啟動,基本內核通過RTHAL透明訪問硬件,就像RTHAL不存在一樣。當實時任務被激活時,RTHAL結構發生變化,基本內核被實時內核接管,圖2表明了實時內核啟動前后,系統發生的變化。本文引用地址:http://www.104case.com/article/151179.htm
4.調度處理
當 中斷到來時,實時內核判斷它是基本內核中斷還是屬于實時中斷,分別進行處理。若是基本內核中斷,如果當前有實時任務正在運行,則只是設置一下中斷標志位, 懸掛此中斷,如果沒有實時任務運行,則調用基本內核的中斷處理程序;如果此中斷是實時中斷,就直接調用相對應的實時中斷處理程序。注意,實時中斷可以搶先 基本內核任務的執行。系統的中斷處理流程如圖3所示。
應用案例
工業控制是嵌入式實時操作系統的傳統應用領域,需要嚴格的實時處理功能、高可靠性和良好的開放性,對開發環境、可操作性、成本等也有特別的要求。因此本項研究以重大裝備的遠程監控系統作為其應用之一。
1.嵌入式遠程監控系統結構
應 用針對工業生產中使用的大型設備在連續運轉狀態下的遠程監控問題,研究用于重大裝備遠程監控的嵌入式裝置。系統主要包括輸入/輸出模塊(NetIO)和輸 入/輸出上位模塊(NetWeb),前者用于實現現場數據的采集(輸入),或用于現場裝置的控制(輸出),后者集成了Web功能,使得用戶可以通過互聯網 對輸入/輸出模塊進行訪問。兩類模塊通過網絡相連接,在本系統中為通過串行485總線。嵌入式遠程監控系統結構如圖4所示。
2.NetWeb對嵌入式Linux的功能驗證
圖4 嵌入式遠程監控體系結構
評論