四种嵌入式web服务器介绍

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Page 11
机械工业出版社
08/13/12
Boot Loader主要分为两种操作模式:
启动加载(Boot loading)模式:这种模式也称为自主模式,即Boot Loader 从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程 并没有用户的介入。这种模式是Boot Loader的正常工作模式,因此在嵌入式 产品发布的时候,Boot Loader显然必须工作在这种模式下。 下载(Downloading)模式:在这种模式下,目标机上的Boot Loader将通 过串口连接或者网络连接等通信手段从主机下载文件。从主机下载的文件通常 首先被Boot Loader保存到目标机的RAM中,然后再被Boot Loader写到目标机 上的Flash存储设备中。
Page 7
机械工业出版社
08/13/12
12.2 嵌入式Linux系统移植
12.2.1 开发环境的构建 12.2.2 Boot Loader分析移植 12.2.3 Linux内核移植 12.2.4 构建根文件系统
Page 8
机械工业出版社
08/13/12
12.2.1 开发环境的构建
嵌入式应用程序的开发流程不同于普通的PC机。相 比于普通的PC机,嵌入式的硬件资源相当的有限,不可 能进行本地的开发。因而,嵌入式的软件开发和调试过 程通常是在PC机上实现的。这样就形成了一套在PC机上 交叉编译,然后生成目标机平台的格式,最后在目标机 上执行的开发流程,也就是所谓的交叉编译环境。
进程间通信的代码
内核管理的核心代码
内核用到的一些库函数代码
Page 14
机械工业出版社
08/13/12
mm net security sound usr document ation scripts
Page 15
内存管理代码 网络支持代码,每个子目录对应网络的一个方面
安全、密钥相关的代码 音频设备的驱动程序
所有的设备驱动程序,里面每个子目录对应着一类 驱动程序
Page 13
机械工业出版社
08/13/12
fs
include
init ipc kernel lib
Linux支持的文件系统的代码,每个子目录对应一种文件 系统
内核头文件,包括基本头文件、各种驱动或功能部件的 头文件以及各种体系结构的头文件
内核的初始化代码(不是系统的引导代码)
Page 16
机械工业出版社
08/13/12
3. 修改linux-2.6.26.8/arch/arm/plat-s3c24xx/common-smdk.c文件
static struct mtd_partition smdk_default_nand_part[] = {
[0] = { .name = "kernel", .size = 0x00200000, .offset = 0,
本文使用的是Debian GNU/Linux的操作系统作为开 发平台。首先可以从http://www.debian.org获取Debian最 新的稳定版。正确安装好Debian以后,下一步就要建立 一套跨平台的交叉编译工具链。
Page 9
机械工业出版社
08/13/12
制作一个支持softfloat的交叉编译工具链: (1) 解 压 缩 crosstool-0.43.tar.gz , 把 补 丁 文 件 glibc-2.3.6-version-
(3) 修改arm-softfloat.dat文件,指定TARGET=arm-linux,保证编译出来的工 具是常用的名字。
(4) 修改all.sh脚本,指定安装路径为PREFIX = $ { PREFIX - $RESULT_TOP/ $ TOOLCOMBO }。
(5) 最后以普通用户身份执行./demo-arm-softfloat.sh,大约1~2个小时就编译 好了。此时将交叉编译工具链加入PATH环境变量中就可以使用了。
Page 6
机械工业出版社
08/13/12
4.BOA BOA是一个非常小巧的Web服务器,可执行代码只有约60KB。它是
一个单任务Web服务器,只能依次完成用户的请求,而不会fork出新的进 程来处理并发连接请求。但BOA支持CGI,能够为CGI程序fork出一个进 程来执行。BOA的设计目标是速度和安全,在其站点公布的性能测试中, BOA的性能要好于Apache服务器。
<*> Journalling Flash File System v2 (JFFS2) support (0) JFFS2 debugging verbosity (0 = quiet, 2 = noisy) (NEW) [*] JFFS2 write-buffering support (NEW) [ ] Verify JFFS2 write-buffer reads (NEW) [ ] JFFS2 summary support (EXPERIMENTAL) (NEW) [ ] JFFS2 XATTR support (EXPERIMENTAL) (NEW) [ ] Advanced compression options for JFFS2 (NEW)
Page 4
机械工业出版社
08/13/12
2.thttpd thttpd是一个非常小巧的轻量级web server,它非常简单,仅仅提供了
HTTP/1.1和简单的CGI支持,在其官方网站上有一个与其他 web server (如Apache, Zeus等)的对比图+Benchmark可以参考。此外,thttpd 也 类似于lighttpd,对于并发请求不使用fork()来派生子进程处理,而是采用 多路复用(Multiplex)技术来实现,因此效能很好。
持CGI、SSL、 cookie、MD5认证,还能嵌入(embedded)到现有的软件里, 而且不需要配置文件。由于shttpd可以嵌入其他软件,因此可以非常容易的开 发嵌入式系统的web server,官方网站上称shttpd如果使用uclibc/dielibc(libc的 简化子集)则开销将非常非常低。
Page 10
机械工业出版社
08/13/12
12.2.2 Boot Loader分析移植
对于计算机系统来说,从开机上电到操作系 统启动需要一个引导过程。嵌入式Linux系统同 样 离 不 开 引 导 程 序 , 这 个 引 导 程 序 就 叫 作 Boot Loader。Boot Loader是在操作系统运行之前执 行的一段小程序。通过这段小程序可以初始化硬 件设备、建立内存空间的映射表,从而建立适当 的系统软硬件环境,为最终调用操作系统内核做 准备。Boot Loader的实现非常依赖于具体的硬 件。正因如此,几乎不可能为所有的嵌入式系统 建立一个通用的Boot Loader。
thttpd支持多种平台,如FreeBSD、SunOS、Solaris、BSD、Linux、 OSF等。对于小型web server而言,速度快似乎是一个代名词,通过官方 站提供的Benchmark,可以这样认为:thttpd至少和主流的web server一样 快,在高负载下更快,因为其资源占用小的缘故。
第12章 嵌入式BOA服务器的构建
随着Internet技术的兴起,在嵌入式设备的管 理与交互中,基于Web方式的应用成为目前的主流, 这种程序结构也就是大家非常熟悉的C/S结构,即 在 嵌 入 式 设 备 上 运 行 一 个 支 持 脚 本 或 CGI 功 能 的 Web服务器,能够生成动态页面,在用户端只需要 通过Web浏览器就可以对嵌入式设备进行管理和监 控,非常方便实用。本章主要介绍这种应用的开发 和移植工作。
Page 1
机械工业出版社
08/13/12
第12章 嵌入式BOA服务器的构建
12.1
概述
12.2
嵌入式Linux系统移植
12.3
嵌入式Linux的BOA服务器移植
Page 2
机械工业出版社
08/13/12
12.1 概述
下面简介下嵌入式web服务器。由于嵌入式 设备资源一般都比较有限,并且也不需要能同时 处理很多用户的请求,因此不会使用Linux下最 常用的如Apache等服务器,而需要使用一些专 门为嵌入式设备设计的Web服务器,这些Web 服务器在存贮空间和运行时所占有的内存空间上 都会非常适合于嵌入式应用场合。常见的嵌入式 Web服务器主要有:lighttpd、thttpd、shttpd 和BOA等等。
info.h_err.patch复制到crosstool-0.43/patches/glibc-2.3.6/目录下,它修改 了glibc-2.3.6/csu/Makefile里面的一个小错误,导致生成的version-info.h 文件编译出错。
(2) 修改demo-arm-softfloat.sh脚本,指定编译过程中所需软件包的存放路径 TARBALLS_DIR=$HOME/downloads,指定交叉编译工具链的存放路径 RESULT_TOP=/usr/local/crosstool,需要事先创建好该路径保证其具有可 写的权限。
Page 3
机械工业出版社
08/13/12
1.lighttpd lighttpd是一个德国人领导的开源软件,其根本的目的是提供一个专门针
对高性能网站,安全、快速、兼容性好并且灵活的web server环境,具有非 常低的内存开销,CPU占用率低,效能好,以及丰富的模块等特点。
lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。支 持FastCGI、CGI、 Auth、输出压缩 (output compress)、URL重写、Alias 等 重 要 功能 , 而 Apache 之 所 以 流 行 , 很 大程 度 也 是因 为功 能 丰 富 , 在 lighttpd 上很多功能都有相应的实现了,这点对于apache的用户是非常重要 的, 因为迁移到lighttpd就必须面对这些问题。
Page 12
机械工业出版社
08/13/12
12.2.3 Linux内核移植
目录名 arch
block crypto
drivers
表12-1 Linux内核子目录结构
描述
体系结构相关的代码,对于每个架构的CPU,arch 目录下都有一个对应的子目录
块设备的通用函数
常用的加密和散列算法,还有一些压缩和CRC校验 算法
Hale Waihona Puke Baidu
Page 18
机械工业出版社
08/13/12
本文中采用的是JFFS2的文件系统类型。内核默认已经对JFFS2有着非常良 好的支持,只需要在配置内核的时候加入相应的配置选项就可以了。 JFFS2文件系统配置如下:
File systems ---> Miscellaneous filesystems --->
用来制作一个压缩的cpio归档文件 内核文档
用于配置、编译内核的脚本文件
机械工业出版社
08/13/12
内核的源代码可以从http://www.kernel.org获取: 1. 首先解压缩内核源代码,修改顶层的Makefile文件
ARCH?= arm
CROSS_COMPILE ?= arm-linux这里需要指定目标平台的体系结构和交叉编译工具链的路径。 2. 修改linux-2.6.26.8/arch/arm/mach-s3c2440/mach-smdk2440.c文件 s3c24xx_init_clocks(16934400)修改为s3c24xx_init_clocks(12000000) 指定开发板的晶振频率为12MHz。
thttpd还有一个较为引人注目的特点:基于URL的文件流量限制,这对 于下载的流量控制而言是非常方便的。像Apache就必须使用插件实现,效 率较thttpd低。
Page 5
机械工业出版社
08/13/12
3.shttpd shttpd 是另一个轻量级的web server,具有比thttpd更丰富的功能特性,支
},
[1] = { .name = "rootfs", .offset = MTDPART_OFS_APPEND, .size = MTDPART_SIZ_FULL,
}
};
Page 17
机械工业出版社
08/13/12
下一步,就是进行内核的配置了。这里可以参考S3C2410的开发板来进行 配置和调整,内核自带了S3C2410开发板的配置文件。在内核源代码根目录下, 执行make s3c2410_defconfig,生成一个基于S3C2410的开发板的默认配置 文件。然后再执行make menuconfig会生成一个基于S3C2410开发板的内核配 置菜单。这里需要保留S3C2410/S3C2440 CPU的相关配置选项、TCP/IP协 议、NAND Flash驱动、USB驱动以及适合的文件系统类型。
相关文档
最新文档