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

標簽:
傳動網(wǎng)版權(quán)與免責聲明:凡本網(wǎng)注明[來源:傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為傳動網(wǎng)(connectcrack.com)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責任。
本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負版權(quán)法律責任。
產(chǎn)品新聞
更多>2025-10-09
2025-09-23
2025-09-23
2025-09-08
華為昇騰Atlas800iA2 910B服務(wù)器Deepsee...
2025-09-04
TaiShan(泰山)200 2280系列服務(wù)器 鯤...
2025-09-03