嵌入式Web服务器的实现
基于DS80C400的嵌入式Web服务器设计实现

2睥第7 科 1 L 0 1 期
基于DS 0 4 0 8 C 0 的嵌入 式we 服 务器设计实现 b
李会平 ,韩 进 ,薛庆军
(. 1青岛职业 技术 学院软件与服务外包学院 ,山东青 岛 2 6 5 ;2山东科技大 学信 息科学 与1程学 院,山东青 岛 2 6 1 655 . 二 6 5 0)
给C U。 P
接收/ 发送缓冲存储 :D 8 C 0 1 S 0 4 0 ̄太网控制器使用8 的内部S AM ) KB R 作为发送/ 接收包缓冲区。C U P 可以使用MO 指令对这个S A VX R M进行读,
写访 问 。
电源管理模块:D 8C 0 I太网控制器包含了一个电源管理模块 , S 0 40)  ̄
摘 要 介 绍嵌人 式wE 服务 器在工 控应用 领域 中的优势 ,提 出以D 8 c o 为核心处 理器 设计wE 服务 器的方 案 。介  ̄D 8C 0 I B s040 B S0 40MI 模 块 ,给 出基 于D 8 c o 设计wE 服务 器硬件设计 的基本条件 。详细阐述嵌入式WE 系统的硬件系统设计 ,介绍T P s0 4o B B c 议栈 以及H 哪 议
中图分 类号 T 38 文 献 标识 码 A P6 文 章编 号 17 —6 1( 1) 102— 2 639 7- 000 — 000 2 9
WE 技术是Itme It nt B ne tnr e的核心技术之一 ,以H1r技术为基础 , / a TP 具有简单 、高效 、跨平 台等优点,是信息网络的一种最普遍应用的信息 交互平台。借助w B E 服务器和浏览丁具可以实现T业底层控制 网络与上 层监视网络之间数据信息的动态交互 。传统的解决方法是借助P 机和专 c 用的现场智能设备来实现w B E 服务器 ,有成本 高,不易移动等缺点。嵌 入式wE 服务器 ,是将T PI协议 和H T 协议集成 到一个嵌入式系统 B C/ P 1P r 中,成为嵌入式Itnt ne e设备,实现WE 功能。相 比于传统的解决方法 , r B 嵌入式wE 服务器的方法新颖独特,更具 市 B 场竞争力和经济价值。新型 D 8 C 0 是具有高性能结构、多层 网络节点和I S040 / O口及稳定的R M固件 O 的网络微控制器 ,使用o 8c o ̄建we服务器 ,具有开发方便 ,系统 s o 4o b 高度 安 全 可靠 等 优点 。
基于μCLinux的嵌入式Web服务器的设计与实现

式 We b服 务 器 。该 服 务 器 能 支持 工 业 设备 、 用 电 器连 入 互 连 网 , 家 并具 有 很 好 的 We 页 面功 能 , b 能很 好 地 满足 家 用 电 器和
工 业 设 备 接入 互联 网 的 需 求 。
关 键 词 : 入 式 系统 , CLn x, 入 式 We 嵌  ̄ iu 嵌 b服 务 器
《 业控制计算机}0 1 第 2 工 21年 4卷 第 2期
6 7
基于 t L u 的嵌入式 We  ̄ ix C n b服务器的设计与实现
De i n a d e l a i n o sg n R a i t f Emb d e e e v r Ba e o  ̄ z o e d d W b S r e s d n CLn x iu
个 客 户 端 来 的 请 求 。建 立
T CP 类 型 S OCK T 在 E 8 0端 口进 行 监 听 连接 求 。
图 1就是 系统 的结 构 图 。 2 系统 各 模块 设计
L =
& 女
. . 图 ’ 系统结构 流程 图
图 2 系 统 主 程 序 模 块 流 程 图 图 3 客 户 连 接 处 理 模 块 流 程 图
嵌 入式 We b服 务 器 是 指 将 We b服 务器 引入 到 现 场 测 试 和
该 模 块 的 算 法 流 程 图 如 图 3所 示 。
控 制设 备 中 , 传 统 的 测 试 和 控 制 设 备 转 变 为 具 备 了 以 T /P 使 CP I
为 底层 通 信 协 议 , b技 术 为 核 心 的基 于互 联 网 的 网络 测 试 和 We 控 制设 备 。 本 文 选 择  ̄ i x作 为 嵌 入 式 操 作 系统 , CL u n 已成 功将 其移植到开发平台上。
探析嵌入式Web服务器的设计与实现

