嵌入式课设报告web远程控制系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课设报告课程名称嵌入式系统课程设计实验项目web远程控制系统设计指导教师周金和、王勇学院信息与通信工程
专业电子信息工程
班级/学号电信1101/
学生姓名
实验日期
成绩____________________
实验步骤
一、搭建及移植web服务器
搭建及移植boa服务器是本次课题的要点所在,为了能够顺利搭建服务器,前期做了大量工作对其进行学习以及研究,在基本掌握boa服务器的搭建和移植的具体操作方法还有该服务器的工作方式、流程之后,才着手进行搭建和移植,即便如此,在搭建和移植的过程中还是遇到了不少问题,下文也进行了分析和解决。
下载及配置BOA服务器
下载安装boa服务器
对其进行解压:
还要安装必要的工具bison,flex。
否则会出现:
在输入上一条命令之前需要保证虚拟机联网,虚拟机联网方式如下
首先把主机联上网,虚拟机网络设置桥接改成nat
$ sudo vim /etc/network/interfaces
static改成dhcp ,在address,netmask, gateway加#注释
用:wq保存并退出
重启网路配置
$sudo /etc/networking restart
修改相关配置文件
修改src/文件:
打开找到这一条语句:
将其修改为:
这是由于本机所使用的交叉编译版本对语句用法的不同。
修改src/文件。
打开注释掉下列语句:
否则会出现错误:
:73 unable to dup2 the error log:bad file descriptor。
修改src/文件。
打开src/注释掉下面两句话:
否则会出现错误::211 - getpwuid: No such file or directory。
否则会出现问题::228 - icky Linux kernel bug!: No such file or directory。
生成boa可执行文件
进入相关目录生成makefile文件:
修改makefile文件。
修改CC =gcc 为CC =arm-linux-gnueabihf-gcc
修改CPP =gcc -E 为CPP =arm-linux-gnueabihf-gcc -E
接下来进行编译。
然后为刚刚生成的二进制文件boa瘦身删除其调试信息。
修改配置
找到配置文件并进行如下修改:
以下步骤需要在计算机上完成:
(1)对Group的修改
将Group nogroup(这是修改程序所属的组)。
修改为Group 0
(2)对user的修改
将User nobody(这里是修改程序所属的用户)。
修改为User 0
(3)对ScriptAlias的修改
将ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/(这里是配置服务器读取cgi程序的目录,需要在SD卡中同样的位置建立同样的目录)。
修改为ScriptAlias /cgi-bin/ /www/cgi-bin/
(5)对DoucmentRoot的修改
将DoucmentRoot /var/www (这里是服务器初始网页放置的位置同样需要在SD卡同样的位置建立同样的文件夹并将名为的网页放置在其中)。
修改为DoucmentRoot /www
(6)对ServerName的修改
将#ServerName (取消掉注释否则提示没有服务器名)。
否则会出现错误“gethostbyname::No such file or directory”
(7)对AccessLog修改
将AccessLog /var/log/boa/access_log(在SD卡相应位置建立同名文件夹以存放日志文件,否则提示找不到文件夹)。
修改为#AccessLog /var/log/boa/access_log
否则会出现错误提示:“unable to dup2 the error log: Bad file descriptor”
修改完成后直接点击文件左上方的保存按钮进行保存。
在目标板上需要做的配置:
创建目录/etc/boa并且把boa 和拷贝到这个目录下:
创建HTML文档的主目录/www:
创建CGI脚本所在的目录/www/cgi-bin:
. 测试服务器动态网页功能
到此为止服务器已经搭建完成了,接下来就要测试服务器是否能够成功运行动态网页了,为了顺利完成测试,首先要做的是让目标板和主机能够通过交叉网线通信:
1
重启主机的网络服务:
再去配置目标板,同样将其置于同一网段:
重启目标板的网络服务:
配置完后在目标板上输入ifconfig可以查看到如下内容
这时就可以测试主机与目标板之间的连通性了:
分别在主机和目标板上使用ping命令去测试相互之间的连通性:
图测试连通性
出现上图所示信息就便表示着主机与目标板已经联通了,可以进行通信了。
接下来要做的就是编译一个cgi程序,因为只是测试用所以就用最简单的hello world来测试:
首先建立一个文件:
编写hello world代码:
保存。
然后再对其进行编译,使之成为一个cgi文件:
在当前文件夹下便会生成,为这个文件添加权限,使其可执行:
将这个文件移动到SD卡中之前所指定的服务器中的文件夹:
现在可以打开浏览器在地址栏中输入2/cgi-bin/出现下图所示页面说明cgi功能可以使用,可以进行下一步工作了:(首先应在目标板中启动Boa服务器,步骤如下:在目标板中找到文件boa的目录,用cd命令进入,输入$sudo ./boa ,然后用ps -ef查看进程中是否有boa。
或者用ps -ef|grep boa直接查找进程Boa更加简便。
接下来才能访问服务器。
否则会出现连接不到服务器的错误)
图boa的运行与进程查看
图动态网页测试
二、实现嵌入式web远程控制功能
目前为止,服务器的搭建以及数据的传输等基本功能已经实现了,为了能够实现嵌入式web远程控制的功能,就需要让控制者进入到其主页来进行编辑提交,所以在这个页面中就要让控制者能够对目标板进行各种控制和修改,而html只是单方向的,不能进行信息的交互,这时候就需要cgi程序来完成交互的任务。
静态网页的配置
首先建立一个文件:
编写代码:
其实每个标记都是一一对应的。
每个网页文件都是以<html>开始和以</html>结束。
<title>与</title>之间的内容是网页的标题。
会显示在浏览器的标题栏上。
<body>与</body>之间放的是网页内容。
<p> </p> 语句能够实现空行功能,以便使网页整体结构不会过于紧凑,
将拷贝到目标板HTML文档的主目录/www里。
2/cgi-bin/ 显示为hello用于测试服务器的cgi功能。
效果如图所示:
在虚拟机浏览器中输入
图HTML超链接
点击hello~之后服务器跳转,页面显示的内容:
图超链接
动态网页的配置
HTML表单
上面的语句表示了以post的方式将表单内容发送给,同时定义了一个按键和一个输入文本框,按钮的属性为提交按钮,文本框内的值为var_ip的值。
cgi功能的实现
为了能够实现更改ip的的功能就需要写一个shell脚本调用interfaces并对其进行修改,然而修改这个文件需要root权限,可是单单给shell脚本加上权限并不能达到目的,这时就需要借用一个c程序来提升其权限.
首先建立一个文件:
编写代码:
printf("Content-type: text/html\n\n"); 首先建立一个文件:
编写代码:
return(0);1 测试远程控制功能
配置ip地址功能
首先将主机与开发板用网线串口线连好,打开SecureCRT连接进入开发板,如果是上电之前就连接好电脑的话,还可以看到一些启动信息。
在开发板上启动boa服务器,之所以使用root权限进入是因为,如果用普通用户权限进入的话,会有端口被占用的提示,然而如果使用8080端口的话,对于本设计后面的进行会带来很多不必要的麻烦。
启动boa服务器后,会显示启动信息,服务器版本,服务器创建时间以及服务器所占用的端口号,占用的端口号为80。
2)这样就进入了服务器的主页,主页的内容很直接,两个按钮,一个超链接,一个文本框:
boa服务器主页
重启功能
在开发板上测试重启功能的具体过程如下:
打开服务器初始的页面找到并点击重启按钮,重启这个功能看起来比改变ip要容易的多,但是如果使用c语言来编写cgi程序的时候往往会因为权限的问题带来很多的麻烦。
因此要注意加sudo给到系统root权限。
重启按钮
浏览器中的显示,目标板自动重启
图服务器重启
更改ip功能
2,由于开发板只有一个以太网卡,所以就没有选择以太网卡的问题了,eth0便是当前唯一的以太网卡。
图输入ip地址
输入完成后点击更换按钮,浏览器页面跳转。
图服务器提示成功
这时开发板的IP地址就应该改变了。
由于目标板IP发生变化因此在输入$sudo /etc/networking restart重启网络配置之后通过ifconfig命令查看目标板ip配置发现ip地址被清空。
因此程序出现错误。
对错误的猜测:
最终觉得没有实现的原因在中。
因为之前的不能成功调用等错误都经过了改动从而成功实现,然而输入的要改的IP地址不但没有成功改掉反而IP配置全被清空。
因此判断是中提取输入数据的语句或赋值语句出现错误。
然而由于学习的东西有限,目前还没有透彻研究出shell脚本的语句内容,因此还没有解决掉这个问题。
因此没能实现改变IP的功能。
我们组成员都在努力学习shell脚本中,希望能通过修改来成功实现IP改变的功能。
实验心得
通过本次嵌入式系统课程设计温习了前面实验中用到的系统的烧写等步骤。
在对Linux系统了解的基础上进行了进一步深入的了解。
并且在做实验的过程中对实验指导书进行了进一步的完善,希望可以通过这个过程使自己记忆更加深刻。
(加黑字体均为根据个人理解对课设进行的修改。
)在实验过程中遇到了一系列的问题,从一开始的虚拟机的联网问题。
再到编译的时候由于编不同导致的一些无法运行的错误。
在下来就遇到了重启目标板系统时只能在浏览器上显示系统正在重启却不能真正的重启系统,通过加入sudo 给到root权限从而实现了应有的功能。
在一次次的困难中通过自己的查看与老师的帮助都得到了解决,给自己的学习带来了乐趣,更加巩固了所学到的知识。
实验中还通过帮助它组同学了解到了许多不是我们本组所用到的东西,收货了很多。