摘要:给出了以三星ARM7TDMI CPU为核心,同时嵌入μClinux系统的嵌入式Web服务器硬件系统的设计方法。分析了通用TCP/IP和HTTP网络协议及嵌入式Web原理,给出了基于CGI技术和socket技术开发流程,实现了基于嵌入式Web服务器的基本工业远程监控。
关键词:μClinux;S3C4480;Web服务器;嵌入式系统;监控系统
0 引言
本文详细介绍了嵌入式系统各个步骤的实现方法及其功能,给出了嵌入式系统的硬件平台,研究基于ARM的μClinux的移植,并介绍了一种嵌入式工控网络系统的具体设计过程。
1 硬件平台的设计
硬件平台的搭建是嵌入式开发平台设计的首要任务,本文采用比较流行的体系结构,并选择S3C44BOX作为嵌入式处理器,然后围绕S3C4 4BOX进行外围器件的选型,设计了系统的硬件总体结构框图,然后以单元电路为基础,介绍了原理图设计的详细过程。
1.1 系统硬件选型
嵌入式系统的核心部件是嵌入式处理器,系统硬件选型首先是选择嵌入式处理器,然后围绕该嵌入式处理器选择各种外围芯片,以实现各种扩展功能。本系统选择三星公司基于ARM7TDMI的S3C4480X微处理器。该芯片可为手持设备及一般嵌入式应用提供一个成本低廉而又功能强大的微控制器解决方案。
1.2 硬件结构设计
硬件平台主要由电源电路、MCU核心电路、存储器电路、UART接口、以太网接口、USB接口、LCD接口、RTC和IIC电路、JTAG接口和系统扩展接口等单元电路组成,图1所示是一种基于S3C44BOX开发板的硬件平台结构框图。
l.3 存储器电路
图2所示为S3C44BOX的地址空间分布图。S3C44BOX采用统一编址方式,256 MB地址空间分成8个Memory BANKs,其中BANK6和BANK7是DRAM空间(DRAM的控制方式与SRAM的不一样,不能混用)。
1.4 以太网接口电路
RTLS019AS芯片集成了介质访问控制子层(MAC)和物理层(PHY)功能,故能与大多数通用MCU进行接口,其较高的性价比使其成为一款广泛使用的lOMbps全双工以太网控制器。
图3所示为RTL8019AS与S3C44BOX的连接图,其中三个可编程的LED输出可用于显示RTL8019AS的工作情况。
2 μClinux系统的移植
在μClinux这个英文单词中,μ表示Micro,小的意思,C表示Control,控制的意思,所以,μClinux就是Micro-Control-Linux,字面上的理解就是“针对微控制领域而设计的Linux系统”。Linux是一种很受欢迎的操作系统,它与UNIX系统兼容,且开放源代码。它原本被设计为桌面系统,现在广泛应用于服务器领域。
2.1 μClinux移植前的准备
移植μClinux时,首先必须在宿主机上装redhat9.0操作系统,然后在redhat9.0下建立μClinux开发环境,也可以从http://www.μC linux.org/处下载μClinux的源代码和工具包,然后进行安装。
2.2 内核和文件系统编译
Linux作为一个自由软件,其内核版本不断更新。新的内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效、更稳定的内核,就需要重新编译内核。
由于所使用的flash只有2 MB,这对嵌入式Linux系统来说要求比较高,因为内核和文件系统加起来不能超过2 MB,本文的研发思路就是把内核和文件系统压缩在一起,这样,系统启动的时候。内核将自动解压缩到SDRAM,然后就可以在SDRAM上运行μClinux了。
2.3 内核和文件系统配置
在μClinux-Samsung目录下运行make menueonfig后会首先出现Configuration启动界面。在Configuration启动界面中选择Target Plal-form Selection,通常具有下面几个选项:
接下来可配置所需要的内核和文件系统。μClinux的配置分为两部分,前一部分是通常的Linux内核配置,后一部分是μClinux文件系统配置。下面先进行μClinux的内核配置,μClinux的内核配置会出现μClinux内核配置界面,可根据界面进行内核配置。
配置完这部分以后,可退出并保存,然后,系统自动进入下一部分μClinux的文件系统配置。μClinux嵌入式操作系统所能实现的应用跟这部分的配置很有关系,下面可进行μClinux的文件系统配置部分,以完成μClinux文件系统的配置。
μClinux的内核和文件系统配置好后,就可以进行内核的编译。
2.4 编译步骤
编译时,可在μClinux-Samsung目录下依次运行下列9个命令:make menueonfig,make dep,make clean,make lib_only,make user_ only,make rotors,make image,make,make image。
运行完以上命令后,就会在μClinux-Sam-sung的images子目录下生成三个文件,其中image.rom和image.ram是我们需要的镜像文件。 image.rom是一个压缩的内核,在开发中,笔者把image.rom烧到flash中,并从flash处启动,同时把image解压到ram的Ox8000处,然后运行。image.ram是包含有调试信息的内核,可以直接用工具下载到开发板的ram中,比如用ICE直接把image.ram放到ram地址为Ox8000的地方,进行开发调试这种方式可使得开发调试更加方便。
3 嵌入式工控Web服务器的实现
3.1 嵌入式Web服务器的基本实现
嵌入式Web服务器可基于Socket套接字来开发,它主要由初始化模块、监听模块、请求解析模块、脚本引擎模块、输出模块和命令模块等组成,各模块之间的关系如图4所示。
μClinux下主要有三个Web服务器:httpd、thttpd和Boa。其中httpd是最简单的一个Web服务器,它的功能最弱,不支持认证,不支持CGI。thttpd和Boa都支持认证、CGI等。功能都比较齐全。其中boa是一个单任务的http服务器,源代码开放,性能比较高,占用系统资源也比较少。boa服务器在接收到请求时,不启动多个服务器进程处理多个请求,而在一个进程内处理所有服务请求。为了实现动态Web技术,可选择实现一个支持CGI的、非常适合于嵌入式系统的Boa WebServer。然后再通过CGI用C语言进行编程,就可以实现动态WEB。
3.2 boa Web Server的移置
boa是一个单任务的http服务器,源代码开放、性能高。目前,μC1inux的代码中已经包含boa的源代码。在μClinux下实现Boa时,需要对Boa做一些配置和修改。boa服务器的核心文件主要有boa.conf和mime.types,本设计主要通过对boa.conf和mime.types文件进行修改来实现。
3.3 编译内核
配置过程完成后,便可重新编译内核。编译时先选中Boa选项,并把编译好的内核下载到开发板,再启动μClinux,完成IP配置,启动BoaWeb Server,然后就可以通过IE访问你的网页了。如果想启动μClinux时自动启动Boa Web Server,则可修改rc文件,并进入/μClinux-ams ung/ven-dors/Samsung/S3C44BOX目录,再在运行脚本rc中增加如下两行:
“ifconfig eth0 192.168.1.10
boa-c/home/&”
修改后,重新编译内核,再下载到目标系统运行。这样,运行μClinux后,不需要配置就可以直接通过IE来访问网页了。
3.4 μClinux下的CGI监控技术
通过CGI(通用网关接口)可为Web服务器提供一个执行外部程序的通道,这种服务端技术可使浏览器和服务器之间具有交互性。CGI程序属于外部程序,需要编译成可执行文件才能在服务端运行。浏览器可将用户输入的数据送到Web服务器,Web服务器再将数据用STDIN送给CGI程序。在执行CGI程序后,还会访问存储数据的一些文档,最后使用STDOUT输出HTML形式的结构文件,再经Web服务器送回浏览器,即可显示给用户。
若CGI程序是本地程序,也需要编译成可执行文件,以便在被CGI调用时运行。Web服务器将用户数据传输给CGI程序,并重定向CGI程序的输出到Web页,这样,CGI程序在处理时,再将数据封装成HTML形式发送到输出,从而在客户端看到对应的Web页。
访问者可通过CGI程序远程控制数码管(模拟工业现场的控制),并显示相应的数字。在CGI程序的编写中,每个程序的大致框架都比较类同,其CGI程序流程如图5所示,它主要是遵循HTTP协议的通讯。也包括对输入输出的读写和控制。
3.5 嵌入式工业监控系统的应用
基于Internet的远程监控有代理方案和嵌入式方案两种实现方案。两种实现方案均采用三层B/S体系结构,即表示层、应用逻辑层和数据层。三层B/S体系结构可避免两层体系结构中客户端程序单独实现应用逻辑而产生的冗余;应用逻辑可在应用逻辑层上而不是在客户层上实现。由于表示层与应用逻辑相分离,因而降低了网络传送的信息量,使系统具有更高的可伸缩性、可维护性和灵活性。本文讨论的嵌入式方案的基本结构如图6所示。
4 结束语
本文推出的方案对每台现场设备均配有微型嵌入式Web服务器,可负责对现场设备进行数据采集、数据存储、数据转发以及与监控主机进行数据的交互。该方案的优点是实时性强、可靠性高、现场设备的数量不受限制等。