嵌入式linux在工業控制領域中的應用

來源:互聯網
上載者:User

1 前言

隨著Internet的飛速發展,網路應用越來越廣泛,對各種工業控制裝置的網路功能要求也越來越高。當前的要求是希望工業控制裝置能夠支援TCP/IP以及其它Internet協議,從而能夠通過使用者熟悉的瀏覽器查看裝置狀態、設定裝置參數,或者將裝置採集到的資料通過網路傳送到Windows或Unix/Linux伺服器上的資料庫中。這就要求工控系統必須具備兩方面的功能:一是要在現場完成複雜的測控任務,因為通常一些任務都具有一定的即時性要求;二是要求測控系統能夠與某一類型的控制網相連,以實現遠程監控。在目前應用的大多數測控系統中,嵌入式系統的硬體採用的是8/16位單片機;軟體多採用組合語言編程,由於這些程式僅包含一些簡單的迴圈處理控制流程程。因此,單片機與單片機或上位機之間的通訊通常通過RS232、RS485來組網。這些網路存在通訊速度慢、連網功能差、開發困難等問題。工業乙太網路已逐步完善,在工業控制領域獲得越來越多的應用。工業乙太網路使用的是TCP/IP協議,因而便於連網,並具有高速控制網路的優點。

現在,32位嵌入式CPU價格的下降和效能指標的提高,為嵌入式系統的廣泛應用提供了可能。那麼,限制嵌入式系統發展的瓶頸就突出地表現在軟體方面。儘管從上世紀八十年代末開始,已經陸續出現了一些嵌入式作業系統(比較著名的有Vxwork、pSOS、Neculeus和Windows CE等),但這些專用作業系統都是商業化產品,其高昂的價格使許多生產低端產品的小公司望而卻步;而且,原始碼的封閉性也大大限制了開發人員的積極性。嵌入式系統需要的是一套高度簡練、介面友善、品質可靠、應用廣泛、易開發、多任務,並且價格低廉的作業系統。如今,業界已經達成共識:即嵌入式linux是大勢所趨。 嵌入式Linux作業系統以價格低廉、功能強大、易於移植等特點而正在被廣泛採用,並已成為一種新興力量。

2 嵌入式linux技術

嵌入式Linux是按照嵌入式作業系統的要求而設計的一種小型作業系統,它由一個Kernel(核心)及一些根據需要進行定製的系統模組組成。Kernel一般只有幾百kB左右,即使加上其它必須的模組和應用程式,所需的儲存空間也很小。它具有多任務、多進程的系統特徵,有些還具有即時性。一個小型的嵌入式Linux系統只需要引導程式、Linux微核心、初始化進程3個基本元素。運行嵌入式Linux的CPU可以是x86、Alpha、Sparc、MIPS、PPC等。與這些晶片搭配的主板都很小,通常只有一張PCI卡大小,有的甚至更小。嵌入式Linux所需的儲存空間不是軟磁碟、硬碟、Zip盤、CD-ROM、DVD這些眾所周知的常規儲存空間,它主要使用Rom、CompactFlash、M-Systems的DiskOnChip、Sony的MemoryStick、IBM的MicroDrive等體積極小(與主板上的BIOS大小相近),且儲存容量不太大的儲存空間。它的記憶體可以使用普通的記憶體,也可以使用專用的RAM。

與其它嵌入式作業系統相比,Linux的原始碼是開放的,不存在黑箱技術。Linux作為一種可裁剪的軟體平台系統,很可能發展成為未來嵌入式裝置產品的絕佳資源。Linux與生俱來的優秀網路血統更為今後的發展鋪平了一條寬廣平坦的大路。因此,在保持Linux核心系統更小、更穩定、更具價格競爭力等優勢的同時,對系統核心進行即時性最佳化,更加使之能夠適應對工業控制領域高即時性的要求。這也正是嵌入式linux作業系統在嵌入式工控系統中的發展所在。同時也使Linux成為嵌入式作業系統中的新貴。

