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