張祖鷹
ZHANG Zu-ying
(南京化工職業技術學院,南京 210048)
嵌入式系統是電腦軟件與硬件的綜合體,它是以應用為中心,以計算機技術為基礎,軟件硬件可裁剪,從而能夠適應應用系統,對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統。它將操作系統和功能軟件集成于計算機硬件系統之中,簡單的說就是系統的應用軟件與系統的硬件一體化,類似于BIOS的工作方式,具有軟件代碼小,高度自動化,響應速度快等特點,適合于要求實時的和多任務的體系。
在網絡日益重要的今天,越來越多的嵌入式產品有了聯網的要求。Linux對網絡有很強的支持能力,甚至比大多數操作系統的性能更好。實際上,Linux的發展是人們在網絡上的相互合作下進行的,且Linux本來就是用在網絡上的。Linux幾乎支持所有常見的Internet協議,如FTP、POP、DNS、NIS等等,Linux也適合各種局域網。
基于嵌入式linux的系統以嵌入式微處理器為核心,運行嵌入式Linux操作系統。應用程序可通過網絡進行更新,通過鍵盤進行人機對話,數據可通過LCD現場顯示,重要數據可以文件形式保存在Flash等閃存存儲器中,數據和報警信息可通過串口向上位機傳輸,也可通過以太網口向工業以太網或Internet發布信息,用戶還可通過網絡實現遠程監控、遠程維護。更為關鍵的是可充分利用Internet上已有的軟件和協議,如ftp、http、Apache、PHP、MySQL等應用程序,迅速搭建前臺數據采集系統、測控系統和后臺管理系統的通信。其優點是不需要專用的通信線路,可用現成的Internet網絡傳送數據;可以傳送音響和圖像;Internet的協議是現成和公開的,大到幾十MB的MicrosoftIE瀏覽器,小到只有600KB的Mosaic瀏覽器都可以對網絡數據進行讀取。系統結構如圖1。

圖1 系統結構圖
對于嵌入式設備,系統結構框圖如圖2。硬件部分,兩個串行通信接口可以采用RS232。用以采集來自其他設備的遠程的數據,然后由ARM微處理器進行處理,處理后的結果通過以太網接口分發給其他設備。Flash存儲器可為一到兩個,512K的用于存儲引導裝載程序,2M的用來承載包含應用程序的操作系統映像。此種設計方式可以使在啟動加載方式下,調試不同操作系統的應用程序時,只需要簡單的更換包含對應的操作系統的引導程序的Flash芯片就能做到。滿足大多數情況的需要,內存選用容量可為16M的16bit的芯片。10M以太網接口的設計是考慮到通用性。為了調試的方便,這里使用了一個JTAG(國際標準測試協議)接口,可以訪問其他系統資源,它還可以跟仿真器相連。USB接口分為兩個主機接口和一個設備接口。LED用來在調試和使用過程中的顯示數據結果。

圖2 嵌入式設備結構圖
軟件實現,軟件的實現包括兩個方面,一個是系統的內核,另一個是設備的驅動程序。
執行下列命令:

