摘 要:工業(yè)控制是嵌入式系統(tǒng)的應(yīng)用的重要領(lǐng)域,Linux 系統(tǒng)是嵌入式系統(tǒng)開發(fā)的有力工具,本文主要利用Linux系統(tǒng)來具體實現(xiàn)一個嵌入式工業(yè)控制系統(tǒng)。同時,所討論的實時系統(tǒng)的研究,為在一個系統(tǒng)中同時支持多種實時調(diào)度方法提供了可能性。
關(guān)鍵字:實時性 嵌入式系統(tǒng) 工業(yè)控制
1. 前言
嵌入式技術(shù)是21世紀最有生命力的新技術(shù)之一,目前已經(jīng)廣泛應(yīng)用于社會生活的各個方面。嵌入式系統(tǒng)的應(yīng)用與開發(fā)則是當(dāng)今計算機行業(yè)發(fā)展的一個熱點?,F(xiàn)今嵌入式軟件的應(yīng)用與開發(fā)的領(lǐng)域主要有:國防、移動通信、電子、辦公自動化、機/車頂盒、掌上電腦(或PDA)、手機軟件、工業(yè)控制、信息家電等領(lǐng)域。工業(yè)等各部門對智能控制需求的不斷增長,對嵌入式微處理器的實時性、運算速度、可擴充能力、系統(tǒng)可靠性、功耗和集成度等方面提出了更高的要求。
2. 嵌入式系統(tǒng)與工業(yè)控制網(wǎng)絡(luò)
美國電氣工程師協(xié)會(IEE)的一個定義:嵌入式系統(tǒng)是用來控制或監(jiān)視機器、裝置或工廠等大規(guī)模系統(tǒng)的設(shè)備。嵌入式系統(tǒng)通常具有如下特性:
?。?)通常只執(zhí)行特定功能;是在特定領(lǐng)域內(nèi)完成特定的功能的專用計算機系統(tǒng),比如,它可用于一種工業(yè)儀器,也可能用于航天設(shè)備中的某個電子裝置。這一點與一般桌上型辦公設(shè)備或數(shù)據(jù)庫系統(tǒng)有很大區(qū)別。
?。?)嵌入式系統(tǒng)中硬件配置一般是根據(jù)系統(tǒng)的性能指標來確定的;除了附加的調(diào)試接口外,沒有多余的硬件設(shè)備,一般是以計算機周邊器件構(gòu)成核心,其規(guī)??稍诖蠓秶鷥?nèi)變化。如從8051芯片到X86芯片。而且嵌入式系統(tǒng)中是軟件和硬件緊密結(jié)合。
?。?)嚴格的時序和穩(wěn)定性要求;這是因為在機器控制的大型系統(tǒng)中,程序運行稍有差錯則可能使得整個系統(tǒng)失去控制,甚至釀成災(zāi)害。而且系統(tǒng)一般不進行交互動作,所以要求系統(tǒng)的自動運行要穩(wěn)定、糾錯能力強,可靠運行。
?。?)具有實時性;因為在工業(yè)控制應(yīng)用中大多數(shù)是屬于過程控制,這些領(lǐng)域?qū)ο到y(tǒng)要求是必須具有實時性,而且還要求有實時性的嵌入式操作系統(tǒng)。
?。?)嵌入式系統(tǒng)的開發(fā)一般采用宿主機/目標機模式;在某個環(huán)境下調(diào)試好目標機器的軟件和硬件,才能使目標機器離開開發(fā)環(huán)境,從而獨立運行。
嵌入式系統(tǒng)是電腦軟件與硬件的綜合體,它是以應(yīng)用為中心,以計算機技術(shù)為基礎(chǔ),軟件硬件可裁剪,從而能夠適應(yīng)應(yīng)用系統(tǒng),對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統(tǒng)。它將操作系統(tǒng)和功能軟件集成于計算機硬件系統(tǒng)之中,簡單的說就是系統(tǒng)的應(yīng)用軟件與系統(tǒng)的硬件一體化,類似于BIOS的工作方式,具有軟件代碼小,高度自動化,響應(yīng)速度快等特點。特別適合于要求實時的和多任務(wù)的體系。
工業(yè)控制網(wǎng)絡(luò)是由傳感器、執(zhí)行機構(gòu)、顯示和數(shù)據(jù)記錄設(shè)備等組成,用于監(jiān)視和控制電氣設(shè)備的系統(tǒng)。通常除遇到系統(tǒng)不能自愈的故障需要人工干預(yù)排除外,均應(yīng)有自動實現(xiàn)監(jiān)控功能。在工業(yè)應(yīng)用中,控制網(wǎng)絡(luò)可以用于監(jiān)視設(shè)備的狀態(tài)、調(diào)節(jié)轉(zhuǎn)速和流量等、采集模擬輸入量、順序開關(guān)/起停設(shè)備、與主控機通信并在顯示器或?qū)iT定制的顯示設(shè)備上顯示各參量的大小和狀態(tài)。由于工業(yè)控制系統(tǒng)特別強調(diào)可靠性和實時性。控制網(wǎng)絡(luò)數(shù)據(jù)通信以引發(fā)物質(zhì)或能量的運動為最終目的。用于測量與控制的數(shù)據(jù)通信的主要特點是:允許對實時的事件進行驅(qū)動通信,具有很高的數(shù)據(jù)完整性。
智能儀表的出現(xiàn)推動著工業(yè)控制網(wǎng)絡(luò)的發(fā)展,新一代的工業(yè)控制網(wǎng)絡(luò)呼喚功能更強大的儀表和控制器的出現(xiàn),面向工業(yè)控制的嵌入式系統(tǒng)應(yīng)勢而生。
3. 系統(tǒng)實現(xiàn)
系統(tǒng)的實現(xiàn)包括硬件實現(xiàn)和軟件實現(xiàn)。
硬件實現(xiàn)
系統(tǒng)結(jié)構(gòu)框圖如圖1。兩個串行通信接口可以采用RS232。用以采集來自其他設(shè)備的遠程的數(shù)據(jù),然后由ARM微處理器進行處理,處理后的結(jié)果通過以太網(wǎng)接口分發(fā)給其他設(shè)備。為了調(diào)試的方便,F(xiàn)lash存儲器使用了兩個,512K的用于存儲引導(dǎo)裝載程序,2M的用來承載包含應(yīng)用程序的操作系統(tǒng)映像。此種設(shè)計方式可以使在啟動加載方式下,調(diào)試不同操作系統(tǒng)的應(yīng)用程序時,只需要簡單的更換包含對應(yīng)的操作系統(tǒng)的引導(dǎo)程序的Flash芯片就能做到。為了滿足大多數(shù)情況的需要,內(nèi)存選用容量為16M的16bit的芯片。10M以太網(wǎng)接口的設(shè)計是考慮到通用性。為了調(diào)試的方便,這里使用了一個JTAG(國際標準測試協(xié)議)接口,可以訪問其他系統(tǒng)資源,它還可以跟仿真器相連。USB接口分為兩個主機接口和一個設(shè)備接口。LED用來在調(diào)試和使用過程中的顯示數(shù)據(jù)結(jié)果。
[align=center]

