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以及Apache?PHP?MySQL等應用程序)迅速搭建前臺數據采集系統,以實現測控系統和后臺管理系統的通訊。圖1所示是這種實現方案的系統框圖。這種方式的優點有:
(1)不需專用的通信線路即可用現成的INTER-NET網絡將數據傳送到任何地方。
(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內核和虛擬內存機制進行改造,即可保證測控任務完成的實時性和可靠性。可以預見,這種方案在工業控制領域具有很好的應用前景,而且具有開發周期短、系統性能穩定可靠、適應性強等特點。
- 嵌入式L(6817)
瑞薩電子嵌入式產品線在醫療應用領域中的布局思路
4354
Linux 2.6內核在嵌入式開發的應用
Linux嵌入式和單片機嵌入式的區別?
Linux作為嵌入式操作系統的優勢是什么?如何建立嵌入式Linux?
嵌入式Linux C概述
嵌入式Linux在哪個領域更受青睞
嵌入式Linux實時化技術是什么?
嵌入式Linux平臺怎么實現視頻采集發送端?
嵌入式Linux怎么移植實時設備驅動程序?
嵌入式Linux驅動領域開發
嵌入式linux學***匯總
嵌入式領域中常用的5種通信協議是什么
嵌入式開發之Linux基礎講解視頻教程分享!
嵌入式技術在機電控制系統有什么應用?
嵌入式系統電子的實時性是什么?
嵌入式系統的實時性與快速性有關
工業嵌入式計算平臺開發招聘
C++在嵌入式領域的用處是什么?
什么是嵌入式Linux?
什么是嵌入式Linux?
什么是嵌入式linux
以Arm-Linux為平臺怎么實現嵌入式智能家居控制系統?
關于嵌入式ARM學習領域
創客學院嵌入式linux培訓教程 嵌入式系統發展的4個主要階段
基于Linux的嵌入式工業測控系統該怎么設計?
基于嵌入式Linux的工業控制應用
如何優化嵌入式Linux的啟動時間
如何使用嵌入式Linux的工業控制器開發字符設備驅動程序來驅動步進電動機?
如何構建嵌入式Linux NFS根文件系統?
如何用QT開發嵌入式Linux工業平板界面免環境搭建
學習嵌入式有前途嗎
學習嵌入式有沒有前途
描述嵌入式Linux的應用領域
細說嵌入式領域的專業廠商認證
給嵌入式linux初學者的建議
誰知道SOPC技術在嵌入式工業以太網中有哪些應用呢?
嵌入式LINUX設計與應用
25嵌入式linux學習
78嵌入式Linux系統開發基礎
68基于Linux的嵌入式應用淺析
23基于RTAI的嵌入式Linux硬實時性能的研究與實現
27基于Linux的嵌入式工業測控系統
8基于LINUX的嵌入式瀏覽器的設計與實現
28嵌入式Linux
1108嵌入式Linux實時化技術
1629
嵌入式Linux智能家居控制系統設計
1103嵌入式Linux和嵌入式Linux開發環境詳解
135基于嵌入式Linux系統的軟鍵盤實現
59基于Linux操作系統ARM體系的嵌入式工控一體機設計與實現
5基于Linux的嵌入式系統工業測控系統的設計方案解析
0嵌入式Linux操作系統簡介
1嵌入式linux學習誤區
728嵌入式Linux與Android聯盟成立,主要在工業嵌入式市場推動開放
1308嵌入式linux怎么學?linux教程之《嵌入式Linux應用程序開發標準教程》
38嵌入式Linux下CAN接口調試
3581怎樣成為優秀的嵌入式linux工程師
4339嵌入式系統在工業控制領域中的應用
5789嵌入式工業電腦的應用領域
1370【嵌入式】基于ARM的嵌入式Linux開發總結
28嵌入式Linux CAN
6什么是嵌入式Linux?嵌入式工程師為什么要學Linux?
3嵌入式linux和桌面linux的區別
4【嵌入式】構建嵌入式Linux系統(uboot、內核、文件系統)
42嵌入式linux開發實戰——項目1認識嵌入式系統
9嵌入式 Linux
4嵌入式Linux UART
8嵌入式linux和物聯網,嵌入式Linux或RTOS:用于物聯網
15嵌入式 Linux 的基礎知識介紹
9嵌入式linux和物聯網,嵌入式Linux或RTOS:用于物聯網
17【嵌入式Linux(基礎篇)】從標準Linux到嵌入式Linux + 嵌入式Linux知識架構
34嵌入式Linux
14嵌入式Linux network
15嵌入式Linux路線
19嵌入式linux會不會中毒,嵌入式linux,一個發燒友不能錯過的東西!
6Linux嵌入式系統開發,嵌入式Linux開發教程
30關于嵌入式領域的職業發展方向
2072嵌入式linux開發板芯片的工作原理
1300嵌入式linux開發板怎么操作
1220
電子發燒友App


評論