ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:98KB ,
资源ID:12872992      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12872992.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(嵌入式系统设计性实验.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

嵌入式系统设计性实验.docx

1、嵌入式系统设计性实验 物理与电子工程学院 嵌入式系统设计设计性实验报告课题题目 基于Web的远程控制设计 系 别 年 级 专 业 电子信息工程 学 号 学生姓名 指导教师 日 期 目 录一、绪论 3二、课题要求 42.1设计要求 42.2运行环境 4三、实验设计及调试 53.1嵌入式WEB服务器BOA的移植 53.1.1 编译BOA 服务器步骤 53.1.2 配置BOA 服务器步骤 63.1.3 CGI程序的编写 73.1.4 网页文件 index.html设计 103.1.5 LED驱动的编译 123.2.运行与调试 123.2.1 加载 LED驱动 123.2.2 运行BOA 133.2.

2、3 错误与解决方案 13四、总结与体会 15参考文献 16一、绪论随着Internet技术的兴起,在嵌入式设备的管理与交互中,基于Web方式的应用成为目前的主流,这种程序结构也就是大家非常熟悉的B/S结构,即在嵌入式设备上运行一个支持脚本或CGI功能的Web服务器,能够生成动态页面,在用户端只需要通过Web浏览器就可以对嵌入式设备进行管理和监控,非常方便实用。下一章节中会介绍这种应用的开发和移植工作。Boa是一个非常小巧的Web服务器,可执行代码只有约60KB。它是一个单任务Web服务器,只能依次完成用户的请求,而不会fork出新的进程来处理 并发连接请求。但Boa支持CGI,能够为CGI程序

3、fork出一个进程来执行。Boa的设计目标是速度和安全,在其站点公布的性能测试中,Boa的性能 要好于Apache服务器。CGI(Common Gateway Interface)是外部应用扩展应用程序与www服务器交互的一个标准接口。按照CGI标准编写的外部扩展应用程序可以处理客户端浏览器输入的数据,从而完成客户端与服务器的交互操作。而CGI规范就定义了Web服务器如何向扩展应用程序发送消息,在收到扩展应用程序的信息后又如何进行处理等内容。通过CGI可以提供许多静态的HTML网页无法实现的功能,比如搜索引擎、基于web的数据库访问等等。二、课题要求2.1设计要求在2440开发板上移植一个bo

4、a程序,使开发板可以作为一个web服务器使用。在PC 计算机上使用浏览器测试嵌入式WEB 服务器的功能。 建立嵌入式系统的web服务功能,利用Web页远程控制嵌入式系统中的硬件状态,如控制Led等的点亮、熄灭等动作。2.2运行环境硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以上。软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开发环境、仿真器驱动程序、超级终端通讯程序。三、实验设计及调试3.1嵌入式WEB服务器BOA的移植3.1.1 编译BOA 服务器步骤我们的网站中提供了b

5、oa的源代码,叫做boa-0.94.13.tar.gz。进入虚拟机Linux系统,首先解压该文件:rootlocalhost webserver# tar -zxvf boa-0.94.13.tar.gz然后进入源代码目录: rootlocalhost webserver# cd boa-0.94.13/src修改文件compat.h的第120行:rootlocalhost src# vi compat.h修改后,第120行的内容如下: #define TIMEZONE_OFFSET(foo) foo-tm_gmtoff即只是去掉了该行的两个# 字符。然后修改boa.c:rootlocalho

6、st srcvi boa.c找到该文件的225227行,注释掉这几行。不然运行的时候会出错。由于我们实验室的开发板已经加载了Linux系统,在实验板上的/etc目录是属于只读文件系统下的,因此不能再其下创建boa目录和复制文件boa.conf到该目录。我们需要修改boa源码中对boa.conf文件的默认路径:修改defines.hrootlocalhost src# vi defines.h将第30行#define SERVER_ROOT /etc/boa修改为可读写的目录/var#define SERVER_ROOT /var源文件的修改就完成了。现在开始编译:首先运行configure程序

7、对源文件进行配置:rootlocalhost src# ./configure配置完成后,生成Makefile,修改Makefile:rootlocalhost src# vi Makefile修改第31行和32行如下: CC = arm-linux-gcc CPP = arm-linux-gcc -E修改完成后,保存文件,运行Make进行编译:rootlocalhost src# make编译完成后,会在该目录下生成我们需要的可执行文件boa。3.1.2 配置BOA 服务器步骤1. 拷贝Boa源码目录下已有的一个示例boa.conf,在其基础上进行修改:Port 80#Listen 192.

8、68.0.5User rootGroup 0#ServerAdmin rootlocalhostErrorLog /var/web_boa/log/error_logAccessLog /var/web_boa/log/access_log#UseLocaltime#VerboseCGILogsServerName www.your.org.here#VirtualHost DocumentRoot /var/web_boa/wwwUserDir public_htmlDirectoryIndex index.htmlDirectoryMaker /usr/lib/boa/boa_indexe

9、r# DirectoryCache /var/spool/boa/dircacheKeepAliveMax 1000KeepAliveTimeout 10MimeTypes /var/web_boa/mime.typesDefaultType text/plainCGIPath /bin:/usr/bin:/usr/local/binAlias /doc /usr/docScriptAlias /cgi-bin/ /var/web_boa/www/cgi-bin/以上内容根据你的文件存放实际路径作参考。将修改好的boa.conf传到开发板得/var目录下。2. 在 /var下建立web_boa

10、目录等,请根据boa.conf文件中的内容相应创建需要的目录。另外,在虚拟机的/etc目录下拷贝mime.types文件到开发板。在开发板的/var/web_boa/log/目录下创建error_log和access_log文件:up-tech:/var/web_boa/log #touch error_logup-tech:/var/web_boa/log #touch access_log3.1.3 CGI程序的编写/pass.c#include #include #include char* getcgidata(FILE* fp, char* requestmethod);int ma

11、in() char *input; char *req_method; char led1064; int i = 0; int j = 0; int fd; printf(Content-type: text/plain; charset=iso-8859-1nn); printf(Content-type: text/htmlnn); printf(The following is query reuslt:); fd = open(/dev/led, 0); if (fd 0) perror(open device /dev/led); exit(1); ioctl(fd, 1, 0);

12、 req_method = getenv(REQUEST_METHOD); input = getcgidata(stdin, req_method);/根据input中的字符串信息确定led灯的点亮关闭 /以下补充完善代码 j=0; for ( i = 0; i (int)strlen(input); i+ )/对接受到的字符串分析 if ( inputi = V ) /如果字符为“V”则取其后面的一位 ledj = inputi+1; j+; for(j=0;j3;j+) /判断灯的状态 if ( ledj=1)ioctl(fd,0,j); /若接收到为1,开相应的灯,否则熄灭 else

13、ioctl(fd,1,j); close(fd); printf(Your POST Message is %s n, input); return 0;char* getcgidata(FILE* fp, char* requestmethod) char* input; int len; int size = 1024; int i = 0; if (!strcmp(requestmethod, GET) input = getenv(QUERY_STRING); return input; else if (!strcmp(requestmethod, POST) len = atoi(

14、getenv(CONTENT_LENGTH); input = (char*)malloc(sizeof(char)*(size + 1); if (len = 0) input0 = 0; return input; while(1) inputi = (char)fgetc(fp); if (i = size) inputi+1 = 0; return input; -len; if (feof(fp) | (!(len) i+; inputi = 0; return input; i+; return NULL;3.编译CGI程序:arm-linux-gcc -o pass.cgi pa

15、ss.c最终生成pass.cgi文件,将其下载到开发板,放到文件夹/var/www/cgi-bin下。3.1.4 网页文件index.html设计1Html语言简介在WWW上的一个超媒体文档称之为一个页面(page)。作为一个组织或个人在万维网上放置开始点的页面称为主页Homepage,或首页,主页中通常包括有指向其他相关页面或其他节点的指针(超级链接)。在逻辑上将视为一个整体的一系列页面的有机集合称为网站(Website或Site)。HTML是一种规范,一种标准,它通过标记符号来标记要显示的网页中的各个部分。网页文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的

16、内容(如:文字如何处理,画面如何安排,图片如何显示等)。浏览器按顺序阅读网页文件,然后根据标记符解释和显示其标记的内容,对书写出错的标记将不指出其错误,且不停止其解释执行过程,编制者只能通过显示效果来分析出错原因和出错部位。但需要注意的是,对于不同的浏览器,对同一标记符可能会有不完全相同的解释,因而可能会有不同的显示效果。2.选择html移植的原因HTML文档制作不是很复杂,且功能强大,支持不同数据格式的文件镶入,这也是WWW盛行的原因之一,其主要特点如下:1) 简易性,HTML版本升级采用超集方式,从而更加灵活方便。2) 扩展性,HTML语言的广泛应用带来了加强功能,增加标识符等要求,HTM

17、L采取子类元素的方式,为系统扩展带来保证。3) 平台无关性。虽然PC机大行其道,但使用MAC等其他机器的大有人在,HTML可以使用在广泛的平台上,这也是WWW盛行的另一个原因。3.代码的编写 Led远程控制  嵌入式LED远程控制系统Led1控制打开  关闭      Led2控制打开  关闭      Led3控制打开  关闭 3.1.5 LED驱动的编译在内核中/linux-2.6.24.4/drivers/char/下有mini2410-leds.c

18、, 该C 文件为LED 的源代码。 单独编译内核驱动:生成mini2410-leds.ko文件。3.2.运行与调试3.2.1 加载LED驱动加载驱动程序 up-touch:/var #insmod mini2410-leds.ko查看新加设备对应的主设备号:up-touch:/var #cat /proc/devices231 leds手动创建设备节点: up-touch:/var #mknod /dev/led c 231 03.2.2 运行BOA将生成的执行文件boa、pass.cgi及index.html文件传到开发板指定目录(boa.conf文件中指定)。执行boa:./boa没有错误

19、提示信息。回到计算机windows界面下,在浏览器中输入开发板的IP地址,得到如下图所示界面:3.2.3 错误与解决方案1.在运行可执行文件boa 时,提示error_log与access_log的相关错误原因是在建立文件error_log和access_log使用的创建文件夹命令mkdir,应改为用touch创建这两个文件。修改后运行boa,没有错误。2点击图上执行按钮后,网页提示:未找到192.168.1.193/cgi-bin/pass.cgi分析原因如下:没有在指定的文件夹/var/www/cgi-bin中放入pass.cgi文件文件夹命名有误经过查看文件夹cgi-bin命名成了cgi

20、_bin,修改后重新运行。四、总结与体会这是个大学的最后一个实验了,时间过得好快,还记得当时刚上大学的青涩模样,不知不觉中都快毕业了。由于前几次做了几个跟这个相关的实验并且顺利的完成,看了实验报告后以为这个实验很简单,导致预习的不是非常的充分。一开始做的时候不怎么顺利,后来老师又把过程讲了一遍,瞬间豁然开朗。嵌入式系统中引入操作系统是目前嵌入式设计与应用的一个热点, 嵌入式操作系统在优化系统设 计、提高系统设计效率、减少系统设计中重复劳动和提高移植性的方面起到了非常积极的作用。嵌入式操作系统中的引导、加载和启动是其中最基本也是最重要的一个步骤。本文结合嵌入式Linux系统和相应的硬件平台, 研

21、究和实践了Linux操作系统向2440开发板上移植的过程, 为后续的驱动程序和应用程序的开发奠定了基础。通过本实验让我进一步熟悉了编程实现嵌入式开发平台的使用。通过网页控制操作,使其可以控制 LED灯的亮灭,虽然最后显示代码的界面没有跳转的出来,不过总体效果还是让人比较满意的, 从这个这个实验中我了解到了很多东西。未来的路还很长,我们要学的还有很多。参考文献1 于明, 范书瑞, 曾祥烨.ARM 9 嵌入式系统设计与开发教程M. 北京: 电子工业出版社,2006:108- 116.2 李亚峰. ARM嵌入式linux设备驱动实例开发M. 北京:中国电力出版社,2008: 150-171.3 潘伟森, 邓胡滨. 嵌入式Linux在S3C2410上的移植分析J. 仪器仪表用户,2008,15(2):121-122.4 师娟娟, 彭迪. 基于ARM 9的嵌入式Linux移植J . 武汉理工大学学报, 2008, 30(2): 205-208.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1