圖1 系統(tǒng)硬件結(jié)構(gòu)圖[/align]
軟件實現(xiàn)
軟件的實現(xiàn)包括兩個方面,一個是系統(tǒng)的內(nèi)核,另一個是設(shè)備的驅(qū)動程序。
?。?)首先編譯 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)的項目,為了以后擴充使用。
?。?)為每個設(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)閉硬件中斷,可以接受所有的中斷信號,當(dāng)中斷信號需要實時進程來處理時,由優(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)計
6. 結(jié)論
本論文的創(chuàng)新點在于:(1)提出了一種嵌入式工業(yè)控制網(wǎng)的硬件模型;(2)詳細的分析了影響工業(yè)控制過程實時性的因素。通過測試結(jié)果可以發(fā)現(xiàn),本文提出的硬件模型性能較好,能夠滿足大多數(shù)工業(yè)控制的需要。同時,在吸取前人關(guān)于實時性分析問題經(jīng)驗的基礎(chǔ)上,提出了自己的觀點,并用測試實驗得以驗證。
參考文獻
[1]班建民,付保川等.基于嵌入式數(shù)據(jù)庫的實時數(shù)據(jù)采集方法.微計算機信息.2005,10
[2]田霖,李正熙,童朝南.實時仿真與嵌入式系統(tǒng).微計算機信息.2005,13
[3]王保進.一種提高構(gòu)件化嵌入式操作系統(tǒng)性能的方案.微計算機信息.2005,7
[4]許海燕,付炎.嵌入式系統(tǒng)技術(shù)與應(yīng)用.北京:機械工業(yè)出版社,2003
[5]雷澎.Linux 的內(nèi)核與編程.北京:機械工業(yè)出版社,2000
[6]陳莉君.Linux 操作系統(tǒng)內(nèi)核分析.北京:人民郵電出版社,2000
[7]鄒思軼.嵌入式 Linux 設(shè)計與應(yīng)用.北京:清華大學(xué)出版社,2002