实现 。 这种 基 于 H T T P协议 的嵌 入 式服 务 器在 运作 上具 有标 准接 口的形 式 以及 通信 协议 。文章 主要 对 实际应 用 中嵌入 式
的 We b服 务 器的论 述 ,介 绍 了嵌入 式 We b 服 务 器 的总体 设计 方案 与主要 作 用 ,分析 了其技 术措 施 。 关键 词 :W e b服 务 器 ;嵌 入 式 ;协议 ;设 计 中图分 类号 :T P 2 7 4 文献标 识码 :B
一
、
引言
控 制 器 作 为 核 心 ,首 先 在 内部要 对 T C P /
嵌 入 式 的 We b服 务器 主 要 就是 通 过 I P协 议 栈 予 以实 现 ,且 对 网络 接 口的控 将 服务 器 嵌 入到 现 场控 制 和测 试设 备 中, 制器予 以驱 动 ,通 过偶 和隔离 变压 器 同以 以相 应 软件 系统和 硬件 的支持 为支持 ,是 太 网接 入 因特 网。另外 ,微控 制器 还要 实 传统 的控 制 、 测 试设 备变 为具备 通信协 议 , 现其作 为 系统控 制单元 的功 能 。 且其 核 心为给 予互 联 网的控制 以及测 试 的 文 章 主要 选 用 了 目前 使 用 最 为 广泛 网络 设 备 ( 通信协 议底层为 T C P  ̄ P)。 的 以太 网作 为 网络接人 方式 。 以太 网是 以 任何 接人 的合 法用 户都 可以通 过 网络 已浏 美 国微 芯 公司生 产 的网络接 口控 制器 为基 览器 方 式为基 础 ,获得其 提供 的控 制 、操 础产 生 的 ,其使 得介 质能具 备 了能够访 问 作 界 面 。且 we b服 务器 具 有 很 强 的独 立 物 理 层 以 及 控 制 子层 功能 。 HI 1 0 2能 够 性 、开 放性 ,为技 术开 发提供 了方便 ,降 直接 连入 以太 网作为 网络 脉冲 的滤波 和转 低 了通 信系 统的维 护工 作量 ,减少 了软件 换器 的耦 合隔 离变压 器 。在嵌 入式 的 We b 设计 的难度 , 进一 步提高 了对 现场 的管理 、 服务 器 中串行 电平转 换主要 选用 了美信 公
嵌入式Web服务器的研究与实现

