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