由于Linux具有开源、技术成熟、应用广泛等特点。故采用μCLinux为操作系统。移植主要包括如下几个步骤:
(1)运行环境准备。操作系统运行前需要对硬件初始化,该部分功能由BootLoader完成。该系统采用德国DENX小组开发的交叉平台U-Boot.作为Boot-Loader。因此,先准备好ARM芯片的loader.bin文件和U-Boot文件。
(2)内核配置。首先下载μCLinux源代码,并配置Linux内核,在Networking option以及Network de-vice support中选择支持TCP/IP协议,在Network de-vice support目录下的Ethernet中选择OtherISACard,并选择NE确2000/NE 1000 support(该选择根据系统所选择的网卡芯片要求选择)。
(3)ramdisk制作。ramdisk是μCLinux操作系统的目录结构。用户可根据需要设置目录结构后制作ramdisk。如此Linux启动后系统会加载用户所需的目录结构。
(4)移植操作系统。首先,利用Windows自带的超级终端工具将loader.bin文件、U-Boot文件通过XMODEM协议发送到
AT91RM9200内部的SRAM中。其次,进入U-Boot的人机交互命令模式。用flash命令依次向NOR-F LASH中烧录loader,u-boot,kernel,ramdisk文件。至此,Linux内核移植完成,重启ARM便可进入Linux操作系统。
2.2 嵌入式Web Server的实现
Web Servet是实现网络通信的基础。目前在μClinux下,主要有3个Web Server:Httpd,Thttpd和Boa.Httpd是最简单的一个Web Server,它的功能最弱,不支持认证,不支持CGI。Thttpd和Boa都支持认证、CGI等,功能都比较全。为了实现动态Web技术,这里选择实现一个支持CGI且非常适合于嵌入式系统的BoaWeb Server。
Boa是一个单任务的HTTP服务器,源代码开放,性能好。它与常规的Web服务器不同,Boa不对每个进入服务器的连接开辟进程,更不为处理多路复用而开辟进程,Boa仅对正在进行的HTTP连接复用,而且也只为独立用户网关接口CGI开辟进程。测试表明,Boa服务器的速度比常规的Web服务器要快,比Apache服务器快两倍以上。目前,μClinux的代码中已经包含Boa的源代码,在μClinux下实现Boa,需要对Boa做一些配置和修改。这主要通过对boa.conf和mime.types文件进行修改实现。需要改动的配置有以下几项:将对应项目改为如下状态:
至此,Boa服务器已移植完成,但只有读权限,如果需要进行写入和修改操作则需要赋予Boa服务器rOOt,权限,方法如下:
将boa.c文件中的如下部分注释掉:
该注释操作会为黑客人侵留下可能,请慎重选择。文中系统属于内部局域网络,故以次方式赋予Boa服务器最高权限.便于系统功能的完善。
2.3 CGI技术
2.3.1 CGI简介
到目前为止,实现动态Web页面有4种技术可供选择:CGI,ASP,PHP和JSP。因为目前μClinux不支持ASP,PHP等动态Web页面技术,而且CGI应用程序可用大部分高级语言编写,程序员可以自由选择自己熟悉的编程语言完成设计,因此在该设计中选择了CGI。
CGI规定了Web服务器调用其他可执行程序的接口协议标准,提供web服务器一个执行外部程序的通道,这种服务端技术使得浏览器和服务器之间具有交互性。CGI程序属于一个外部程序,需要编译成可执行文件,以便在服务端运行。Web服务器通过调用CGI程序实现与Web浏览器的交互,也就是CGI程序接收Web浏览器发送给Web服务器的信息,进行处理后,将响应结果再回送给Web服务器及web浏览器,其工作过程如图2所示。