2.3 嵌入式Web服务器体系结构
本课题的嵌入式Web 服务器的体系结构如图2-2 所示。
图2-2 嵌入式Web 服务器系统体系结构图
Web 浏览器与嵌入式Web 服务器底层通过TCP/IP 协议,顶层由HTTP 协议进行通信。Web 浏览器通过Script 解析器解析浏览器的脚本,通过HTML 解析器解析HTML 语言,由客户端Java 虚拟机解析Java applet,同时由Form 生成器生成动态Form 发送给嵌入式Web 服务器,嵌入式Web 服务器首先解析HTTP 请求,然后由Form 解析器解析动态Form 要求处理的功能,同时与嵌入式设备的应用程序通信,完成嵌入式设备的配置和监控。当嵌入式设备需要上传采集数据及监测数据时,则需要与嵌入式Web 服务器应用程序接口通信,由它的HTML 生成器生成HTML 文档传到Web 浏览器显示出来。通过如此工作过程,嵌入式Web 服务器在嵌入式系统完全可以实现对嵌入式设备起到配置、监测和控制等作用,而且有了嵌入式Web 服务器的存在,也方便了应用程序的开发[6]。
3嵌入式Linux操作系统的移植
3.1 交叉编译环境的建立
移植Linux 必须有一台安装了Linux 操作系统的PC 机,同时还要有一块开发板,Linux 必须支持该开发板的处理器体系结构[9,19]。对于不同的处理器结构,GUN 基本提供了相应的开发软件包。这可以从网上查找和下载。安装完了工具包后,Linux 中就有了基于该体系结构的编译器、链接器、调试器以及一些实用的小工具,例如反汇编、反编译等,以后编译Linux 内核,制作文件系统都要依赖于交叉编译系统[16]。本文采用天嵌科技提供的EABI-4.3.3 版本的交叉编译器。编译步骤如下:
解压编译器的源码包:
#tar xvfj EABI-4.3.3_EmbedSky.tar.bz2 –C /opt/EmbedSky
总共解压出来EABI-4.3.3 的编译器、3.4.5 的编译器和制作文件系统的mkyaffsimage 等工具。其中3.4.5 的编译器用于编译uboot ,4.3.3 的编译器用于编译内核、qtopia等。
图3-1 交叉编译器的环境变量设置
设置交叉编译器的环境变量:
#gedit /etc/profile
首先修改/etc/profile 文件,在其中添加交叉编译器的环境变量的设置。如图3-1 所示。
使环境变量生效:
#source /etc/profile
重启Fedora 10,设置的交叉编译器的环境变量将永久生效。
查看交叉编译器是否安装成功:
#arm-linux-gcc –v
成功安装交叉编译器如图3-2 所示。
图3-2 成功安装交叉编译器
如果没有安装成功将会提示类似arm-linux-gcc:not found 的信息,需要重新安装。
测试制作yaffs 文件系统的工具是否安装成功:
#mkyaffs 然后连续按两下tab 键
终端自动列出mkyaffs 开头的命令,表示安装成功,没有安装成功的情况是终端不会有任何反应。安装成功的情况如图3-3 所示。
图3-3 成功安装制作文件系统工具
3.2 编译Linux 内核
本文采用天嵌科技提供的Linux-2.6.30.4 版本的内核源码包,其中添加了很多开发板的设备驱动,减少自己编写驱动代码的时间。
解压系统源码包:
#tar xvfj Linux-2.6.30.4.tar.bz2 –C /opt/EmbedSky
在系统中添加对ARM 的支持:
进入内核源码,修改“Makefile”文件,把“ARCH ? = (SUBARCH)”和“CROSS_COMPILE ? =”修改为“ARCH= arm”和“CROSS_COMPILE = arm-linux-”,然后保存。如图3-4 所示。
图3-4 在系统中添加对ARM 的支持
修改平台输入时钟:
因为TQ2440 使用的是12MHz 的外部时钟,所以需要修改内核源码“arch/arm/mach-s3c2440/mach-smdk2440.c”文件,把16.9344MHz 改为12MHz,既把16934400 改为12000000。如图3-5 所示。 基于ARM的嵌入式WEB服务器的研究和设计(3):http://www.youerw.com/zidonghua/lunwen_8561.html