uClinux的網(wǎng)絡(luò)化遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計理念
4 系統(tǒng)軟件的設(shè)計
4.1 uClinux操作系統(tǒng)的移植
由于嵌入式websever硬件資源有限,在此平臺上只能運(yùn)行一個小型的操作系統(tǒng)??紤]到硬件的特點(diǎn)和對系統(tǒng)的功能要求等因素,我們選擇了一款目前比較成熟的uClinux操作系統(tǒng),并在此基礎(chǔ)上實(shí)現(xiàn)了嵌入式webserver。uClinux從標(biāo)準(zhǔn)的Linux 內(nèi)核派生而來,通過對內(nèi)存管理和進(jìn)程管理等相關(guān)方面進(jìn)行改寫,滿足無MMU處理器的開發(fā)要求。它繼承了Linux穩(wěn)定而優(yōu)良的性能,同時通過個性化的內(nèi)核定制,能夠更好的滿足嵌入式應(yīng)用的多樣化需要,提供豐富的應(yīng)用軟件支持。
為了使uClinux能運(yùn)行于硬件平臺,必須對uClinux進(jìn)行移植。uClinux的移植可以修改內(nèi)核中相關(guān)文件來實(shí)現(xiàn)。要修改的文件很多,不能一一介紹,主要有以下幾處: (1)linux/arch/mach-S3C44B0X目錄下處理器結(jié)構(gòu)的,如:arch.c、irq.c等。arch.c指定了系統(tǒng)啟動時用到的地址,按照硬件設(shè)計的不同,地址將有所不同;irq.c是與中斷處理相關(guān)的程序。由于linux所支持體系結(jié)構(gòu)的種類繁多,所以對一個新型的體系,其低級例程可以模仿與其相似的體系例程編寫,在這里可以從mach-S3C4510目錄下的文件修改得到。(2)include/asm-armnommu /arch-S3C44B0X下相關(guān)文件,如:dma.h、hardware.h、irq.h、system.h、time.h等。dma.h這條文件定義了DMA通道,以及DMA可以使用的內(nèi)存空間。hardware.h件定義了內(nèi)存地址和10地址,根據(jù)設(shè)計的硬件電路不同而不同。irq.h中定義了 fixup_irq()、irq_init_irq()等函數(shù)。system.h在該文件中需要定義兩個函數(shù):arch-idle()和arch- reset()。time.h實(shí)現(xiàn)了定時器中斷處理s3c44b0x_timer_interrupt()和相關(guān)函數(shù)。(3)各級相關(guān)makefile。在交叉編譯環(huán)境下編譯內(nèi)核,當(dāng)編譯結(jié)束時會生成內(nèi)核的鏡像文件image.rom,將其和bootloader一起燒寫在板子的Flash中,重新加電通過串口可以觀測到內(nèi)核的啟動信息,證明系統(tǒng)移植成功。
4.2 守護(hù)進(jìn)程的實(shí)現(xiàn)
uClinux移植完成后就可以在此平臺上進(jìn)行應(yīng)用程序開發(fā)了。系統(tǒng)開發(fā)的主要功能要求是使系統(tǒng)響應(yīng)遠(yuǎn)程客戶機(jī)的請求,完成特定的操作,同時能夠自動的將本地的監(jiān)測數(shù)據(jù)傳送到遠(yuǎn)程客戶機(jī)上。根據(jù)這一要求,必須對在服務(wù)器上實(shí)現(xiàn)一個守護(hù)進(jìn)程。該程序在uClinux下用C語言編寫,當(dāng)uClinux操作系統(tǒng)啟動后會自動運(yùn)行,流程圖如圖3所示。
圖 3
4.3 嵌入式Webserver的實(shí)現(xiàn)
考慮到硬件資源的限制,這里我們選擇uClinux下的boa服務(wù)器。Boa是一款單任務(wù)的HTTP服務(wù)器,它通過建立HTTP請求列表來處理多路連接請求,而且它只為CGI程序創(chuàng)建新的進(jìn)程,這樣就節(jié)省了大量的系統(tǒng)資源, 因此,Boa具有很高的HTTP請求處理速度和效率,在嵌入式系統(tǒng)中具有很高的應(yīng)用價值。要在uClinux上運(yùn)行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定義為遠(yuǎn)程客戶瀏覽的控制頁面,放在/uClinux-dist/romfs下面[3]。最后,在進(jìn)行內(nèi)核配置時make Menuconfig時選中boa ,重新編譯內(nèi)核,將最終生成的文件燒寫進(jìn)Flash中即可。
評論