《嵌入式系统与应用》
设计性实验报告
题 目 基于Web的远程控制设计 系 别 年 级 专 业 班 级 学 号 学生姓名 指导教师 实验时间
嵌入式系统课程小论文
目 录
前言 ........................................................................................................................... 2 课题要求 ................................................................................................................... 2 1.本课题的目的 .................................................................................................. 2 2.运行环境 .......................................................................................................... 2 正文 ........................................................................................................................... 2 一、课题分析 ..................................................................................................... 2 二.实验原理 ..................................................................................................... 3 三.系统设计 ..................................................................................................... 3
1.BOA服务器 .................................................................................................................. 3 2. CGI原理 ...................................................................................................................... 4 3.实现Web的远程控制 .................................................................................................. 5 4、运行Boa文件 ............................................................................................................ 8 5、Led灯的驱动 ............................................................................................................. 8 四、技术实现问题 ............................................................................................. 9 五、总结与体会 ................................................................................................. 9 设计性实验报告成绩: 指导教师签名: .................................. 10
1
嵌入式系统课程小论文
前言
随着计算机与网络技术的发展, 远程控制技术进入了一个全新的发展领域, 成为国内外自动控制领域的研究热点。基于远程控制技术开发的远程实验不仅能节省大量的实验资源, 并能使实验者在不同的地点相互协助, 也是进行远程控制研究的重要装置。现代实验设备由于其高度的精密和复杂性以及大量的信息获取和处理要求, 基本上涵盖网络化生产与商业的技术问题, 使得它成为一个非常好的前期模型。正因为如此, 远程科学实验的研究倍受工业界的关注 。基于网络技术的远程实验, 将成为21 世纪科学实验室进行开放性研究的重要模式。
本文研究了基于Web 的远程控制实验系统的硬件和软件设计方法, 重点讨论了远程数据通信实现等关键技术, 并用计算机网络对Led灯的控制。
课题要求
1.本课题的目的
建立嵌入式系统的WEB服务功能(Boa服务器的建立参考实验“嵌入式WEB服务器实验”说明),利用WEB页远程控制嵌入式系统中的硬件状态,如控制Led等的点亮、熄灭等动作。
2.运行环境
硬件:up-Star 认证考试实践板、PC 机Pentium 500 以上, 硬盘10G 以上。 软件:PC 机操作系统REDHAT LINUX 9.0+MINICOM+ARM-LINUX 开发环境
正文
一、课题分析
随着Internet技术的兴起,在嵌入式设备的管理与交互中,基于Web方式的应用成为目前的主流,
2
嵌入式系统课程小论文
这种程序结构也就是大家非常熟悉的B/S结构,即在 嵌入式设备上运行一个支持脚本或CGI功能的Web服务器,能够生成动态页面,在用户端只需要通过Web浏览器就可以对嵌入式设备进行管理和监控,非常方 便实用。
基于Web的远程控制设计,我们首先需要在嵌入式设备上成功移植支持脚本或CGI功能的Web服务器,然后才能进行应用程序的开发。
嵌入式Web服务器移植 由于嵌入式设备资源一般都比较有限,并且也不需要能同时处理很多用户的请求,因此不会使用Linux下最常用的如Apache 等服务器,而需要使用一些专门为嵌入式设备设计的Web服务器,这些Web服务器在存贮空间和运行时所占有的内存空间上都会非常适合于嵌入式应用场合。我们常用的就是Boa服务器的移植。接下来就是配置BOA 服务器的参数以便在开发板上更好的应用。
二.实验原理
基于web 的远程控制系统开发步骤如下:
1、建立可用的软件开发环境; 2、移植Boa 服务器; 3、开发所需的驱动程序; 4、编写html 页面;
5、编写CGI 程序,实现远程控制; 6、登陆服务器,测试系统功能。
三.系统设计
1.BOA服务器
BOA服务器是一个小巧高效的web服务器,是一个运行于unix或linux下的,支持CGI的、适合于嵌入式系统的单任务的http服务器,源代码开放、性能高。BOA是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右。作为一种单任务Web服务器,BOA只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但BOA支持CGI,能够为CGI程序fork出一个进程来执行。BOA的设计目标是速度和安全。
3
嵌入式系统课程小论文
2.CGI原理
Common Gateway Interface,简称CGI。在物理上是一段程序,运行在服务器上,提供同客户端HTML页面的接口。这样说大概还不好理解。那么我们看一个实际例子: 现在的个人主页上大部分都有一个留言本。留言本的工作是这样的:先由用户在客户端输入一些信息,如名字之类的东西。接着用户按一下“留言”(到目前为止工作都在客户端),浏览器把这些信息传送到服务器的CGI目录下特定的cgi程序中,于是cgi程序在服务器上按照预定的方法进行处理。在本例中就是把用户提交的信息存入指定的文件中。然后cgi程序给客户端发送一个信息,表示请求的任务已经结束。此时用户在浏览器里将看到“留言结束”的字样。整个过程结束。
功能:
绝大多数的CGI程序被用来解释处理来自表单的输入信息,并在服务器产生相应的处理,或将相应的信息反馈给浏览器。CGI程序使网页具有交互功能。
运行环境:
CGI程序最初在UNIX操作系统上CERN或NCSA格式的服务器上运行。 在其它操作系统(如:Windows NT及Windows 95等)的服务器上也广泛地使用CGI程序,同时它也适用于各种类型机器。
处理步骤:
1.通过Internet把用户请求送到服务器。 2.服务器接收用户请求并交给CGI程序处理。 3.CGI程序把处理结果传送给服务器。 4.服务器把结果送回到用户。
注意的问题:
CGI应用程序运行在浏览器可以请求的服务器系统上,执行时需要使用服务器CPU时间和内存。如果有成千上万的这种程序会同时运行,那会对服务器系统提出极高的要求。你要慎重考虑这个问题,以防止服务器系统崩溃。不完善的CGI应用程序可能成为别人非法进人服务器系统的通道,有可能导致重要的资料被删除或外泄。
4
嵌入式系统课程小论文
3.实现Web的远程控制
如要实现“基于Web的远程控制设计”需要做到以下五点: 一、嵌入式WEB服务器BOA的移植:
依照实验要求编译BOA 服务器,并生成可执行文件BOA; 并且在开发板的/var的文件下建立实验所需的文件夹及文件。 二、配置BOA 服务器:
1、拷贝Boa源码目录下已有的一个示例boa.conf,并在其基础上进行修改:
Port 80
#Listen 192.68.0.5 User root Group 0
#ServerAdmin root@localhost ErrorLog /var/web_boa/log/error_log AccessLog /var/web_boa/log/access_log #UseLocaltime #VerboseCGILogs
ServerName www.your.org.here #VirtualHost
DocumentRoot /var/web_boa/www UserDir public_html DirectoryIndex index.html
DirectoryMaker /usr/lib/boa/boa_indexer # DirectoryCache /var/spool/boa/dircache KeepAliveMax 1000 KeepAliveTimeout 10
MimeTypes /var/web_boa/mime.types DefaultType text/plain
CGIPath /bin:/usr/bin:/usr/local/bin Alias /doc /usr/doc
5
嵌入式系统课程小论文
ScriptAlias /cgi-bin/ /var/web_boa/www/cgi-bin/
2、利用挂载功能将BOA 执行文件复制到开发板/var的文件夹下;
3、利用挂载功能将boa.conf文件复制到开发板/var的文件夹下。在/var下建立web_boa目录等,根据boa.conf文件中的内容相应创建需要的目录。另外,在虚拟机的/etc目录下拷贝mime.types文件到开发板。将生成的执行文件boa、pass.cgi及index.html文件传到开发板指定目录(boa.conf文件中指定):
3.1在开发板的/var/web_boa/log/目录下创建error_log和access_log文件: 3.2up-tech:/var/web_boa/log #touch error_log; 3.3up-tech:/var/web_boa/log #touch access_log; 3.4mime.types放到/var/web_boa/; 3.5Boa 放到var文件夹下;
3.6Pass.cgi 放到/var/web_boa/www/cgi-bin/下; 3.7Index.html 放到/var/web_boa/www下;
三、CGI原理及程序设计与编写
#include char* getcgidata(FILE* fp, char* requestmethod); int main() { char *input; char *req_method; char led[10]; int i = 0; int j = 0; int fd; printf(\"Content-type: text/html\\n\\n\"); printf(\" printf(\" printf(\"\"); fd = open(\"/dev/led\ if (fd < 0) 6 嵌入式系统课程小论文 {perror(\"open device /dev/led\");exit(1);} ioctl(fd, 1, 0); req_method = getenv(\"REQUEST_METHOD\"); input = getcgidata(stdin, req_method); j=0; for ( i = 0; i < (int)strlen(input); i++ ) { if ( input[i] == 'V' ) { led[j] = input[i+1]; j++; } } for(j=0;j<3;j++) { if ( led[j]=='1') ioctl(fd, 1, j); else ioctl(fd, 0, j); } close(fd); 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(getenv(\"CONTENT_LENGTH\")); input = (char*)malloc(sizeof(char)*(size + 1)); if (len == 0) { input[0] = '\\0'; return input; } while(1) 7 嵌入式系统课程小论文 { input[i] = (char)fgetc(fp); if (i == size) { input[i+1] = '\\0'; return input; } --len; if (feof(fp) || (!(len))) { i++; input[i] = '\\0'; return input; } i++; } } return NULL; } 2、CGI文件的生成 ①在虚拟机的终端环境中打开文件所在的文件夹 ②输入arm-linux-gcc -o pass.cgi pass.c 3、网页文件index.html设计 ①参考Bb平台提供的index.html的网页文件 ②利用挂载功能将文件复制到开发板的/var/web_boa/www的文件夹下 4、运行Boa文件 ①up-tech:~ #cd /var ②up-tech:/var#./boa ③打开浏览器输入开发板的IP地址运行程序 5、Led灯的驱动 驱动的编译: make modules; 将驱动程序下载到开发板上; 加载驱动程序命令: insmod 驱动名; 手动创建设备节点: mknod /dev/led c 231 0 。 8 嵌入式系统课程小论文 四、技术实现问题 实验现象:连好实验设备后,执行boa,在远程联网计算机上通过浏览器输入开发板IP,就可以远 程控制实验板上led灯的亮灭。 实验时因注意的技术问题: ①容量较大的文件上传到开发板要用ftp。如果需要用挂载则要将nolock改为nolock lsize=1024,wsize=1024这样才能顺利的上传。 ②生成文件夹mkdir ***,生成文件touch ***。 ③文件的移动:mv 文件的复制:cp ④CGI文件的生成:arm-linux-gcc -o pazss.cgi pass.c ⑤开发板文件的删除:进入文件所在的文件夹rm -rf *** ⑥设置最高文件:进入文件所在的文件夹 chmod 777 *** 在这次的实验中我自己完成是所遇到的一些问题: 1、挂载挂不上:可能可能是没连接开发板,也可能是本地网络连接禁用错误的原因。 2、Boa执行后打不开网页或者打开网页错误:可能是网页出现了错误,也许是cgi自身出了问题,或是配置文件的路径发生了错误,这些问题可以通过检查路径和文件解决。 3、无法控制Led灯:最可能的原因是未添加Led灯的驱动,异是Led灯的驱动程序出现错误。 五、总结与体会 此次实验课题是基于web的远程控制设计。通过本次实验,我熟悉了基于Web下远程控制Led的方法,对CGI原理有了进一步了解,掌握了BOA的移植方法。因此我也学到了许多课本上学不到的知识。 通过我认真的学习,了解了嵌入式的基本知识以后我感觉我又是在另外一个层面上做实验。这时候不是硬性的为了完成任务去做实验,而是为了学习更多的嵌入式知识以及更好的利用嵌入式知识去做实验。通过询问老师还有同学以及自己的查资料,我知道了嵌入式的一些基本术语还有这些术语的作用,以及在什么时候使用它改如何使用它。还有就是当我遇到问题或麻烦的时候我该怎样去解决问题,我该怎么运用我所学的知识走出这个谜团,以及以最好的方式解决当前的问题。 通过这次实验我总结了学习嵌入式的几条注意的事项: 一、保持良好的心态,不能急于求成,要一步一个脚印的坚持。二、要有清晰的学习规划,明确学习步骤,做个计划表,明确先学什么,再学什么,比如C语言是学习嵌入式的基础,所以在学习时必须要踏踏实实,把地基给打好。三、要有良好的学习氛围。嵌入式学习的难度和高度决定了嵌入式的学习 9 嵌入式系统课程小论文 要有个良好的学习讨论氛围,不能一味自己闷头学,要多去讨论和探讨或是想老师寻求答案但自己一定要明白其中的道理,汲取大家的智慧才能更好的提高。 在这个学期的学习嵌入式的过程中,对嵌入式产生了并不算太高的兴趣,但我还是挺喜欢嵌入式的,因为它可以带给我许多接触不到的事物,也渐渐习惯了看满屏代码的感觉。我希望我能在剩余不多的校园生活中能多学到关于嵌入式的知识,也许也会慢慢喜欢上嵌入式,喜欢上这个行业。 设计性实验报告成绩: 指导教师签名: 10 因篇幅问题不能全部显示,请点此查看更多更全内容