會出現一個界面,可以根據自己的實際需要來選擇。在編譯內核的過程中,最繁雜的事情就是這步配置工作。在配置過程中,大部分選項可以使用其缺省值,只有小部分需要根據用戶不同的需要選擇。選擇的原則是將與內核其它部分關系較遠且不經常使用的部分功能代碼編譯成為可加載模塊,有利于減小內核的長度,減小內核消耗的內存,簡化該功能相應的環境改變時對內核的影響;不需要的功能就不要選;與內核關系緊密而且經常使用的部分功能代碼直接編譯到內核中。在選項Code maturity level options、Loadable module support、Processor type and features、Networking options、Network device support、ISDN subsystem、Character devices等分別選擇適合自己所需要的項目。File systems建議選擇相應的項目,為了以后擴充使用。
Linux系統的設備驅動程序完成的主要工作是:
1)對每個硬件設備進行初始化和釋放;
2)數據傳輸,將數據從內核傳到硬件設備,或者從硬件設備傳到內核,讀取應用程序傳送給硬件設備的數據和回送應用程序請求的數據;
3)檢測和處理硬件設備出現的錯誤和異常;
Linux系統的設備驅動程序的主要組成部分有:
1)自動配置和初始化子程序;
2)服務于I/O請求的子程序;
3)中斷服務子程序;
根據所選擇的設備和設備所要完成的功能分別進行編寫。
Linux不僅能很好地用于通用計算機,而且已很好地移植于嵌入式系統。嵌入式Linux,就是經過小型化裁減,而且可以被燒制到容量僅為幾KB或幾MB的存儲器中,不需要硬盤,應用于各種特定的嵌入式環境的專用中,不需要硬盤,應用于各種嵌入式環境的專用操作系統。它保留了Linux的大多功能,特別是網絡支持能力。Uclinux就是一個優秀的嵌入式Linux操作系統。在嵌入式系統中,操作系統和所有的應用軟件都被固化到Flash等存儲設備中。在嵌入式系統中很少使用外存。嵌入式系統的啟動往往也是“自動”的,即從上電到處于工作狀態,不用人的介入。這是嵌入式設備應用的要求和特點。嵌入式網絡設備的啟動,很自然會遇到地址的設置問題。
對于通用計算機,其以太網的MAC地址一般是不能變的,它是由網卡生產廠家固化在網卡中的。除了網卡生產廠家,很少有其他人關心它。而IP地址,可以根據用戶的需要設為指定值。其設定的IP地址是存儲在硬盤上的,操作系統啟動時,可以自動取得該值并啟用它。
嵌入式網絡設備中地址的設置有它的特點:
1)關心和接觸嵌入式網絡設備MAC地址的人比關心和接觸通用計算機MAC地址的人多得多。因為設計、研究和生產嵌入式網絡設備的廠家比網卡的廠家多得多。
2)在嵌入式設備中往往沒有硬盤,它的操作系統和應用軟件通常是打包放在Flash等存儲設備中。系統啟動時,把Flash中的代碼釋放到內存中,再在內存中運行。比如嵌入式操作系統Uclinux,在用于S3C4510B這樣的帶以太網接口的嵌入式設備時,把內核和應用程序代碼壓成一個映像文件包,在包中有網絡部分MAC及IP地址。但這些MAC及IP地址的值是在編譯映像文件時設定的,而且在編譯后的映像文件中的值是不能直觀地看到的,而且在編譯后的映像文件中的值是不能直觀地看到的,它是壓縮了的二進制數據,不方便地映像文件中直接更改MAC及IP地址的值。
3)對于使用同一映像文件的嵌入式網絡設備,如果不做進一步的處理,其MAC及IP地址是相同的。這顯然不能滿足應用,因為不同的設備應該有不同的MAC及IP地址。而編譯生成映像文件往往要用十幾甚至幾十分鐘。對于生產廠家,不可能為每臺設備編譯一個特定的映像文件。
嵌入式網絡設備系統的MAC及IP地址設置的基本思想是:把MAC及IP地址存放在Flash的未用扇區(一般在高扇區),嵌入式操作系統啟動后,自動運行一個程序去讀取MAC及IP地址并設置它。
用戶使用的方法是通過計算機串口與網絡設備的RS232接口(即串口)相連,使用超級終端的方式,運行網絡設備中的程序把數據寫入Flash中。
嵌入式網絡設備的“身份證”——MAC及IP地址的設置,與通用計算機的設置有獨特之處。嵌入式網絡設備往往沒有硬盤,不能像通用計算機那樣操作;也不可能為每一臺設備“量身”編譯映像文件。可以把MAC及IP地址存放在Flash等存儲設備上,嵌入式操作系統啟動后,自動運行一個程序去讀取MAC及IP地址并設置它。這樣就可以在同一映像文件包下方便地配置嵌入式網絡設備MAC及IP地址。
如今,互聯網的應用正在轉向以嵌入式設備為中心。系統與Internet的結合實現網絡化是一種必然的趨勢。把嵌入式linux微內核嵌入到32位MCU系統中,通過構造TCP/IP多種網絡協議和基本網絡通信協議,充分利用嵌入式操作系統對底層硬件和網絡協議的支持,
并對系統實時性的要求改造linux內核和虛擬內存機制來保證任務完成的實時性和可靠性,在各類應用領域有很好的前景,具有開發周期短、系統穩定可靠、適應性強等特點。
[1]班建民,付保川等,基于嵌入式數據庫的實時數據采集方法[J].微計算機信息,2005,10.
[2]田霖,李正熙,童朝南.實時仿真與嵌入式系統[J].微計算機信息,2005,13.
[3]王保進,一種提高構件化嵌入式操作系統性能的方案[J].微計算機信息,2005,7.
[4]許海燕,付炎.嵌入式系統技術與應用[M].北京:機械工業出版社,2003
[5]雷澎,Linux 的內核與編程[M].北京:機械工業出版社,2000.
[6]陳莉君,Linux 操作系統內核分析[M].北京:人民郵電出版社,2000.
[7]鄒思軼,嵌入式 Linux 設計與應用[M].北京:清華大學出版社,2002.
[8]王學龍,嵌入式Linux系統設計與應用[M].北京:清華大學出版社,2001.
[9]張星燁,基于Linux的嵌入式系統在測控系統中的設計與應用[J].貴州工業大學學報,2002,(4).
[10]waynewolf,著,孫玉芳,譯.嵌入式計算系統設計原理[M].北京:機械工業出版社,2002.