引言 本文詳細介紹了嵌入式系統各個步驟的實現方法及其功能,給出了嵌入式系統的硬件平臺,研究基于ARM的μClinux的移植,并介紹了一種嵌入式工控網絡系統的具體設計過程。 1硬件平臺的設計 硬件平臺的搭建是嵌入式開發平臺設計的首要任務,本文采用比較流行的體系結構,并選擇S3C44BOX作為嵌入式處理器,然后圍繞S3C44BOX進行外圍器件的選型,設計了系統的硬件總體結構框圖,然后以單元電路為基礎,介紹了原理圖設計的詳細過程。 1.1系統硬件選型 嵌入式系統的核心部件是嵌入式處理器,系統硬件選型首先是選擇嵌入式處理器,然后圍繞該嵌入式處理器選擇各種外圍芯片,以實現各種擴展功能。本系統選擇三星公司基于ARM7TDMI的S3C4480X微處理器。該芯片可為手持設備及一般嵌入式應用提供一個成本低廉而又功能強大的微控制器解決方案。 1.2硬件結構設計 硬件平臺主要由電源電路、MCU核心電路、存儲器電路、UART接口、以太網接口、USB接口、LCD接口、RTC和IIC電路、JTAG接口和系統擴展接口等單元電路組成,圖1所示是一種基于S3C44BOX開發板的硬件平臺結構框圖。 1.3存儲器電路 圖2所示為S3C44BOX的地址空間分布圖。S3C44BOX采用統一編址方式,256MB地址空間分成8個MemoryBANKs,其中BANK6和BANK7是DRAM空間(DRAM的控制方式與SRAM的不一樣,不能混用)。 1.4以太網接口電路 RTLS019AS芯片集成了介質訪問控制子層(MAC)和物理層(PHY)功能,故能與大多數通用MCU進行接口,其較高的性價比使其成為一款廣泛使用的lOMbps全雙工以太網控制器。 圖3所示為RTL8019AS與S3C44BOX的連接圖,其中三個可編程的LED輸出可用于顯示RTL8019AS的工作情況。 2μClinux系統的移植 在μClinux這個英文單詞中,μ表示Micro,小的意思,C表示Control,控制的意思,所以,μClinux就是Micro-Control-Linux,字面上的理解就是“針對微控制領域而設計的Linux系統”。Linux是一種很受歡迎的操作系統,它與UNIX系統兼容,且開放源代碼。它原本被設計為桌面系統,現在廣泛應用于服務器領域。 2.1μClinux移植前的準備 移植μClinux時,首先必須在宿主機上裝redhat9.0操作系統,然后在redhat9.0下建立μClinux開發環境,也可以從http://www.μClinux.org/處下載μClinux的源代碼和工具包,然后進行安裝。 2.2內核和文件系統編譯 Linux作為一個自由軟件,其內核版本不斷更新。新的內核修訂了舊內核的bug,并增加了許多新的特性。如果用戶想要使用這些新特性,或想根據自己的系統度身定制一個更高效、更穩定的內核,就需要重新編譯內核。 由于所使用的flash只有2MB,這對嵌入式Linux系統來說要求比較高,因為內核和文件系統加起來不能超過2MB,本文的研發思路就是把內核和文件系統壓縮在一起,這樣,系統啟動的時候。內核將自動解壓縮到SDRAM,然后就可以在SDRAM上運行μClinux了。 2.3內核和文件系統配置 在μClinux-Samsung目錄下運行makemenueonfig后會首先出現Configuration啟動界面。在Configuration啟動界面中選擇TargetPlal-formSelection,通常具有下面幾個選項: 接下來可配置所需要的內核和文件系統。μClinux的配置分為兩部分,前一部分是通常的Linux內核配置,后一部分是μClinux文件系統配置。下面先進行μClinux的內核配置,μClinux的內核配置會出現μClinux內核配置界面,可根據界面進行內核配置。 配置完這部分以后,可退出并保存,然后,系統自動進入下一部分μClinux的文件系統配置。μClinux嵌入式操作系統所能實現的應用跟這部分的配置很有關系,下面可進行μClinux的文件系統配置部分,以完成μClinux文件系統的配置。 μClinux的內核和文件系統配置好后,就可以進行內核的編譯。 2.4編譯步驟 編譯時,可在μClinux-Samsung目錄下依次運行下列9個命令:makemenueonfig,makedep,makeclean,makelib_only,makeuser_only,makerotors,makeimage,make,makeimage。 運行完以上命令后,就會在μClinux-Sam-sung的images子目錄下生成三個文件,其中image.rom和image.ram是我們需要的鏡像文件。image.rom是一個壓縮的內核,在開發中,筆者把image.rom燒到flash中,并從flash處啟動,同時把image解壓到ram的Ox8000處,然后運行。image.ram是包含有調試信息的內核,可以直接用工具下載到開發板的ram中,比如用ICE直接把image.ram放到ram地址為Ox8000的地方,進行開發調試這種方式可使得開發調試更加方便。 3嵌入式工控Web服務器的實現 3.1嵌入式Web服務器的基本實現 嵌入式Web服務器可基于Socket套接字來開發,它主要由初始化模塊、監聽模塊、請求解析模塊、腳本引擎模塊、輸出模塊和命令模塊等組成,各模塊之間的關系如圖4所示。 μClinux下主要有三個Web服務器:httpd、thttpd和Boa。其中httpd是最簡單的一個Web服務器,它的功能最弱,不支持認證,不支持CGI。thttpd和Boa都支持認證、CGI等。功能都比較齊全。其中boa是一個單任務的http服務器,源代碼開放,性能比較高,占用系統資源也比較少。boa服務器在接收到請求時,不啟動多個服務器進程處理多個請求,而在一個進程內處理所有服務請求。為了實現動態Web技術,可選擇實現一個支持CGI的、非常適合于嵌入式系統的BoaWebServer。然后再通過CGI用C語言進行編程,就可以實現動態WEB。 3.2boaWebServer的移置 boa是一個單任務的http服務器,源代碼開放、性能高。目前,μC1inux的代碼中已經包含boa的源代碼。在μClinux下實現Boa時,需要對Boa做一些配置和修改。boa服務器的核心文件主要有boa.conf和mime.types,本設計主要通過對boa.conf和mime.types文件進行修改來實現。 3.3編譯內核 配置過程完成后,便可重新編譯內核。編譯時先選中Boa選項,并把編譯好的內核下載到開發板,再啟動μClinux,完成IP配置,啟動BoaWebServer,然后就可以通過IE訪問你的網頁了。如果想啟動μClinux時自動啟動BoaWebServer,則可修改rc文件,并進入/μClinux-amsung/ven-dors/Samsung/S3C44BOX目錄,再在運行腳本rc中增加如下兩行: “ifconfigeth0192.168.1.10 boa-c/home/&” 修改后,重新編譯內核,再下載到目標系統運行。這樣,運行μClinux后,不需要配置就可以直接通過IE來訪問網頁了。 3.4μClinux下的CGI監控技術 通過CGI(通用網關接口)可為Web服務器提供一個執行外部程序的通道,這種服務端技術可使瀏覽器和服務器之間具有交互性。CGI程序屬于外部程序,需要編譯成可執行文件才能在服務端運行。瀏覽器可將用戶輸入的數據送到Web服務器,Web服務器再將數據用STDIN送給CGI程序。在執行CGI程序后,還會訪問存儲數據的一些文檔,最后使用STDOUT輸出HTML形式的結構文件,再經Web服務器送回瀏覽器,即可顯示給用戶。 若CGI程序是本地程序,也需要編譯成可執行文件,以便在被CGI調用時運行。Web服務器將用戶數據傳輸給CGI程序,并重定向CGI程序的輸出到Web頁,這樣,CGI程序在處理時,再將數據封裝成HTML形式發送到輸出,從而在客戶端看到對應的Web頁。 訪問者可通過CGI程序遠程控制數碼管(模擬工業現場的控制),并顯示相應的數字。在CGI程序的編寫中,每個程序的大致框架都比較類同,其CGI程序流程如圖5所示,它主要是遵循HTTP協議的通訊。也包括對輸入輸出的讀寫和控制。 3.5嵌入式工業監控系統的應用 基于Internet的遠程監控有代理方案和嵌入式方案兩種實現方案。兩種實現方案均采用三層B/S體系結構,即表示層、應用邏輯層和數據層。三層B/S體系結構可避免兩層體系結構中客戶端程序單獨實現應用邏輯而產生的冗余;應用邏輯可在應用邏輯層上而不是在客戶層上實現。由于表示層與應用邏輯相分離,因而降低了網絡傳送的信息量,使系統具有更高的可伸縮性、可維護性和靈活性。本文討論的嵌入式方案的基本結構如圖6所示。 4結束語 本文推出的方案對每臺現場設備均配有微型嵌入式Web服務器,可負責對現場設備進行數據采集、數據存儲、數據轉發以及與監控主機進行數據的交互。該方案的優點是實時性強、可靠性高、現場設備的數量不受限制等。 |