基于arm9的嵌入式linux系统的webserver服务器内容摘要:

STN 和 TFT), NAND Flash 控制器, 4 个 DMA 通道, 3 通道 UART, 1个 I2C 总线控制器,一个 I2S 总线控制器,以及 4 通道 PWM 定时器和一个内部定时器,通用 I/O 口,实时时钟, 8 通道 10 位 ADC 和触摸屏接口, USB 主 /从口, SD/MMC 卡接口,还有 2 通道 SPI 以及时钟锁相环 PLL 等。 S3C2410X片上外设详细介绍如下 : ⑴ 核心电压, 存储器电压, 外部 I/O 电压 ; ⑵ 外存控制器 (SDRAM 控制器和 片选逻辑 ); ⑶ LCD 控制器 (支持 4K 色 STN 和 256K 色 TFT 显示 ); ⑷ 带外部请求管脚的 4 通道 DMA; ⑸ 3 通道 UART(, 16 字节 TxFIFO 和 16 字节 RxFIFO), 2 通道SPI; ⑹ 1 通道主 IIC 总线和 1 通道 IIC 控制器 ; ⑺ 版本 SD 接口,兼容 版本 MMC 接口 ; ⑻ 2 个 主 设备接口, 从设备接口 ; ⑼ 4 通道 PWM 计时器和一个通道内部计时器 ; 9 ⑽ 看门狗计时器 ; ⑾ 117 个通用刀 I/O 口, 24 个外部中断源 ; ⑿ 电源模式 :正常,低功耗,空闲和掉电模式 ; ⒀ 8 通道 10 比特 ADC 和触摸屏接口 ; ⒁ 带日历功能的 RTC(Real Time Controller); ⒂ 片上带 PLL 时钟发生器。 S3C2410X 拥有丰富的片上外设资源,大大的减少的外围器件的需求,增加了系统的集成度和可靠性。 在存储器系统管理方面,该芯片支持大端 (Big Endian)和小端 (Little Endian)处理器模式,支持 8 个 128M 的存储器 Bank 地址空间 (总共 1GB 容量 ),每个 Bank 支持 8/16/32 位数据总线编程,有一个起始地址和大小可编程的 Bank7 和 7 个起始地址固定的 Bank(0~6),所有的内存 Bank 都可以编程寻址周期,支持外部等待信号延长总线周期。 支持 SDRAM 自动刷新,支持多种类型的 ROM 启动,包括 : NOR/NANDFlash、 EEPROM 等。 在芯片启动方式上, S3C2410X 支持 NORFlash 启动,也支持 NANDFlash启动。 NANDFlash容量大、价格低,不过启动速度没有 NORFlash快。 从 NORFlash启动时,要把 Flash 芯片的首地址映射到 Ox00000000 位置,系统启动后,烧录在 NORFlash 里面的启动程序本身把自己从 Flash 中搬到 RAM 中运行 ; 从NANDFlash 启动,可将引导程序加载程序、操作系统映象以及应用程序映象存放在外部 NANDFlash 中,设备上电复位后,片内 NANDFlash 控制器访问接口,把 NANDFlash 的前 4K 搬到 S3C24l0X 的内部 RAM 中,并把内部 RAM 的首地址设为 0x00000000, CPU 从 0x00000000 开始执行。 在 NANDFlash 的前 4K 代码中,需要包含从 NANDFlash 把下载程序其余部分装入 RAM 的程序。 系统的研究与设计 嵌入式 Web服务器 (EWS. Embedded Web Server)是指将 Web服务器引入到现场测试和控制设备中,在相应的硬件平台和软件系统的支持下,使传统的 测试和控制设备转变为具备了以 TCP/IP为底层通信协议, Web技术为核心的基于互联网的网络测试和控制设备。 实现嵌入式 Web服务器的关键技术主要有 HTTP协议和通用网关接口 CGI。 嵌入式 Web服务器的原理与通用服务器的类似,浏览器通过HTTP协议与嵌入式服务器交互,服务器内部通过动态网页技术实现与嵌入式系 10 统的信息交互。 为达到远程访问动态页面的目的,必须使客户机能同本地系统进行交互,这种交互可以使用很多种方法来实现,如 SSI, Java Served等,但目前最适合嵌入式系统的是通用网关接口 CGI。 对于在嵌入式 环境下运行的 Web服务器没有足够的空间运行 PHP, JSP, ASP等脚本的解释器模块,同时由于嵌入式 Web服务器一般都是用来控制设备的,所以用底层语言开发更为合适,而 CGI脚本对于语言没有限 制,可以选择任何适合的语言。 硬件平台设计 在本设计中,充分利用了 S3C2410X 所继承的片上资源,只需要扩充SDRAM、 NORFlash、 NANDFlash、 Etherner Interface、 RS232 Interface、 Power等模块。 其硬件逻辑结构框图如图 21 所示。 图 21 嵌入式 WEB服务 器的硬件结构图 嵌入式 Web Server 服务器工作原理 本设计的嵌入式 Web 服务器系统软件主要由 HTTP Web Server 守护任务模块、 CGI 程序和网络通信模块三部分组成。 下面简单叙述其工作过程: 服务器端软件的守护进程始终在 HTTP 端口 80 守侯客户的连接请求,当客户端向服务器端发起一个连接请求后,客户和服务器之间经过 3 次握手建立起连接。 守护程序在接收到客户端 HTTP 请求消息后,对其进行解析,包括读取URL,映射到对应的物理文件,区分客户端请求的资源是静态文本页面还是 CGI应用程序等。 如 果客户请求的是静态文件,那么守护任务程序读取相应的文件 11 作为 HTTP 响应消息中的实体返回给客户端,客户端浏览器通过解码读取相应的内容并显示出来。 如果客户端的请求是 CGI 应用程序,那么服务器将创建相应的 CGI 应用程序进程,并将各种信息 (如客户端请求信息和服务器的相关信息等 )按 CGI 标准规范传递给 CGI 应用程序进程,接着由此 CGI 进程接管对服务器需要完成的相关操作的控制。 CGI 应用程序读取从 HTTP Web Server 传递来的各种信息,并对客户端的请求进行解析和处理,最后 CGI 应用程序会将处理结果按照 CGI 规范 返回给 HTTP Web Server, HTTP Web Server 会对 CGI 应用程序的处理结果进行解析,并在此基础上生成 HTTP 响应信息返回给客户端。 HTTP采用请求 /响应的握手方式。 其工作的基本过程是:建立连接、发出请求、进行响应和结束连接。 另外,在 HTTP/ (Keepalive)的概念,即服务器在服务完一个请求之后,并不立即关闭连接,而是在服务了一定数量的客户请求或在客户明确提出关闭连接指令之后关闭连接。 HTTP的工作过程如图 22所示。 图 22 HTTP工作过程 HTTP的详细工作过程如下: ⑴ 建立连接 连接的建立是通过申请套接字实现的。 客户打开一个套接字并把它约束在一个端口上,如果成功,就相当于建立了一个虚拟文件,以后就可以在该虚拟文件上进行读写。 ⑵ 发出请求 打开一个连接后,客户机把请求消息送到服务器的连接端口上,请求方式为:统一资源标识符 (URL)、协议版本号、后边是 MIME信息 (包括请求修饰符、客户端信息和可能的内容 )。 这个端口一般是 80,完成提出请求动作。 ⑶ 进 行响应 12 服务器处理完客户的请求之后,向客户机发送带有数据的 HTTP响应消息。 ⑷ 结束连接 客户和服务器双方都可以通过关闭套接字来结束对话,一般情况下服务器发送完客户端请求的文件后会主动关闭套接字。 嵌入式 Web Server 服务器的系统结构 整个系统采用 B/S 模式,连接到 Inter 的计算机通过浏览器访问嵌入式Web 服务器,实现静态或者动态网页的访问。 该模式使用简单,便于维护,扩展性好,因此已成为主流,典型的嵌入式 Web 服务器系统结构图如图 23 所示。 图 23 嵌入式 WEB服务器系统结构图 3 嵌入式 Web Server 服务器的实现 建立嵌入式开发平台 Linux 交叉开发模式 Linux 交叉开发采用宿主机和目标机的模式进行。 宿主机是一台运行 Linux的 PC 机,目标机即 JXARM92410 教学实验系统。 开发时使用宿主机上的交叉编译、汇编及连接工具形成可执行的二进制代码,这种代码并不能在宿主机上执行,而只能在目标机上执行。 然后把可执行文件下载到目标机上运行。 在主机的 RedHat Linux 操作系统下安装 Linux 发行包以及 交叉编译器armlinuxgcc。 然后对 Linux 进行配置 (make menuconfig)并选择适合本系统的相 13 关配置,配置完成后进行编译生成 Linux 映像文件 zImage。 然后通过 uboot 的tftp 命令将该文件下载到目标板并执行。 Linux 宿主机环境的建立与安装 嵌入式开发通常要求宿主机配置有网络,支持 NFS(为 Linux 应用程序开发时使用 ),支持 TFTP 服务器 (为内核下载和烧写使用 )。 然后要在宿主机上建立交叉编译调试的开发环境。 因此在宿主机上安装的 Red hat 必须具备以 上条件。 ⑴ 安装 Linux: ① 建议首先在 window 下使用 patronage 工具软件分配出大约 4G 的自由磁盘空间。 ② 将 Red Hat 光盘插入光驱中,本例中以 Red Hat 为例进行说明。 安装 Red hat ,安装时请选择完全安装,即选择 Custom 定制安装,在配置 Firewall 时请选择 No Firewall,在选择软件 Package 时选择最后一项:everything,即完全安装。 ⑵ 配置以太网: 前提必须是以太网卡已经配置正确,对于一般常见的 RTL8139 网卡,REDHAT 及更高版本可以自动识别并自动装好,不要用户参与,因此建议使用该网卡。 然后配置宿主机 IP,本系统设计过程中均假设宿主机的 IP 地址为 : [root@localhost root]ifconfig eth0 ⑶ 配置 TFTP 服务器: 开通宿主机上的 TFTP 服务,对于 Red hat ,在宿主机上 执行 : [root@localhost root]setup 选择 System services,如图 31 所示。 14 图 31 将其中的 tftp 一项选中,如图 32 所示。 图 32 去掉 ipchains 和 iptables 两项服务,如图 33 所示。 15 图 33 选择 Firewall configuration,选中 No firewall,如图 34 所示。 图 34 最后,退出 setup,执行如下命令以启动 TFTP 服务: [root@localhost root]service xid restart 配置完成后,自己 tftp 自己,测试 TFTP 是否可用,在宿主机上执行: 16 cp /home/cvtech/jx2410/images/zImage /tftpboot/ tftp tftpget zImage 结果如图 35 所示。 图 35 此时表示 TFTP 服务器配置成功了。 若弹出信息说: Timed out,则表明未成功,或者用如下命令查看 tftp 服务是否开通: [root@localhost root]stat a|grep tftp 若 TFTP 服务器没有配置成功,需要按照上述步骤重新检查一遍。 注意: 检查宿主机端的 TFTP 服务是否已经开通 ,此步骤只在第一次时使用,以后可忽略。 ⑷ 配置 NFS 服务器: 编辑 /etc/exports 文件,设置如下: [root@localhost root]vi /etc/exports 在该空文件中添加如下行: / (rw) 然后重新启动 nfs 服务,刚才的设置就生效了,如图 36 所示。 17 注意:在使用 nfs 服务的请大家确认防火墙没有限制 nfs 服务,并 且,在系统服务中 portmap 服务是启动运行的。 图 36 现在我们测试一下 nfs 服务,假设有 nfs 服务的主机的 IP 为 ,我们在 上测试。 首先在 上建立目录 /home/tmp。 然后用超级用户执行下列命令 : [root@localhost root]mount :/tftpboot /home/tmp 这样,将 上的目录 ―/tftpboot‖通过 NFS 挂载到了 的目录 ―/home/tmp‖上,在 上查看一下目录 ―/home/tmp‖里面的内容是否和 上目录 ―/tftpboot‖里面的内容完全一样,确定 NFS 服务可用。 ⑸ 设置 mini 在 Linux操作系统下,使用 mini作为超级终端,因此首先必须正确配置超级终端。 在宿主机端 Linux下执行: [root@localhost root]mini –s 结果如图 37 所示。 18 图 37。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。