標準的Linux核心通常駐留在記憶體中,每一個應用程式都是從磁碟運到記憶體上執行。當程式結束後,它所佔用的記憶體就被釋放,程式就被下載了。而在一個嵌入式系統裡,可能沒有磁碟。有兩種途徑可以消除對磁碟的依賴,一是在一個簡單的系統裡,當系統啟動後,核心和所有的應用程式都存在記憶體裡。這是大多數傳統的嵌入式系統的工作模式,同樣Linux。第二種就是linux所特有的功能,因為Linux已經有能力“載入”和“卸載”程式,因此,一個嵌入式系統就可以利用它來節省記憶體。一個比較典型的系統有大約8MB到16MB的快閃記憶體和8MB RAM而快閃記憶體可以被用作檔案系統。用快閃記憶體驅動程式作為從快閃記憶體到檔案系統的介面就是一種選擇。當然,也可以用一個快閃記憶體磁碟。用快閃記憶體來擺脫系統對一個磁碟的需求(依賴)具有DiskOnChip技術以及CmopactFlash卡等方式。

用來串連Flash Memory和檔案系統的程式都以檔案形式儲存在Flash檔案中,需要時可以裝入記憶體,這種動態、根據需要載入的能力是支援其它一系列功能的重要特徵。它能使初始化代碼在系統引導後被釋放。實際上,Linux同樣還有很多核心外啟動並執行公用程式,這些程式通常在初始化時運行一次,以後就不再運行。而且,這些公用程式可以用它們相互共有的方式一個接一個地按順序運行。這樣,相同記憶體空間可以被反覆使用以“召入”每一個程式,就象系統引導一樣。這樣可以節省記憶體,特別是那些配置一次以後就不再更改的網路堆棧。如果將Linux可載入模組的功能包括在核心裡,驅動程式和應用程式就都可以被載入。由於它可以檢查硬體環境並且為硬體裝上相應的軟體,從而消除了用一個程式佔用許多Flash Memory來處理多種硬體的複雜性。另外,軟體的升級更加模組化,可以在系統運行時在Flash上升級應用程式和載入驅動程式,其配置資訊和已耗用時間參數可以作為資料檔案儲存在Flash中。

3 嵌入式工業控制網路的實現方案

基於嵌入式linux的工控系統以嵌入式微處理器為核心來運行嵌入式Linux作業系統。應用程式可通過網路進行更新,並可通過鍵盤進行人機對話,資料可通過LCD現場顯示,重要資料可用檔案形式儲存在Flash等快閃記憶體儲存空間中;資料和警示資訊可通過串口向上位機傳輸,也可以通過乙太網路向工業乙太網路或Inernet發布,使用者還可通過網路實現遠程監控和遠程維護。更為關鍵的是,可充分利用Internet上已有的軟體和協議(如:ftp,http以及ApachePHPMySQL等應用程式)迅速搭建前台資料擷取系統,以實現測控系統和後台管理系統的通訊。圖1所示是這種實現方案的系統框圖。這種方式的優點有:

(1)不需專用的通訊線路即可用現成的INTER-NET網路將資料傳送到任何地方。

(2)不僅能夠傳遞資料訊號,也可以傳遞音頻和映像訊號。

(3) 由於目前的INTERNET協議是現成和公開的,因此,利用大到幾十兆的 Microsoft IE瀏覽器,或小到只有600kB的Mosaic瀏覽器都可以對網路資料進行讀取。

4 系統設計

4.1 硬體設計

嵌入式系統的硬體運行平台是開發應用程式的基礎,整個開發板可基於IntelR SA-1110 微處理器架構。

圖2所示是一個嵌入式系統的硬體結構框圖。該硬體針對網路服務的應用選擇了Intel系列中的strongARM MCU。StrongARM SA-1110是一款高效能、低價位、高整合度微處理器。SA-1110晶片內部整合有能以206MHz啟動並執行32-bit IntelR Stron-gARM* RISC處理器,以及速度可達100 MHz 的儲存空間匯流排和靈活的儲存空間控制器,可支援SDRAM、 SMROM 以及variable-latency I/O 裝置,並可為系統設計提供較高的儲存頻寬。由於SA-1110可以適應較大流量的網路應用,因而可為運行Linux提供硬體上的支援。此外,SA-1110還在開發板上整合有32MB的SDRAM、8 MB的FLASH、10 baseT乙太網路介面、RS232/RS485串口、I/O介面以及擴充FLASH卡儲存空間等。有關SA-1110更詳細的資料可參考有關資料。

4.2 軟體設計

嵌入式作業系統是整個嵌入式系統的核心。如前面所述,嵌入式系統在記憶體容量和儲存容量不足的情況下,必須對linux進行裁減設計。在裁剪過程中,所涉及的主要技術有下面幾種。

(1)核心的精簡

標準Linux是面向PC的,它整合了許多PC所需要而嵌入式系統並不需要的功能。因此,對一些可獨立加上或卸下的功能塊,可在編譯核心時,僅保留嵌入式系統所需的功能模組,而刪除不需要的功能塊。這樣,重新編譯過的核心就會顯著減小。

