小**。
课程名称: 嵌入式系统设计。
**题目: 基于arm9的网络服务器设计。
摘要。本**中,我们以嵌入式系统设计课程中所学知识为基础,对基于arm的简单嵌入式web服务器系统进行了简单设计。本设计利用arm 自带的web服务器技术,来实现对嵌入式web服务器系统的控制设计。
该技术基于web服务器之上,且用嵌入式web服务器来实现对于网络的访问。
本设计说明重点介绍了如下几方面的内容:
1)基于嵌入式web服务器的http协议;
2)linux 下的signal()函数的使用;
3)嵌入式web服务器的工作原理;
4)arm开发板上的socket网络编程。
关键词:arm体系;嵌入式web服务器;http协议 ;socket网络编程。
目录。第一章绪论 3
1.1课题简介 3
1.2设计目的 3
1.3设计内容 3
1.4 设计用途 3
第二章嵌入式web服务器设计原理简介 4
2.1 需求说明 4
2.2 功能需求详细说明 4
2.3 数据流图(dfd) 6
2.4 数据需求 6
第三章嵌入式web服务器设计流程 7
3.1 系统结构图 7
3.2 整体结构图说明 7
3.3 连接处理模块 8
3.4功能分配 8
第四章嵌入式web服务器设计程序分析及实践 10
4.1 程序设计 10
4.2程序分析 11
4.3 实验步骤 15
参考文献 17
随着后pc时代的到来,嵌入式系统技术已经成为了一个万众瞩目的焦点。目前已广泛应用于信息家电、数据网络、工业控制、医疗卫生、航空航天等众多领域。巨大的市场潜力,无穷的商机,吸引了各路英豪纷踵沓来。
arm单片机技术由于其微小的体积和极低的成本,广泛的应用于家用电器、工业控制等领域中。在工业生产中,电流、电压、温度、压力和流量也都是常用的被控参数。
arm单片机控制嵌入式web服务器系统,是利用arm作为系统的主控制器,由linux下的vi编程,来实现对于嵌入式web服务器的访问。本设计采用arm技术,其具有集成度高,运算快速快,体积小、运行可靠,价值低廉的特点,适宜于绝大多数的控制过程。鉴于这样的重要性,我们打算设计一种基于arm的嵌入式服务器系统。
运用arm体系结构与编程所学知识及查阅相关资料,完成嵌入式web服务器的设计,达到理论知识与实践更好结合、提高综合运用所学知识和设计能力的目的。
熟知嵌入式web服务器的工作原理、socket网络编程。使用redhat linux 9.0 操作系统环境及arm 编译器,编译web服务器的驱动模块和应用程序,实现嵌入式web服务器的设计。
学习使用socket进行通讯编程的过程,了解一个实际的网络通讯应用程序整体设计, 读懂 源**。在此基础上增加一些其他功能。在pc计算机上使用浏览器测试嵌入式web服务器的功能。
图2.1 嵌入式web服务器需求说明。
1)获取服务器当前目录文件列表。
将服务器当前目录下所有文件的信息发送给客户端,信息包括:文件名、大小、日期。
2)获取指定文件。
将客户请求的文件发送给客户。
3)获取html 类型文件。
将客户请求的html 类型文件发送给客户。
4)获取纯文本文件。
将客户请求的纯文本发送给客户。
5)获取jpg 图像文件。
将客户请求的jpg 图像文件发送给客户。
6)解析用户请求。
分析客户的请求,将请求信息解析为几个变量,包括:请求的命令、请求的文件名、请求的文件类型。
图2.2 数据流图(dfd)
回应http协议数据头格式要求,如表2.1 所示:
表2.1 http 协议数据头格式。
图3.1 系统结构图。
主程序:建立tcp 类型socket 在80 端口进行监听连接请求。接收到连接请求,将请求传送给连接处理模块处理。并继续进行监听。
图3.2 连接处理模块。
1)发送当前目录文件列表信息。
将服务器当前目录下所有文件的信息发送给客户端,信息包括:文件名、大小、日期。
2)发送html 类型文件。
将客户请求的html 类型文件发送给客户。
3)发送纯文本文件。
将客户请求的纯文本发送给客户。
4)发送jpg 图像文件。
将客户请求的jpg 图像文件发送给客户。
5)发送gif 图像文件。
将客户请求的gif 图像文件发送给客户。
6)解析客户请求http 协议头。
分析客户的请求,包括:
1. 空格处理。
2. 解析客户请求命令。
3. 解析客户请求的资源名。
4. 解析客户请求的资源类型。
7)客户连接处理。
解析referrer 和content_length 字段值并调用客户请求解析函数。
8)发送http 协议数据头。
根据发送文件类型发送相应的http 协议头信息。
4.1.1、接口设计。
客户连接处理。
函数名:int handleconnect(int fd)
参数:客户连接文件描述字。
4.1.2、解析客户请求。
函数名:int parsereq(file *f, char *r)
参数:参数1:文件流file 结构指针,用于表示客户连接的文件流指针。
参数2:字符串指针,待解析的字符串。
4.1.3、发送http协议数据头。
函数名:int printheader(file *f, int content_type)
参数:参数1:文件流file 结构指针,用于表示客户连接的文件流指针。用于写入http
协议数据头信息。
参数2:信息类型,用于确定发送的http 协议数据头信息。
4.1.4、发送当前目录文件列表信息。
函数名:int dodir(file *f, char *name)
参数:参数1:文件流file 结构指针,用于表示客户连接的文件流指针。用于写入目录文件信息数据。
参数2:目录名,表示客户请求的目录信息。
4.1.5、发送html文件内容。
函数名:int dohtml(file *f, char *name)
参数:参数1:文件流file 结构指针,用于表示客户连接的文件流指针。用于写入文件信息数据。
参数2:客户请求的文件名。
4.1.6、发送纯文本(txt)文件内容。
函数名:int dotext(file *f, char *name)
参数:参数1:文件流file 结构指针,用于表示客户连接的文件流指针。用于写入文件信息数据。
参数2:客户请求的文件名。
4.1.7、发送jpeg图像文件内容。
函数名:int dojpeg(file *f, char *name)
参数:参数1:文件流file 结构指针,用于表示客户连接的文件流指针。用于写入文件信息数据。
参数2:客户请求的文件名。
4.1.8、发送gif图像文件内容。
函数名:int dogif(file *f, char *name)
参数:参数1:文件流file 结构指针,用于表示客户连接的文件流指针。用于写入文件信息数据。
参数2:客户请求的文件名。
4.2.1、主程序设计。
1)功能说明。
系统的总入口,也是系统的主要控制函数。分别完成如下功能:
建立环境设置。
设置信号处理方式。
建立侦听tcp 流方式socket 并绑定80 端口。
建立连接侦听及客户连接处理调用主循环。
2)算法流程图。
算法流程图如图4.1所示:
图4.1 主程序数据流程图。
3)命令行输入处理。
用户在命令行输入参数 -i ,则将客户输入文件描述字设为0,即标准输入。用于在本机进行测试。其他输入全部忽略。
4.2.2、客户连接处理模块设计。
1)功能说明。
用于初步处理客户的连接请求,并将请求信息传递给客户请求解析函数处理。
2)算法。算法流程图如图2.2所示:
图4.2 客户连接处理模块数据流程图。
4.2.3、客户请求解析处理模块设计。
1)功能说明。
用于解析客户的请求,并根据请求信息调用相应的函数进行请求处理。
2)算法。算法流程图如图2.3所示:
图4.3 客户请求解析处理模块数据流程图。
4.2.4、发送http协议数据头模块设计。
1)功能说明。
根据参数的不同,发送不同的http 协议头信息。
2)算法。函数定义为:int printheader(file *f, int content_type)
发送请求成功信息:http/1.0 200 ok。
根据文档类型发送相应的信息:
fprintf(),函数中的第一个参数f 为客户连接文件流句柄。
switch (content_type)
case 't':
fprintf(f,"content-type: text/plain");
break;
case 'g':
fprintf(f,"content-type: image/gif");
嵌入式ARM嵌入式系统设计
摘要 本系统设计了基于arm系统的嵌入式硬件平台,其中主要介绍了系统母版的具体电路实现,其硬件电路已经通过了信号完整性分析。中国 网 关键词 arm 嵌入式系统 中图分类号 tp368.1 文献标识码 a 文章编号 1007 9416 2012 12 0104 01 1 序言 本系统是设计一款基于a...
嵌入式linux与嵌入式系统设计
ustc bbs embedded斑竹d j主讲。感谢hongtao chen以及networking斑竹jun zxjun的大量幕后工作!感谢james zhang以及网络中心提供聚会的场地和大力支持!欢迎访问我的主页。聚会详情如下 名称 嵌入式系统设计以及嵌入式linux展望 时间 本周星期天 ...
嵌入式嵌入式系统原理与设计
第六章 iic总线。一 iic总线介绍 i2c总线 1.结构。2.工作原理 a b 主机 主设备 负责生成scl时钟,同时负责发出其实信号s和终止信号p 从机 从设备 被主机寻址的器件。1 a检测i2c总线是否 空闲 如果空闲 高 a发出起始信号 scl高,sda 2 寻址选择目标器件b,发送7位地...