报警 、 传送 数 据等功 能 。 嵌入 式 We 务 器 系统 可 利 用现 有 的 网络 , b服 不
执行 网络芯 片传送 过来的指令和数据就 可 以实现
中图分 类号 :P 9 .9 T 330 文 献标 识码 : A 开 发周 期 。本 文将 在 8位 单 片 机 的 硬 件平 台上 , 讨 论 和实 现嵌 入式 We b服务 器 的过 程和 方法 。
在嵌入式 I e e 时代 , nm t t 随着信息技术 , 网络技
术 和嵌 入式 系统 的 飞速 发 展 , 多 以单 片 机 应 用 系 许
嵌入式 We 服务器的实现关键是 T P I b C /P协议 栈的引入和裁剪。而将实 时操作 系统 移植到嵌 入 式系统则可提 高系统可靠性 , 提高开发效率 , 缩短
收 稿 日期 :0 70 .5 20 -41 -
独立的通信任务 , 称为 e M c , m i o监测嵌入式设备 中 r
应用 系统 M U只处理较 简单 的 e N t 议 , 行 网 C m e协 进 络连 接 。 ( 1 U 直 接 实 现 形 式 。 实 现该 形 式 的 We 3 MC b 服务 器 , 可选用 多种 型 号 的 MC U来 实 现 网络 协议 ,
C5P F0 6 81 . 0 7 0 2J I
P 0一 7. P 7 7.
P . 45 P . 43
P4. 6
7 HC 7 4 53
如 A 8 C 22 S 5B 10等 , 可根 据具体要 求 T 9 85 、X 2 D 0 并 选用不 同速度 的 M U作为核心 芯片, C 但是基本 硬
嵌入式Web服务器的实现及其CGI应用

Ke r s e e d d w b s r e ;S t d;e e d d d mo b a d;C ;C C y wo d : mb d e e e r ht v p mb d e e o r GI GI
王 俊 ,郭 书军
( 方 工 业 大 学 信 息工 程 学 院 ,北 京 1 o4 ) 北 0 lJ 4
摘 要 :嵌 入 式 设 备 资 源有 限 , 这 种 情 况 下 实现 We 在 b服 务 功 能 比较 困难 。 针 对 嵌 入 式 设 备 这种 特 点 , 文 通 过 比较 本 几种 We b服 务 器 的 优 缺 点 , 定 了 S t d作 为嵌 入 式 We 选 ht p b服 务 器 , 对 其 在 Ln x嵌入 式 平 台下 进 行 了移 植 。 文 中 并 i u 详 细 解析 了 C I 术 的 相 关 原 理 , 结合 H ML表 单 和 C I 术 , 出 了用 C语 言编 写 的基 于 C I G技 并 T G技 给 G C库 的 串 口程 序 ,
( oeeo n r ai n i eig N r hn n esyo Tc nl y B in 0 14 C i ) C lg f m t nE gn r , ot C i U i ri f ehoo , e ig104 , hn l fI o o e n h a v t g j a
l rr a ie ,whc o ie i i ayw sgv n b ih cmbn d wt HTML fr n GItc n lg , e iigd n mi nea t i ewen tecin h msa d C h oo o e y ra zn y a citrci t b t e l t l 21 .
嵌入式Web服务器设计与实现

( 数据 数据 数据 数 据 数据…………)
硬件 的主要 组成 : P XA2 7 0 一 R P 实 验 平 台 。本 系 统 开 发板 中的操作 系统 采用 嵌入 式 L i n u x, 其 具有 优 异 、 可 移
植性强 、 稳 定 性 高 的 网络 功 能 , 采用 2 . 6 . 1 8版 本 的 内核 。
Ac c e pt — l a ngu a ge: z h — c n
0 引 言
嵌 入式 系统是 2 1世 纪 具 有 广 阔 发 展 前 景 的 技 术 方 向之一 , 自2 0世 纪 7 O年 代 初 出 现 嵌 人 式 系 统 的 概 念 以 来 , 嵌 入 式 系 统 以其 高 性 能 、 低 功 耗 等 特 点 获 得 了 高 速 的 发 展 。在 2 0世 纪 末 、 2 1世 纪 初 , 嵌 入 式 技 术 又 与 网 络
( 额 外 的 回 车符 和 换 行 符 )
HTTP响 应 消 息
HTTP / 1 . 1 2 0 0 OK
Da t e:T u e, 2 5 De c 2 0l 2 0 0: 45: 45 G M T
S e r v e r :BW S / 1 . 0
Co nne e t i o n: C l O Se
输 协 议 。 HTTP客 户 首 先 发 起 建 立 与 服 务 器 TC P 的 连
并 响应 , 并根 据 C l i e n t 的请 求 向 C l i e n t 传 送 所 需 内容 。
查
客 户 向 服 务 器 资 源 请 求
服 务 器 端 监 听 客 户 请 求
接 。一 旦 建 立 连 接 , 浏 览 器 进 程 和 服 务 器 进 程 就 可 以 对
嵌入式Web服务器的实现

嵌入式Web服务器的实现1Boa程序1.1Boa简介boa是最受人喜爱的嵌入式web服务器,功能较为强大,支持认证,cgi等。
Boa 是一个单任务的HTTP SERVER,它不像传统的web服务器那样为每个访问连接开启一个进程,也不会为多个连接开启多个自身的拷贝。
Boa对所有的活动的http连接在内部进行处理,而且只为每个CGI连接(独立的进程)开启新的进程。
因此,boa在同等硬件条件下显示出更快的速度。
测试表明boa在Pentium 300MHZ下能够每秒钟处理几千次点击,在20 MHz 386/SX 下能够每秒钟处理几十次点击访问。
Boa和thttpd等,与apache等高性能的web服务器主要区别是,它们一般是单进程的服务器,只有在完成一个用户请求后才能响应另一个用户的请求,无法并发响应,但这在嵌入式设备的应用场合里已经足够了。
Boa设计主要出于速度和安全,是指不被恶意用户暗中破坏,而不是指它有很好的访问控制和通信加密。
可以添加SSL来保证数据传输中的保密和安全。
1.2Boa的功能、特点1)支持HTTP/1.0(实验性的、有条件的支持HTTP/1.1)1.12)支持CGI/1.1,编程语言除了C语言外,还支持Python, Perl, PHP,但对PHP没有直接支持,没有mod_perl, mod_snake/mod_python等。
3)Boa支持HTTP认证,但不支持多用户认证。
4)它可以配置成SSL/HTTPS和IPv6。
5)支持虚拟主机功能。
Boa服务器与其它服务器的不同:为了追求速度和简单性,boa服务器在一些方面不同于一些流行的web服务器。
1)CGI程序的REMOTE_HOST环境变量没有设置2)Boa不具有ssi(server side includes)3)Boa不具有访问控制4)没有chroot选项1.3Boa的工作原理BOA是一款非常小巧的Web服务器,源代码开放、性能优秀、支持CGI通用网关接口技术,特别适合应用在嵌入式系统中。
嵌入式Web服务器的分析与实现