(2)虛擬記憶體機制的屏蔽

經過分析發現,虛擬記憶體是導致Linux即時性不強的原因之一。在工業控制中,一些任務要滿足一定的即時性要求,屏蔽核心的虛擬記憶體管理機制可以增強Linux的即時性。當要更改核心的某項機制時,一般不必大規模地寫代碼,可採用條件編譯的方法。同時由於linux系統對應用進程採用的是公平的時間分配調度演算法,但這一演算法也不能保證系統的即時性要求,因此要求對其變更。更改途徑有兩種:一是通過POSIX,二是通過底層編程。筆者是通過linux的即時有名管道(FIFO)的特殊隊列來處理即時任務的先後順序。實際上,即時有名管道就象即時任務一樣從不換頁,因而可以大大減少由於記憶體翻頁而造成的不確定延時。

圖3給出了Linux的工作原理框圖。

(3)裝置驅動程式的編寫

確定了核心的準系統後,就要為特定的裝置編寫驅動程式,可按照在Linux下編寫驅動程式的規則進行編寫。編寫的裝置驅動程式應當具有以下功能:

●對裝置進行初始化和釋放;

●完成資料從核心到硬體裝置的傳送和從硬體讀取資料兩項功能;

●讀取應用程式傳遞給裝置檔案的資料以及回送應用程式請求的資料;

●檢測和處理裝置出現的錯誤。

(4)開發基於快閃記憶體的檔案系統JFFS

應用程式和重要資料通常以檔案的形式被存放在快閃記憶體檔案系統中。JFFS2 檔案系統是日誌結構化的,這意味著它基本上是一長列節點。每個節點包含著有關檔案的部分資訊。JFFS2 是專門為象快閃記憶體晶片那樣的嵌入式裝置建立的,所以它的整個設計提供了更好的快閃記憶體管理,因而具有其它檔案系統不可比擬的優點。具體如下:

●JFFS2 在扇區層級上執行快閃記憶體擦除/寫/讀操作要比 Ext2 檔案系統好。

●JFFS2 提供了比 Ext2fs 更好的崩潰/掉電安全保護。當需要更改少量資料時,Ext2 檔案系統會將整個扇區複製到記憶體(DRAM)中,並在記憶體中合并成新資料再寫回整個扇區。而JFFS2則可以隨時更改需要的(不是重寫)整個扇區,同時還具有崩潰/掉電安全保護功能。

實現上述幾個步驟後,一個小型的Linux作業系統就構造完成了。構造後的Linux包括進程管理、記憶體管理和檔案管理等三部分。它支援多任務並行,有完整的TCP/IP協議,同時Linux內建有對乙太網路控制器的支援,可以通過乙太網路口連到乙太網路上,以實現遠程配置與監控。

將裁剪好的核心移植到所用的目標板上時,首先應將核心編譯成針對該處理器的目標代碼。由於不同硬體體系的移植啟動代碼會有所不同,因此,一些核心程式可能要改寫。涉及到編寫Linux的引導代碼和修改與體繫結構相關部分的代碼主要是啟動引導、記憶體管理和中斷處理部分。將M-System公司的DOC2000作為系統的啟動裝置時,引導代碼可以放在DOC上。這樣系統加電後,引導代碼即可進行基本的硬體初始化,然後把核心映象裝入記憶體並運行,最後,再將調試好的核心和應用程式燒錄到快閃記憶體中。由於此時裁剪後的Linux已成功移植到目標平台上,因此,在啟動可啟動並執行開發系統時,就可以根據具體的應用來開發應用程式。如資料擷取模組、資料處理模組、通訊和資料發布模組等等。

5 結束語

如今,互連網應用正在轉到以嵌入式裝置為中心,因此,用工控系統與Internet相結合來實現網路化已是一種必然的趨勢。而把嵌入式linux微處理器核心嵌入到基於StrongARM SA1110 的32位MCU系統中,然後通過構造TCP/IP多種網路通訊協定和基本網路通訊協定,再利用嵌入式作業系統對底層硬體和網路通訊協定的支援,以及對工控系統即時性要求的lin-ux核心和虛擬記憶體機制進行改造,即可保證測控任務完成的即時性和可靠性。可以預見,這種方案在工業控制領域具有很好的應用前景,而且具有開發週期短、系統效能穩定可靠、適應性強等特點。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.