基于嵌入式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应用程序时,只需打开相应的设备文件,就可通过调用驱动中的命令控制接口实现对端口的控制。本文引用地址:https://www.eepw.com.cn/article/151707.htm
然后可通过ioctl系统调用实现对端口的控制,程序结束时再调用close(fd)关闭设备。
在配置BOA服务器时,这里设定CGI程序的目录是/home/www/cgi-bin/目录,使用交叉编译工具生成CGI程序并放入此目录下,然后对整个操作系统内核进行配置裁剪,最终生成的系统镜像中就可以包含编写的程序功能,实现对设备的远程控制。图4为远程控制界面。
通过测试该远程控制系统,实现了对外部设备的远程控制,只需对CGI程序进行适当修改即可实现较复杂系统的控制。
3 结束语
随着计算机、通信、嵌入式和互联网等技术的飞速发展,传统基于现场总线的控制系统已不能满足远程控制的要求,而基于以太网的控制系统正逐渐成为远程控制的首选。本文利用ARM内核的32位处理器及以太网控制器搭建硬件平台,移植了μClinux嵌入式操作系统,配置了BOA服务器,通过编写设备驱动程序和CGI程序,实现了远程控制系统,具有广阔的应用前景。
评论