基于uClinux的網(wǎng)絡(luò )化遠程監控系統設計
4 系統軟件的設計
4.1 uClinux操作系統的移植
由于嵌入式websever硬件資源有限,在此平臺上只能運行一個(gè)小型的操作系統??紤]到硬件的特點(diǎn)和對系統的功能要求等因素,我們選擇了一款目前比較成熟的uClinux操作系統,并在此基礎上實(shí)現了嵌入式webserver。uClinux從標準的Linux內核派生而來(lái),通過(guò)對內存管理和進(jìn)程管理等相關(guān)方面進(jìn)行改寫(xiě),滿(mǎn)足無(wú)MMU處理器的開(kāi)發(fā)要求。它繼承了Linux穩定而優(yōu)良的性能,同時(shí)通過(guò)個(gè)性化的內核定制,能夠更好的滿(mǎn)足嵌入式應用的多樣化需要,提供豐富的應用軟件支持。
為了使uClinux能運行于硬件平臺,必須對uClinux進(jìn)行移植。uClinux的移植可以修改內核中相關(guān)文件來(lái)實(shí)現。要修改的文件很多,不能一一介紹,主要有以下幾處: (1)linux/arch/mach-S3C44B0X目錄下處理器結構的,如:arch.c、irq.c等。arch.c指定了系統啟動(dòng)時(shí)用到的地址,按照硬件設計的不同,地址將有所不同;irq.c是與中斷處理相關(guān)的程序。由于linux所支持體系結構的種類(lèi)繁多,所以對一個(gè)新型的體系,其低級例程可以模仿與其相似的體系例程編寫(xiě),在這里可以從mach-S3C4510目錄下的文件修改得到。(2)include/asm-armnommu /arch-S3C44B0X下相關(guān)文件,如:dma.h、hardware.h、irq.h、system.h、time.h等。dma.h這條文件定義了DMA通道,以及DMA可以使用的內存空間。hardware.h件定義了內存地址和10地址,根據設計的硬件電路不同而不同。irq.h中定義了 fixup_irq()、irq_init_irq()等函數。system.h在該文件中需要定義兩個(gè)函數:arch-idle()和arch- reset()。time.h實(shí)現了定時(shí)器中斷處理s3c44b0x_timer_interrupt()和相關(guān)函數。(3)各級相關(guān)makefile。在交叉編譯環(huán)境下編譯內核,當編譯結束時(shí)會(huì )生成內核的鏡像文件image.rom,將其和bootloader一起燒寫(xiě)在板子的Flash中,重新加電通過(guò)串口可以觀(guān)測到內核的啟動(dòng)信息,證明系統移植成功。
4.2 守護進(jìn)程的實(shí)現
uClinux移植完成后就可以在此平臺上進(jìn)行應用程序開(kāi)發(fā)了。系統開(kāi)發(fā)的主要功能要求是使系統響應遠程客戶(hù)機的請求,完成特定的操作,同時(shí)能夠自動(dòng)的將本地的監測數據傳送到遠程客戶(hù)機上。根據這一要求,必須對在服務(wù)器上實(shí)現一個(gè)守護進(jìn)程。該程序在uClinux下用C語(yǔ)言編寫(xiě),當uClinux操作系統啟動(dòng)后會(huì )自動(dòng)運行,流程圖如圖3所示。
圖 3
4.3 嵌入式Webserver的實(shí)現
考慮到硬件資源的限制,這里我們選擇uClinux下的boa服務(wù)器。Boa是一款單任務(wù)的HTTP服務(wù)器,它通過(guò)建立HTTP請求列表來(lái)處理多路連接請求,而且它只為CGI程序創(chuàng )建新的進(jìn)程,這樣就節省了大量的系統資源, 因此,Boa具有很高的HTTP請求處理速度和效率,在嵌入式系統中具有很高的應用價(jià)值。要在uClinux上運行boa需要對uClinux進(jìn)行修改, 在user/Makefile,加入dir_$(CONFIG_USER_BOA_SRC_BOA) += boa;在config/config.in中加入
comment 'Network Applications'
bool 'boa' CONFIG_USER_BOA_SRC_BOA
在uClinux-dist/vendors/Samsung/44b0/rc中加入一行ifconfig eth0 202.117.0.2 up,再增加一行腳本命令boa ,把Default.html定義為遠程客戶(hù)瀏覽的控制頁(yè)面,放在/uClinux-dist/romfs下面[3]。最后,在進(jìn)行內核配置時(shí)make Menuconfig時(shí)選中boa ,重新編譯內核,將最終生成的文件燒寫(xiě)進(jìn)Flash中即可。
4.4 客戶(hù)端軟件實(shí)現
用戶(hù)端使用了Java語(yǔ)言編寫(xiě)的應用程序瀏覽該嵌入式Webserver上的html信息,并完成數據處理和相應的控制功能。主要包括:產(chǎn)生發(fā)送至Webserver的指令流,顯示從Webserver返回的數據;當命令執行過(guò)程中所要執行的信息的提示;對返回數據的簡(jiǎn)單處理等等。
5 結束語(yǔ)
本文作者創(chuàng )新點(diǎn):本文克服單片機在組建大型網(wǎng)絡(luò )方面的局限,提出了基于uClinux的網(wǎng)絡(luò )化遠程監控系統。該系統充分利用以太網(wǎng)網(wǎng)絡(luò )的諸多優(yōu)點(diǎn)以及CAN總線(xiàn)網(wǎng)絡(luò )在工業(yè)控制方面的廣泛應用, 實(shí)現了兩種網(wǎng)絡(luò )的無(wú)縫互連, 并在這種連接的基礎上實(shí)現對機電設備的遠程集中監測和控制。該監控系統具體積小、性能可靠、組網(wǎng)方便靈活等優(yōu)點(diǎn), 它能夠大幅提高企業(yè)的自動(dòng)化和信息化水平,有著(zhù)廣闊的應用前景。
參考文獻
[1] 劉崢嶸等.嵌入式linux應用開(kāi)發(fā)詳解.北京:機械工業(yè)出版社,2005
[2] 毛德操 胡希明.linux內核源代碼情景分析.杭州:浙江大學(xué)出版社,2001
[3] 黃志強等.嵌入式家庭遠程監控系統設計.微計算機信息 2005,21(3):91-92
[4] 鄒思軼.嵌入式Linux設計與應用[M].北京:清華大學(xué)出版社,2002.
[5] www.uclinux.org
[6] SAMSUNG公司.S3C44BOXdatasheet.pdf
[7] CAN.Controller Area Network CAN,an Invehicle Serial Communication Protocol[Z].SAE Handbook 1992,SAE Press,1990.
[8] Kurt Wall等,張輝譯.GNU/Linux編程指南(第二版)[M].清華大學(xué)出版社,2002
評論