嵌入式ARM_Linux环境下CGI的实现
- 格式:pdf
- 大小:490.74 KB
- 文档页数:5
摘要论文主要介绍了基于ARM9的嵌入式Web服务器Boa的软、硬件设计及其实现,其中硬件部分的核心是三星的S3C2410X为处理器。
最后成果形式为可以远程访问的WebServer嵌入式服务器。
Boa是一款单任务的HTTP服务器。
与其他传统的Web服务器不同的是当有连接请求到来时,它并不为每个连接单独创建进程, 也不通过复制自身进程来处理多链接。
而是通过建立HTTP请求列表来处理多路HTTP连接请求。
同时它只为CGI程序创建新的进程,这样就在最大程度上节省了系统资源,这对嵌入式系统来说至关重要。
同时它还具有自动生成目录、自动解压文件等功能。
因此, Boa在嵌入式系统中具有很高的应用价值。
关键词:ARM;Linux;嵌入式Web服务器;CGIThis paper has mainly developed the software hardware design and realization of the embedded Web server Boa based on ARM. And the core of the hardware part is S3C2410X microprocessor produced by Samsung . The final achievement is the embedded webserver which can remote visit. Boa is a single-tasking HTTP server. That means that unlike traditional webservers, it does not fork for each incoming connection, nor does it fork many copies of itself to handle multiple connections. It internally multiplexes all of the ongoing HTTP connections. And forks only for CGI programs, this is very important to embedded system. At the same time, it also has the function of automatic directory generation、automatic file gunzipping and so on. So Boa is of highly value in the embedded system application.Keywords: ARM;Linux;Embedded Web server;CGI摘要 (1)Abstract (2)目录 (3)第一章引言 (5)第二章课题背景 (6)2.1 嵌入式系统简介 (6)2.2 嵌入式系统和Linux (6)2.3 ARM9硬件平台 (7)2.3.1 ARM简介 (7)2.3.2 JXARM9-2410 ARM嵌入式教学实验系统 (8)第三章嵌入式Web服务器 (9)3.1 概述 (9)3.2 Web服务器原理 (9)3.3 嵌入式Web服务器实现原理 (9)3.3.1 TCP/IP协议 (9)3.4 嵌入式Web服务器Boa (10)3.4.1 Boa概述 (10)3.4.2 Boa的功能实现 (11)第四章CGI技术 (12)4.1 CGI概述 (12)4.2 CGI工作原理 (12)第五章建立嵌入式系统开发环境 (14)5.1 在Vmware下安装Redhat 9.0 (14)5.2 编译配置主机开发环境 (18)5.2.1 配置以太网 (18)5.2.2 安装配置tftp服务器 (19)5.2.3 配置防火墙 (21)5.2.4 配置NFS服务器 (22)5.3 JXARM9-2410中U-boot烧写 (22)5.3.1 u-boot的功能 (22)5.3.2 使用ADT IDE烧写u-boot (23)第六章系统功能的实现 (25)6.1 GCC简介 (25)6.1.1 GCC概述 (25)6.1.2 GCC基本用法 (25)6.2 Linux内核移植 (26)6.2.1 Linux内核源代码的安装 (26)6.2.2 Linux交叉编译环境的建立和使用 (27)6.2.3 Linux内核的配置和编译 (27)6.3 加载Linux内核映像 (30)6.4 Boa Web服务器的移植 (31)6.4.1 Boa Web服务器的建立 (31)6.5 Linux下动态Web页面的实现 (32)6.5.1 CGI程序分析 (32)6.5.2 Form输入的分析和解码 (34)第七章系统功能的测试 (36)7.1 测试Web服务器 (36)7.2 动态Web页面测试 (37)结束语 (40)致谢 (41)参考文献 (42)附录 (43)第一章引言随着计算机技术的发展,嵌入式系统已成为计算机领域的一格重要组成部分。
嵌入式Linux下基于CGI的文件上传下载的实现
孟伟君;周利华
【期刊名称】《计算机技术与发展》
【年(卷),期】2006(16)5
【摘要】随着嵌入式Linux的深入研究,在此平台上的应用也越来越广泛.针对在资源有限的嵌入式系统中如何有效地实现动态Web内容,文中提出了一种解决方案.讨论了在嵌入式Linux系统下,采用ACME的thttpd作Web服务器,用C语言进行CGI程序设计的原理和方法.应用此方法并以文件的上传和下载为例给出了具体实现,用POST方法实现了文件上传,用GET方法实现了文件下载.测试结果表明该方案的正确性和有效性,最后分析了在进一步应用中需要解决的问题.
【总页数】3页(P226-228)
【作者】孟伟君;周利华
【作者单位】西安电子科技大学,多媒体技术研究所,陕西,西安,710071;西安电子科技大学,多媒体技术研究所,陕西,西安,710071
【正文语种】中文
【中图分类】TP391
【相关文献】
1.嵌入式Linux下基于socket网络通信的实现 [J], 李敏;黄巧巧;刘绍丽
2.嵌入式Linux下基于SNMP代理实现设备监控的开发 [J], 王辉;刘帅;史东东
3.基于μClinux下Boa的CGI技术实现 [J], 宋丽娟;董小国
4.基于U盘下嵌入式Linux-iptables的防火墙设计与实现 [J], 杨本祥
5.嵌入式Linux下基于CGI的动态Web的实现 [J], 陈红梅;陈静;李雪冬
因版权原因,仅展示原文概要,查看原文内容请购买。
2020年第8期信息与电脑China Computer & Communication软件开发与应用基于嵌入式ARM9的Linux 系统移植的研究和实现冯宁波 周 剑(苏州长风航空电子有限公司,江苏 苏州 215151)摘 要:笔者以ARM9处理器为硬件,对嵌入式系统展开分析,并对安装到嵌入式ARM9芯片开发板上的Linux 系统移植进行研究。
Linux 系统移植步骤如下:首先初始化随机存取存储器,设置堆栈,引导加载程序移植;然后下载Linux 内核,修改Makefile 文件,设计交叉编译环境;最后依据内核启动过程,指定启动初始值,控制后台,并执行制作菜单配置命令。
关键词:嵌入式ARM9;Linux 系统;移植;内核中图分类号:TP311.54;TP316.81 文献标识码:A 文章编号:1003-9767(2020)08-078-02Research and Implementation of Linux System Migration Based on EmbeddedARM9Feng Ningbo, Zhou Jian(Suzhou Changfeng Avionics Co., Ltd., Suzhou Jiangsu 215151, China)Abstract: The author takes ARM9 processor as hardware, analyzes the embedded system, and studies the Linux systemporting installed on the embedded ARM9 chip development board. The steps of Linux system porting are as follows: first, initialize random access memory, set stack, boot loader porting; then download Linux kernel, modify makefile file, and design cross compiling environment; finally, according to the kernel startup process, specify the initial startup value, control the background, and execute thecommand of making menu configuration.Key words: embedded ARM9; Linux system; transplantation; kernel0 引言微电子技术快速发展使计算机技术支持下的嵌入式系统得到广泛应用,该系统因软硬件可裁剪、使用性能良好,受到人们青睐[1]。
实验一嵌入式 Linux 开发环境的搭建及 Makefile 应用一、实验目的:1.熟悉嵌入式 Linux 开发基本过程及基本命令。
2.了解嵌入式 Linux 开发中各种工具的基本用途。
3.搭建好嵌入式 Linux 的开发环境。
4.通过对包含多文件的 Makefile 的编写,熟悉各种形式的Makefile 编写,加深对 Makefile 中用户自定义变量、自动变量及预定义变量的理解。
二、实验内容:1.安装 Vmware 及 Ubuntu;2.熟悉 Linux 下相关命令:属性查询、修改,路径、目录的查询、修改、删除,压缩、解压等;3.熟悉编辑工具;4.熟悉 makefile 文件的基本作用(编写一个包含多文件的Makefile)。
三、Make 工程管理器:Makefile如今能得以广泛应用,这还得归功于它被包含在Unix系统中。
在make诞生之前,Unix系统的编译系统主要由“make”、“install”shell脚本程序和程序的源代码组成。
它可以把不同目标的命令组成一个文件,而且可以抽象化依赖关系的检查和存档。
这是向现代编译环境发展的重要一步。
1977年,斯图亚特·费尔德曼在1贝尔实验室里制作了这个软件。
2003年,斯图亚特·费尔德曼因发明了这样一个重要的工具而接受了美国计算机协会(ACM)颁发的软件系统奖。
Makefile文件是可以实现自动化编译,只需要一个“make”命令,整个工程就能完全自动编译,极大的提高了软件开发的效率。
目前虽有众多依赖关系检查工具,但是make是应用最广泛的一个。
一个程序员会不会写makefile,从一个侧面说明了这个程序员是否具备完成大型工程的能力。
1.Makefile 基本规则一个简单的 Makefile 语句由目标、依赖条件、指令组成。
smdk6400_config :unconfig@mkdir -p $(obj)include $(obj)board/samsung/smdk6400其中:smdk6400_config:目标;unconfig:先决条件;@mkdir -p $(obj)include $(obj)board/samsung/smdk6400:指令。
嵌入式系统安全CGI技术研究与编程曲波【摘要】文章分析了使用GNU工具链实现嵌入式系统安全CGI的技术要点,以及在ARM平台上的具体实现方法.内容包括嵌入式系统Web服务及CGI编程的基本功能与结构、openssl的移植、以及嵌入式安全CGI的设计方法等.【期刊名称】《南京晓庄学院学报》【年(卷),期】2011(027)003【总页数】4页(P83-86)【关键词】嵌入式系统;安全套接层协议SSL;公共网关接口CGI;Web编程;CGI编程【作者】曲波【作者单位】南京晓庄学院数学与信息技术学院,江苏南京211171【正文语种】中文【中图分类】TP316随着计算机网络技术及嵌入式技术的不断发展,在嵌入式系统设备中实现网络服务功能已成为一种主流趋势,基于HTTP协议的Web服务是嵌入式系统的主要网络服务形式.由于嵌入式系统环境的限制,一般都不使用通用计算机系统的大型Web 服务器,也不使用诸如PHP、JSP等动态网页编程语言.因此,在嵌入式系统中主要使用C语言及公共网关接口(CGI)技术,实现面向Web的服务器编程.通过HTTP协议[1]实现的Web服务通过明码实现客户机与服务器之间的通信,不能实现数据通信的安全保密.HTTPS[1]协议通过安全套接字(SSL)机制,完成对数据通信作加密处理,可实现安全的Web服务.本文在简要分析嵌入式Web服务及嵌入式CGI技术的基础上,提出一种基于SSL 的嵌入式系统安全CGI实现方案,并对其编程方法加以阐述.1 嵌入式系统的Web及CGI编程Web服务本质上就是对客户端HTTP协议请求的响应过程.对于多数嵌入式系统而言,无需使用过于复杂的Web服务功能,一般只要能响应客户端浏览器的GET和POST请求就足够了.主控程序基本结构的伪代码如下:由于CGI程序也可以实现对静态网页的访问,所以嵌入式Web服务只需支持CGI 即可,从而简化Web服务程序.CGI程序通常存储在磁盘上,被Web服务器调用时从磁盘装入内存.在嵌入式系统中,通常采用嵌入式CGI技术,将CGI程序与Web服务程序设计在一起,成为一个整体,既减小了体积,又明显提高了运行速度.CGI[2]处理通过HTTP协议的POST请求实现,其页面首部(head)由若干文本行构成,之后的空行作为首部结束标志;接下来是页面体(body),内容为POST表单数据集.经解码后得到的表单数据集由若干参数的“名/值”对组成,格式为:参数1=参数值1&参数2 =参数值2&参数3=参数值3…参数n=参数值n,各参数之间用“&”分隔.CGI程序的一项重要工作是处理POST请求,将各参数分解并将各参数值解码.解码算法的伪代码如下:CGI程序的另一项重要工作是调用主机的应用程序,完成特定任务,如访问数据库、形成动态网页、实现远程控制等.CGI程序对主机应用程序的调用,可使用exec系列函数实现.2 OpenSSL的移植与应用安全套接层(SSL)协议[3]是在Web服务器与浏览器之间安全交换信息的一种互联网协议.利用公开密钥技术的SSL协议,已成为互联网保密通讯的工业标准.在Linux操作系统下,比较流行支持SSL认证的是免费开放源代码的软件工具包openssl.由于其良好的跨平台及程序可移植性,openssl可以方便移植到arm-linux平台或其他种类嵌入式平台系统.移植时要注意openssl版本与交叉编译器版本的对应,否则可能无法顺利通过交叉编译.将openssl软件包下载、解压、交叉编译之后,形成openssl程序库.将命令文件openssl和动态库文件libcrypto.so和libssl.so下载到嵌入式主机的Linux系统中.将openssl拷贝到/bin子目录,将动态库文件拷贝到/ lib子目录. SSL通讯模型为标准的Client/Server结构,一般需要完成以下6个步骤:(1)使用OpenSSL之前,首先进行OpenSSL初始化;(2)申请一个SSL环境、创建SSL连接会话及本次会话所使用的协议,再申请SSL会话环境;(3)把SSL绑定到已经连接的TCP/IP协议套接字上;(4)接下来是SSL握手;(5)握手成功后,进行通讯.使用SSL_read和SS_write读写SSL套接字代替传统的read、write,使用SSL_accept代替传统的accept调用;(6)通讯结束,需要释放前面申请的SSL资源.当浏览器试图连接一个具有SSL认证加密的服务器时,要检查服务器的认证.一般来说服务器认证证书应由第三方认证机构提供.但常用的客户端浏览器也允许服务器端使用所谓“自认证证书”,这为SSL服务器应用带来了很大方便.利用OpenSSL软件包的openssl命令可方便地生成服务器的SLL认证证书,例如:openssl req-new-x509-days 365-nodes-out CRT_PEM-keyout KEY_PEM其中,CRT_PEM为生成的证书文件,KEY_PEM为生成的密钥文件;-new表示生成一个新证书,-x509表示导入x509协议,-days 365表示有效期为1年,-nodes表示生成证书时不需密码.在生成证书过程中,根据openssl的req子命令的提示依次输入国家代号、省份名称、城市名称、公司名称、部门名称、通用名称及E-mail地址等信息.由于浏览器在SSL通信过程中要对证书中的通用名称(Common Name)进行验证,所以要使用服务器的域名或IP地址作为上述的通用名称.3 嵌入式安全CGI的实现嵌入式安全CGI由三个基本要素组成:(1)SSL程序,实现HTTPS协议通信,对通信数据进行加密保护;(2)Web程序,实现对用户Web服务请求的分析与响应,调用CGI程序;(3)CGI程序,完成用户请求的 Web服务任务.3.1 主程序的设计嵌入式安全CGI的主程序本质上是一个服务器程序[4],它与普通的Web服务器结构类似,主要有两点不同:(1)它是一个基于SSL的HTTPS协议服务器;(2)它只完成调用CGI程序的功能.主程序基本结构的伪代码如下:3.2 Web服务子程序的设计Web服务子程序由get_http()实现.首先从请求页面读取首行,获取请求方式(GET 或POST);然后设置相关的环境变量,为后续CGI调用做准备;接下来调用chk_head()函数,处理请求页首部各行内容;最后,调用do_cgi()函数.其基本结构的伪代码如下:对一般Web服务器而言,CGI程序保存在磁盘上,由Web服务器通过exec系列函数调用磁盘上的CGI程序.本文设计的嵌入式安全CGI系统,将安全Web服务与CGI程序链接在一起,生成一个可执行文件.3.3 CGI子程序的设计为演示嵌入式安全CGI的功能,笔者设计了一个简单的CGI程序,向用户浏览器回送一个表单,提示用户输入名字;用户将表单填充提交之后,服务器端再次调用CGI程序,将用户在表单中填充的名字在表单下方显示出来.用C语言实现动态网页,本质上就是用printf ()函数向Web服务程序输出网页的HTML脚本,然后通过Web返回给用户浏览器.由于篇幅所限,不再展开叙述. 本文设计的嵌入式安全CGI演示页面如图1所示,图中URL所用的协议为https. 图1 嵌入式系统安全CGI演示页面4 结束语本文提出的嵌入式安全 CGI系统,在 mini2440 ARM开发板上用GNU工具链设计而成.整个程序小巧简洁,全部源码只有600行,编译后的可执行程序不足25K.该系统将安全套接层SSL协议、Web服务与CGI程序有机结合起来,形成一个整体;无需Web服务器支持,即可实现具有CGI功能的安全Web服务,非常适于在嵌入式系统中应用.参考文献:【相关文献】[1]Andrew S.Tanenbaum,Computer Networks,Fourth Edition[M].Prentice Hall,Inc.2008.[2]Douglas er,Computer Networks and Internet with Internet Applications,Fourth Edition[M].Prentice Hall,2004.[3]William work Security Essentials:Applications and Standards,Third Edition [M].Prentice Hall,Inc.2007.[4]Marc J.Rochkind,Advanced UNIX Programming,Second Edition[M].Addison-Wesley,2006.。
嵌入式linux arm时间同步方法嵌入式Linux ARM时间同步方法在嵌入式系统中,时间同步是非常重要的一个功能。
它可以确保系统中各个设备的时间一致,以便于各个模块之间的协同工作。
本文将介绍一些在嵌入式Linux ARM平台上实现时间同步的方法。
一、使用NTP协议进行时间同步NTP(Network Time Protocol)是一种用于同步网络中各个设备时间的协议。
在嵌入式Linux ARM系统中,可以通过安装和配置NTP服务器来实现时间同步。
具体步骤如下:1. 安装NTP服务器软件。
可以通过在终端中执行相应的命令来安装NTP服务器软件,例如在Debian系列系统中可以使用apt-get命令来安装。
2. 配置NTP服务器。
可以通过编辑配置文件/etc/ntp.conf来配置NTP服务器。
在配置文件中,需要指定一些NTP服务器的参数,例如要同步的时间服务器的地址等。
3. 启动NTP服务器。
在配置完成后,可以使用命令启动NTP服务器,例如在Debian系列系统中可以使用service命令来启动。
4. 配置客户端设备。
在每个需要同步时间的客户端设备上,需要配置NTP客户端。
可以通过编辑配置文件/etc/ntp.conf来配置NTP 客户端,指定要同步的时间服务器的地址。
5. 同步时间。
在配置完成后,可以使用命令手动同步时间,或者设置自动同步时间的策略。
一般情况下,NTP客户端会定期向NTP 服务器发送请求,以获取最新的时间信息。
二、使用PPS信号进行时间同步PPS(Pulse Per Second)信号是一种精确的时间信号,可以用于实现高精度的时间同步。
在嵌入式Linux ARM系统中,可以通过配置PPS信号来实现时间同步。
具体步骤如下:1. 配置GPIO引脚。
首先需要选择一个GPIO引脚,将其配置为输入模式,并连接到一个精确的时间源上,例如GPS模块的PPS输出引脚。
2. 配置内核。
在Linux内核中,需要配置相应的驱动程序来接收和处理PPS信号。
文章编号:100424353(2006)0420259205嵌入式ARM 2Linux 环境下CGI 的实现金顺燕, 张健民, 李允俊(延边大学工学院计算机科学与技术系,吉林延吉133002)摘要:为满足交互式动态CGI 技术在嵌入式系统中的需要,选用Boa Server 作为Web 服务器,给出适合ARM 2Linux 环境下的Web 服务器参数配置方法.并利用该方法在S3C2410硬件开发板中实现了具体的Boa 服务器环境,CGI 应用实例.通过该实例验证了在嵌入式ARM 2Linux 环境下Boa 服务器可以正常为CGI 应用提供服务.关键词:嵌入式Linux ;CGI ;Boa中图分类号:TP273 文献标识码:A随着嵌入式系统的广泛应用,形态各异的嵌入式系统已经成为数字时代的标志,相应的嵌入式产品也越来越多.再加上Internet 的普及,各种各样的嵌入式设备都可以上网并通过网络实现对嵌入式设备的远程控制.目前,嵌入式系统下CGI 的实现方法多数都是基于uClinux 系统[1]下,本文以S3C2410开发板作为平台提出了基于ARM 2Linux 系统的CGI 的实现方法,使用户通过一个更加人性化的人机界面对指定的嵌入式设备进行远程操作,大大简化了远程控制嵌入式设备的开发难度.1 CGI 概述CGI (C ommon G ateway Interface )通用网关接口是一个外部应用与信息服务器(如HTTP 或Web 服务器)之间的标准接口[2].其主要功能是在Web 环境下,从客户端传递一些信息给Web 服务器,CGI 脚本通过标准输入STDIN 从Web 服务器得到输入信息,最后使用STDOU T 输出HTML 形式的结果文件,经Web 服务器送回浏览器显示给用户.由于用户能传递不同的参数给CGI 脚本,所以CGI 技术使得浏览器和服务器之间具有交互性.其工作过程[2]如图1所示.其中,CGI 与表单之间的信息交互方法有两种模式:“GET ”和“POST ”[3].选择哪图1 CGI 工作原理图一种模式取决于表单(FORM )的“M ETHOD ”字段的设置,如果M ETHOD 设定为POST ,数据会以STDIN 方式送入CGI接口;如果M ETHOD 设定为GET ,数据会保存在QU ER Y -STRIN G 的环境参数中,以供接口读取.使用GET 方式编写第32卷 第4期2006年12月 延边大学学报(自然科学版)Journal of Yanbian University (Natural Science ) Vol.32No.4 Dec.2006收稿日期:2006-03-28作者简介:金顺燕(1978—),女(朝鲜族),吉林柳河人,延边大学工学院计算机科学与技术系硕士研究生.062延边大学学报(自然科学版)第32卷 CGI程序会更加简单,但是POST方式则更先进.2 构建嵌入式CGI的实现思路根据CGI的工作机理,在嵌入式系统中构建CGI运行环境需要解决下面几个主要工作:1)选择嵌入式系统的操作系统平台.在嵌入式系统中,操作系统的性能对整个应用的实时性和稳定性有重要的影响.嵌入式系统的核心部件是各种类型的嵌入式处理器,ARM 作为一种嵌入式系统处理器,支持Thumb(16位)/ARM(32位)双指令集,以高性能、低功耗、低成本等优点占领了大部分市场.嵌入式Linux[4]广泛支持ARM体系结构,具有稳定性,可应用于多种不同硬件平台,其最大的特点是开放源码,可裁剪,具有丰富的软件支持和良好的网络支持,从而降低了整个系统的开销与能耗,满足了嵌入式系统在体积、功能、能耗、实时性等方面的要求.本文选用支持ARM2Linux作为CGI的系统平台.2)选择合适的Web服务器.CGI的工作过程中,服务器性能以及所占空间,在不同系统应用和需求方面都是考虑的主要因素.目前有很多功能强大的Web服务器,主要包括Apache,httpd,thttpd和Boa[5]等几种.其中httpd最小,只需几千字节的空间,功能简单,但不支持CGI;Apache,thttpd和Boa支持CGI,从对CGI支持的性能指标[6]可知,Boa对CGI 的支持效果最佳.Boa开放源代码,性能高,速度快,运行所需空间仅为140K B左右.Boa与其他Web服务器相比主要有以下几个优点:①对CGI程序无需设置REMO TE-HOST环境变量,在REMO TE-ADDR变量中已经提供了IP地址,可以直接使用gethostbyaddr函数或变量,从而使Boa较其他Web服务器更易于使用;②在Boa中对Server2side模块可以剪裁,以提高系统运行速度,其内部的“字节流执行引擎”采用了非完全的图灵机方式实现;③不存在访问控制特征,采用符号连接方式进行控制,可以对任何可以读取的文件提供服务,因此速度更快.因此,本文选择Boa作为嵌入式Linux系统的Web服务器.3)运行环境配置.选择了合适的Web服务器之后,还需要对其进行满足应用要求的合理配置,不同的Web服务器的配置方法大同小异,具体过程中需要考虑的因素有:CGI的默认启动路径配置,CGI服务器根路径(SERV ER-ROO T)配置,CGI脚本路径动态参数配置, CGI源码路径配置.4)交叉编译生成目标机模块.嵌入式系统往往采用交叉编译的环境,因此,CGI运行环境的搭建工作也是遵循这个原则.在宿主机中完成了全部的配置工作后,需要利用特定平台的交叉编译工具来生成特定平台的交叉编译模块,然后再下载到目标机.3 Boa Server在ARM2Linux平台上的实现选用ARM2Linux平台作为嵌入式系统CGI,在嵌入式Linux环境下构建Boa服务器的具体方法为:Ⅰ)对Boa源码进行交叉编译,生成可执行文件Boa.在此过程中需要在/boa/src/configure 文件中加入CC与CPP相关交叉编译选项,同时还要对Makefile文件中CC与CPP选项做同样的改动.在一般的操作系统下:CC=/opt/host/armv4l/bin/armv4l2unknown2linux2gcc; CPP=/opt/host/armv4l/bin/armv4l2unknown2linux2cpp,然后make即可生成所需平台的Boa.Ⅱ)动态配置Web Server Boa.1)修改/boa/src/define.h 文件.在此文件中指定SERV ER -ROO T ,使用户在访问Web 时服务器能确定根目录的位置.还可以在目标板中通过命令行来指定该路径,且命令行所指定的路径具有更高的优先级,即命令行指定的SERV ER -ROO T 可以覆盖defines.h 文件所指定的.具体方法是:#define SERV ER -ROO T “/home/httpd ”或boa 2c/home/httpd/&.2)修改boa.conf 文件.该文件是一个文本文件,由一些规则组成,用于配置Boa 服务器时指定相应接口、服务器名称、一些相关文件路径等.Boa 服务器正确运行的前提是必须保证boa.conf 文件的正确配置.对其具体修改如下:①将User nobody 改为User 0;②将Group nogroup 改为Group 0;③将Document Root/var/www 改为Document Root/home/httpd/html ;④定义CGI 程序所在的目录:ScriptAlias/cgi 2bin//home/httpd/cgi 2bin/;⑤定义默认页面文件ScriptAlias/index.html//home/httpd/html/index.html.这样配置后的Boa 服务器将/home/httpd 作为服务器的根目录,CGI 程序放在/home/httpd/cgi 2bin 目录下,静态网页文件放在/home/httpd/html 目录下.3)将生成的Boa 可执行文件加入到ramdisk 中的/bin/下,并把修改后的boa.conf 拷贝到Web 服务器根目录/home/httpd/下.4)建目录.由于默认的根文件系统ramdisk 是只读的,不能用mkdir 等命令来创建新目录,所以在编译内核前先建好要用到的目录.5)重新编译内核,将编译好的内核下载到开发板,启动Boa Web Server ,然后就可以通过IE 在主机端访问目标板中的网页.4 应用实例本文的硬件环境是以S3C2410微处理器为核心开发板,板中集成Samsung 公司推出的S3C2410处理器.该处理器具有低功效、高性能、体积小、高集成度、高性价比等优点,可装载和运行嵌入式Linux 操作系统,其最显著特征是其CPU 核心是由ARM 公司设计的203MHz 的ARM920T 内核,它实现了MMU ,AMBA BUS 和Harvard 高速缓冲体系结构.针对该硬件环境,采用上述提出的嵌入式Linux 环境下Boa 服务器的实现方法,搭建了基于三星S3C2410的ARM9平台上的CGI 运行环境,并采用C 语言开发出一套Web/CGI 图2 开发配置连接图示管理系统.该系统实现了通过IE 来访问开发板,并通过点击相应功能演示菜单来管理开发板(例如修改开发板IP ,设置系统时间等).1)开发时系统连接图及其IP 分配如图2所示.整个开发系统由一个S3C2410开发板,一台安装Linux 操作系统的宿主机,一台Windows PC 机组成,通过HUB 构成一个局域网,配置IP 分别为192.168.2.120,192.168.2.25,192.168.2.26,开发板和宿主机之间通过串口线连接.162 第4期金顺燕,等:嵌入式ARM 2Linux 环境下CGI 的实现262延边大学学报(自然科学版)第32卷 2)Web/CGI管理系统概要流程为:①在宿主机上启动minicom作为目标板的仿真终端,执行mount2o nolock192.168.2.25:/cgi2bin/home/httpd/cgi2bin;②在宿主机上修改完cgi程序,执行make进行交叉编译,在Windows PC机上用IE输入192.168.2.120测试修改结果是否正确;③通过调试后,将最终定版的ramdisk.image.gz抄写到板子上,则可以通过IE控制开发板.3)以“设置IP”为例,编写一个showsetip()函数用来动态生成一个设置IP的页面,真正的IP设置是用户在这个页面上点击“确认”后调用一个setip()函数.程序框架代码如下: int main(int argc,char3argv[]){ …… ∥根据函数功能码,调用相应功能函数 ∥显示设置IP界面 if strcmp(string.stringout[0],″49″)==0) showsetip(); ∥提交IP设置请求,完成具体IP设置 else if(strcmp(string.stringout[0],″48″)==0) setip(); …… } int showsetip(){ …… <form method=get action=/cgi2bin/config.cgi> <!22数据采用get方式传递给CGI程序∥22> <!22服务器使用QU ER Y-STRIN G的环境变量来接受数据∥22> <input type=hidden name=flag value=48checked> <!22指定用户点击确认后的处理命令码为48∥22> …… } int setip(){ …… querystring=getenv(“QU ER Y-STRIN G”); splitedstring=splitstring(querystring,′&′); …… fp=fopen(″/jffs2/etc/ipset″,″w″); snprintf(stringtowrite,100,″route add default gw%s″,splitedstring.stringout[3]); fprintf(fp,″%s\n″,stringtowrite); fclose(fp); …… }Web/CGI管理界面如图3所示.图3 Web/CGI 管理界面5 结束语本文对嵌入式Linux 环境下的Web 服务及CGI 的工作机理进行了分析,提出了在嵌入式ARM 2Linux 环境下Boa Web Server 的实现方法,使用户在浏览器端对指定的嵌入式设备进行远程操作.虽然不同的嵌入式系统往往会选用不同硬件平台以及操作系统,但是对于嵌入式系统环境下Web 服务环境的构建和动态交互CGI 脚本的开发方法,本文都给出了一个较好的思路.用户可以根据不同应用需求,选取合适的Web 服务器,采用该方法来构建CGI 环境.参考文献:[1] 刘国梅,郑安平.uClinux 下动态Web 技术的实现方法[J ].单片机与嵌入式系统应用,2004(2):67269.[2] James Marshall.CGI Made Really Easy[EB/OL ]/easy/cgi/,2002-04.[3] 张曦煌,柴志雷.嵌入式Web 服务器中CGI 的特点及实现[J ].小型微型计算机系统,2003,24(11):46248.[4] 刘峥嵘,张智超,许振山.嵌入式Linux 应用开发详解[M ].北京:机械工业出版社,2004.6.[5] Larry Doolittle ,Jon Nelson.Boa Webserver[EB/OL ].http :///documentation/,2003-02.[6] Web Server Comparisons[EB/OL ].http :///software/thttpd/benchmarks.html ,1998-07.Implementation of CGI in ARM 2Linux embedded environmentJ IN Shun 2yan , ZHAN G Jian 2min , L I Yun 2jun(Depart ment of Com puter Science and Technology ,College of Engineering ,Yanbian U niversity ,Yanji 133002,China )Abstract :In order to satisfy the needs for the interactive dynamic CGI technology in embedded system ,this paper develops a method to configure the parameters for a Boa Web server under the embedded ARM 2Linux environment.A Boa server environment is actualized in the S3C2410hardware development board using this method.Finally ,an example is given to illustrate this method.Therefore ,according to the different de 2mands ,the user can select an appropriate Web server and construct the CGI environment using this method.K ey w ords :embedded Linux ;CGI ;Boa 362 第4期金顺燕,等:嵌入式ARM 2Linux 环境下CGI 的实现。