時間:2008-07-24 10:08:00來源:ronggang
圖1 系統硬件結構圖[/align]
軟件實現
軟件的實現包括兩個方面,一個是系統的內核,另一個是設備的驅動程序。
。1)首先編譯 Kernel的源代碼:
執行下列命令:
cd /usr/src/linux
make mrproper
make xconfig
會出現一個界面,可以根據自己的實際需要來選擇。在編譯內核的過程中,最繁雜的事情就是這步配置工作。在配置過程中,大部分選項可以使用其缺省值,只有小部分需要根據用戶不同的需要選擇。選擇的原則是將與內核其它部分關系較遠且不經常使用的部分功能代碼編譯成為可加載模塊,有利于減小內核的長度,減小內核消耗的內存,簡化該功能相應的環境改變時對內核的影響;不需要的功能就不要選;與內核關系緊密而且經常使用的部分功能代碼直接編譯到內核中。在選項Code maturity level options、Loadable module support、Processor type and features、Networking options、Network device support、ISDN subsystem、Character devices等分別選擇適合自己所需要的項目。File systems建議選擇相應的項目,為了以后擴充使用。
(2)為每個設備編寫程序
Linux系統的設備驅動程序完成的主要工作是:
、 對每個硬件設備進行初始化和釋放;
② 數據傳輸,將數據從內核傳到硬件設備,或者從硬件設備傳到內核,讀取應用程序傳送給硬件設備的數據和回送應用程序請求的數據;
③ 檢測和處理硬件設備出現的錯誤和異常;
Linux系統的設備驅動程序的主要組成部分有:
、 自動配置和初始化子程序;
、 服務于I/O請求的子程序;
、 中斷服務子程序;
根據所選擇的設備和設備所要完成的功能分別進行編寫。
4. 實時性解決辦法
實時操作系統是實時控制系統和實時處理系統的統稱。所謂實時就是要求系統及時響應外部條件的要求,在規定的時間內完成對該事件的處理,并控制所有實時設備和實時任務協調一致地運行。實時控制系統實質上是過程控制系統。實時操作系統首先考慮的是系統的實時性和可靠性。實時處理系統主要指對信息進行及時的處理。
高實時性是許多工業控制網絡的基本要求,Linux 在這樣的環境下還存在許多缺陷。它不是一個真正的實時操作系統,內核不支持事件優先級和搶占實時特性。那么,要將 Linux 系統改造成為適用于工業控制領域內的嵌入式系統必須解決一個重要的問題——實時性。所以,在開發嵌入式 Linux 的過程中,首要問題是擴展 Linux 的實時性能。目前把Linux改造為嵌入式實時系統的方法有兩個:一個方法是對Linux系統的內核進行改造;另一個方法是在 Linux 系統底層添加一個硬件抽象層,也就是添加一個實時內核進行改造。其目的都是為了保證系統會首先執行優先級更高的實時進程然后才是優先級低的普通進程,并且防止別的普通進程打斷實時進程的運行。
為達到系統實時性的要求,本文對Linux 內核進行改造的方法。改造方法主要是通過截取硬件底層中斷,在硬件上實現一個抽象層,通過抽象層來傳遞和控制 Linux 中斷。目前,為滿足實時性而進行的系統改造主要集中在雙內核、中斷和時鐘機制、內核狀態調整、進程間通信方式的調整和進程搶占式調度算法這五個方面:
第一, 雙內核技術
這種方法對于支持工業控制,數據采集等等有硬實時性要求的應用系統比較合適。所謂的雙內核主要是指,在標準的 Linux 內核的下面再提供子內核,這個子內核不是一個完整的內核,它沒有足夠的驅動程序,缺乏擴展庫,它是標準內核的補充,主要處理實時任務。而原來的 Linux 內核作為在其上運行的一個核心任務。在硬件中斷和原來的 Linux 內核之間加入一個實時內核,通過實時內核解決原 Linux 內核的關中斷問題,該實時內核始終不關閉硬件中斷,可以接受所有的中斷信號,當中斷信號需要實時進程來處理時,由優先級更高的實時進程搶占Linux內核。
第二,中斷和時鐘機制。
實時系統與外部中斷處理相關的一個重要的方面是“關閉中斷”處理機制,需要保證確認硬件外部中斷時內核不再重入,并且緊跟一個軟件中斷處理流程,實質就是用軟中斷來代替硬中斷。實時系統與外部中斷處理相關的另一個重要的方面是系統中斷嵌套的能力,即可以指定外部事件服務的相對優先級,并且保證關鍵的外部操作能夠提前處理。同時,可以改造時鐘機制來縮小軟中斷的切換時間。
第三,提高內核的可搶占性。
為了提供進程間通信和進程搶占式調度的良好實現,需要對進程狀態進行改造,完全的改造 Linux 內核為可強占內核。加一個搶占點來改良系統響應時間長的問題,所謂的搶占點就是,在這個點的時候如果系統中有更高優先級的進程就序,系統提供這樣一個機會高優先級的進程運行。那么就可在一個用戶進程在核心狀態執行時能被一個更高的優先級的可執行進程搶占。將實時進程包括在內核里,實時內核本身也通過內核模塊的方式進行裝載與卸載,其目的是為了方便進程間通信的及時進行,并且可以實現更好的進程搶占式調度算法。
第四,進程間通信方式調整。
用可搶占式內核的方法實現進程調度,需要采用關中斷或使用信號量機制來保護臨界區,需要提供進程間通信的若干實現方法。
第五,進程搶占式調度。
實時系統的調度必須滿足以下條件:進程的優先級通過 API 指定、調度器自動選擇并執行最高優先級的進程、調度在一個固定的時間周期里選擇和執行最高優先級的進程。系統需要提供滿足要求的調度方法。
5. 系統測試分析
為了保證系統的正常運行,在理論上通過的前提下,測試是必不可少的。限篇幅有限這里只將測試結果列表如下:
表5-1 測試結果統計

標簽:
傳動網版權與免責聲明:凡本網注明[來源:傳動網]的所有文字、圖片、音視和視頻文件,版權均為傳動網(www.cdcst56.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“傳動網”,違反者本網將追究其法律責任。
本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。
產品新聞
更多>2025-09-08
2025-08-06
2025-07-08
2025-06-30
2025-06-16
2025-06-09