基于嵌入式Web服務(wù)器的遠(yuǎn)程控制系統(tǒng)的實現(xiàn)
2.3 驅(qū)動程序和應(yīng)用程序設(shè)計
設(shè)備驅(qū)動程序是系統(tǒng)內(nèi)核和機(jī)器硬件之間的接口,它為應(yīng)用程序屏蔽了硬件的細(xì)節(jié),在應(yīng)用程序看來,硬件設(shè)備已抽象為設(shè)備文件,可以像操作普通文件一樣對硬件設(shè)備進(jìn)行操作。Linux操作系統(tǒng)下的設(shè)備分為3類:字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)接口。應(yīng)用程序在系統(tǒng)中是不能直接訪問硬件地址的,因此應(yīng)用程序?qū)唧w設(shè)備的操作必須通過設(shè)備驅(qū)動程序來實現(xiàn)。本例通過編寫對應(yīng)端口的驅(qū)動程序,實現(xiàn)了對端口的輸入輸出設(shè)置,以及輸出高低電平的系統(tǒng)調(diào)用接口。在目錄/μClinux-dist/linux-2.4.x/drivers/char下創(chuàng)建驅(qū)動源文件port.c和驅(qū)動頭文件polt.h。編寫端口的驅(qū)動程序最重要的是編寫port_ioctl接口調(diào)用函數(shù),其中定義了實現(xiàn)功能的所有命令,以供應(yīng)用程序調(diào)用。
設(shè)備驅(qū)動程序加入系統(tǒng)有2種方式,一種是直接編入內(nèi)核中,另一種是以模塊的方式靈活添加。由于本例較簡單,所以直接編入內(nèi)核中。通過在當(dāng)前目錄下的Makefile管理文件和Config.in配置文件添加相應(yīng)項,并在vendor/Samsung/44BO/目錄下的Makefile中device部分添加port,c,126,0,使系統(tǒng)啟動時即注冊設(shè)備。
編寫CGI應(yīng)用程序時,只需打開相應(yīng)的設(shè)備文件,就可通過調(diào)用驅(qū)動中的命令控制接口實現(xiàn)對端口的控制。本文引用地址:http://www.ex-cimer.com/article/151707.htm
然后可通過ioctl系統(tǒng)調(diào)用實現(xiàn)對端口的控制,程序結(jié)束時再調(diào)用close(fd)關(guān)閉設(shè)備。
在配置BOA服務(wù)器時,這里設(shè)定CGI程序的目錄是/home/www/cgi-bin/目錄,使用交叉編譯工具生成CGI程序并放入此目錄下,然后對整個操作系統(tǒng)內(nèi)核進(jìn)行配置裁剪,最終生成的系統(tǒng)鏡像中就可以包含編寫的程序功能,實現(xiàn)對設(shè)備的遠(yuǎn)程控制。圖4為遠(yuǎn)程控制界面。
通過測試該遠(yuǎn)程控制系統(tǒng),實現(xiàn)了對外部設(shè)備的遠(yuǎn)程控制,只需對CGI程序進(jìn)行適當(dāng)修改即可實現(xiàn)較復(fù)雜系統(tǒng)的控制。
3 結(jié)束語
隨著計算機(jī)、通信、嵌入式和互聯(lián)網(wǎng)等技術(shù)的飛速發(fā)展,傳統(tǒng)基于現(xiàn)場總線的控制系統(tǒng)已不能滿足遠(yuǎn)程控制的要求,而基于以太網(wǎng)的控制系統(tǒng)正逐漸成為遠(yuǎn)程控制的首選。本文利用ARM內(nèi)核的32位處理器及以太網(wǎng)控制器搭建硬件平臺,移植了μClinux嵌入式操作系統(tǒng),配置了BOA服務(wù)器,通過編寫設(shè)備驅(qū)動程序和CGI程序,實現(xiàn)了遠(yuǎn)程控制系統(tǒng),具有廣闊的應(yīng)用前景。
評論