N. o 4,2 0 01
九江 学 院 学 报 ( 自然 科 学版 ) Ju a o ui gU iesy (a r c ne ) orl fi a n r t nt a si cs n jjn v i ul e
( 总第 9 期 ) 1
( u o9 ) S m N . 1
We b服务 器需 要 占用 巨 大空 间 ,无 法 应 用 于 专 门 的领域 。因此对 嵌人 式 We 务 器 的探 索 成 为 一 b服
种必须 。
生成 动态 Fr 发 送 给 嵌 人 式 We om b服 务 器 ;嵌 人
式 We b服务 器解 析 H f 1 P请求 ,然 后 由 F r 解 析 r o m
方式 实现 相互 连 接 ,在 网络 通 信 市场 上 极 具 生 命 力 。而实 际上 ,随着人们 对 Itnt ne e 应用 的依 赖 度 r 增强 ,也 一 定 程 度 上 促 进 了 嵌 人 式 技 术 的发 展 , 嵌入式 设 备几 乎 包 括 了所 有生 活 电器 :手 机 、汽 车 、微 波 炉 、 电 梯 、 自动 取 款 机 、 医 疗 仪 器 等 。 It c技术 的发展使 嵌 人式 设 备 的远 程 控 制 和 管 ne t a r
T PI C /P协议 ,顶 层 由 HI 协 议 进 行 通 信 ,We , b 浏览 器通 过 Sr t 析 器 解 析 浏 览 器 脚 本 ,通 过 cp 解 i
H ML解 析器 解 析 HT Lห้องสมุดไป่ตู้ 言 ,由客 户端 Jv T M aa虚 拟机来 解 析 Jv p lt 且 同时 由 F r 生 成 器 aaape,并 om
设备 则可 以在世 界任 何一 个地 方就 能够 控制 它 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章 嵌入式Web服务器的实现3.1 嵌入式Web服务器的概况随着计算机的日益普及,互联网络(Internet)已经成为人们日常生活的一部分。
互联网络是覆盖率极广、联网设备众多、协议完善、功能强大的一种通信方式,已经成为社会重要的基础信息设施,是重要的信息流通渠道。
具备互联网络的接入功能,已经成为众多使用微处理器的嵌入式应用的发展方向。
网络控制设备逐渐成为一种趋势。
使用互联网络的接入功能将给嵌入式的微处理器应用带来很多好处:利用无所不在的互联网络,可以从全球的任何一个角落实现对设备的监控;利用开放的TCP/IP 网络通信协议,任何的计算机都可以使用通用的网络浏览软件访问设备,不需要专门的计算机和专门的软件;设备的信息通过网页的形式体现。
因此从概念性上来讲,嵌入式Web服务器(Embedded Web Server)是指将Web服务器引入到现场测试和控制设备中,在相应的硬件平台和软件系统的支持下,使传统的测试和控制设备转变为具备了以TCP/IP为底层通信协议,Web技术为核心的基于互联网的网络测试和控制设备。
嵌入式Web服务器系统与传统的Web应用相比,简化了系统结构,将信息采集和信息发布都集成到现场的测控设备中。
一般来说,Web服务器通常由以下几个部分组成:● 服务器初始化部分。
这部分主要完成Web服务器的初始化工作,如建立守护进程、创建TCP套接字、绑定端口、将TCP套接字转换成侦听套接字,进入循环结构,等待接收用户浏览器连接。
● 接收客户端请求。
由于客户端请求以文本行的方式实现,所以服务器也以文本行为单位接收。
● 解析客户端请求。
这部分工作比较复杂,需要解析出请求的方法、URL(统一资源定位符)目标、可选的查询信息及表单信息。
如果请求方法为HEAD,则简单地返回响应首部即可;如果方法是GET,则首先返回响应首部,然后将客户端请求的URL 目标文件从服务器磁盘上读出,再发送给客户端:如果是POST,则比较麻烦,首先要调用相应的CGI程序,然后将用户表单信息传给CGI程序,CGI程序根据表单内容完成相应的工作,并将结果数据返回。
● 发送响应信息之后,关闭与客户机的连接。
Linux环境下,主要有三个Web服务器:Httpd、thttpd和Boa。
Httpd是最简单的一个Web服务器,它的功能最弱,不支持认证,不支持CGI。
thttpd和Boa都支持认证和CGI等,功能都比较全。
如果Web服务器仅需提供一些静态页面,例如系统介绍、简单的在线帮助等,完全可以用静态服务器Httpd 来实现。
但若需要与用户进行交互,例如数据查询、实时状态查询等,则必须使用动态Web技术,可以选用thttpd或者Boa来实现。
目前实现动态Web页面有多种技术可供选择,CGI, ASP, PHP等技术。
针对具体的嵌入式人机界面要实现动态数据和状态查询,而且要实现逻辑算法的实现,因此选择支持ASP、CGI、embedded JavaScript等脚本语言的Goahead。
3.2Goahead服务器3.2.1 GoAhead Web服务器的概况Web服务器采用GoAhead Web服务器,一款主要面向嵌入式系统的Web服务器。
它的体积非常小巧,但提供了不少的服务特性,它支持ASP,嵌入的JavaScript与内存CGI处理。
3.2.2 GoAhead Web服务器的结构图3-1为GoAhead Web服务器的处理流程,下面简单介绍其结构:main.c:GoAhead Web服务器的主程序文件,完成初始化、设置环境和启动Web 服务器等功能。
● 网页的根目录:*rootWeb = T("web");修改*rootWeb到新的网页目录下。
● 设置网站主页:websRedirect( wp, T("home.asp"));● 设置访问密码:*password = T("");● 设置访问端口:port = 80;Asp.c:asp解释器模块,主要有以下几个功能函数:websAspFunctions = symOpen( WEBS_SYM_INIT * 2 );创建asp函数列表,其中WEBS_SYM_INIT在头文件“wsIntrn.h”中定义。
websAspDefine( char_t *name, int (*fn)( int ejid, webs_t wp, int argc, char_t **argv));创建asp函数命令。
websAspFunctions是加载asp函数的标志;aspOpenCount是使用asp功能块的程序的个数;int websAspOpen()打开websasp正确返回0;void websAspClose()关闭asp模块;int websAspRequest( webs_t wp, char_t *lpath);处理asp请求和script命令。
Form.c:实现/goform的处理,主要有以下几个功能函数:formSymtab 是/goform处理列表的标志;int websFormHandler( webs_t wp, char_t *urlPrefix, char_t *webDir, int arg, char_t *url, char_t *path, char_t *query)处理form请求;int websFormDefine( char_t *name, void (*fn)( webs_t wp, char_t *path, char_t *query))定义一个form 的函数功能块;void websFormOpen()打开form表;void websFormClose()关闭form表。
cgi.c:cgi功能块int websCgiHandler( webs_t wp, char_t *urlPrefix, char_t *webDir, int arg, char_t *url, char_t *path, char_t* query)处理form请求。
security.c:安全功能块int websSecurityHandler( webs_t wp, char_t *urlPrefix, char_t *webDir, int arg, char_t *url, char_t *path, char_t *query)处理安全请求。
基于以上GoAhead Web服务器的结构和特点,针对动态网页的实现方面,采用ASP 和embedded JavaScrip技术来实现,才能实现组态动态网页。
3.3 Goahead服务器的移植Goahead的移植工作可以分为以下三个步骤来完成:第一步:下载Goahead源码由于Goahead的源代码是开放的,因此可以从Goahead的官方网站上下载到Goahead最新版本的源码。
最新开放源代码的Goahead版本为2.18。
第二步:配置Goahead Web服务器解压缩最新版本的Goahead服务器,进入目录,在修改/LINUX下的Makefile文件,将CC = arm-linux-gccAR = arm-linux-ar加到文件开始处,将cc -c -o $@ $(DEBUG) $(CFLAGS) $(IFLAGS) $<换成$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(IFLAGS) $<第三步:编译并下载执行$ Make clean$ Make将在LINUX目录下生成webs 和libwebs两个文件,只需将两个文件拷贝到ARM 目标板。
由于嵌入式系统没有足够的内存或存储资源来编译可执行代码,只有通过交叉编译代码来创建针对嵌入式系统的可执行文件,并把此文件送到目标机上执行。
因此,通常的嵌入式系统的开发都是装有Linux的PC机作为宿主机来编译内核和应用程序。
编译时可用arm-linux-来指定交叉编译器,不过使用之前先检查PATH路径是否正确。
在ARM目标板上运行Goahead Web服务器,还必须对目标板进行设置,设置如下:首先,在/etc/modules.conf 中加入alias binfmt-464c off ;其次,由于ARM中的Linux没有hostname,因此设置:hostname localhost; 设置IP地址:ifconfig eth0 192.168.1.34。
这样本地的浏览器或者其他主机的浏览器就可以浏览Goahead Web服务器网页。
注意:编译后用 strip 裁减生成的静态库与 webs 的文件大小,两个都在 120kb 左右,否则两个大小有 1.5MB。
3.4 Goahead服务器功能修改与增加3.4.1 Goahead服务器配置Goahead服务器得在程序中编译其配置信息,必须在编译之前将系统参数设置好,编译后,便不可以再改变。
针对这个功能,可以采取将配置信息存储在文件中,Goahead 运行时去获取相应配置信息即可。
那么就不需要重新编译其应用程序,只需要修改一下配置信息。
修改一些参数将其设置成配置信息,使其在修改时,不用重新编译和下载程序,现在做如下规定,配置参数存放在webs文件的同目录下,文件名为:“ServerCfg”。
需要配置的参数主要有以下几个,并定义其顺序,方便程序读取其参数。
0----------*rootWeb = T( "web" )1----------*password = T( "123456" )2----------port = 8080 (int)3----------retries = 5 (int)4----------umRestore( T("websconfig.txt") )5----------T( "/goform" )///goform handler6----------T( "/cgi-bin" )///cgi handler7----------T( "default.asp" )////default page8----------T( "asp.asp" )////home page9----------hostname///10---------ip地址定义了初始化程序,在Goahead服务器启动时,首先调用初始化程序;其次才正常启动Goahead服务器。
static int initconfig();//初始化配置信息为了方便初始化配置数据信息,定义了如下数据结构供初始化函数时使用: #define nmemb 11struct para_test{char name[30];int size;}serverCfg[nmemb];由于Goahead服务器启动过程中需要有hostname和ip地址,因此,在初始化程序中,将设置hostname和ip地址。