Goahead网络远程设备控制程序设计.ppt

上传人:牧羊曲112 文档编号:5432230 上传时间:2023-07-06 格式:PPT 页数:47 大小:1.46MB
返回 下载 相关 举报
Goahead网络远程设备控制程序设计.ppt_第1页
第1页 / 共47页
Goahead网络远程设备控制程序设计.ppt_第2页
第2页 / 共47页
Goahead网络远程设备控制程序设计.ppt_第3页
第3页 / 共47页
Goahead网络远程设备控制程序设计.ppt_第4页
第4页 / 共47页
Goahead网络远程设备控制程序设计.ppt_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《Goahead网络远程设备控制程序设计.ppt》由会员分享,可在线阅读,更多相关《Goahead网络远程设备控制程序设计.ppt(47页珍藏版)》请在三一办公上搜索。

1、Goahead网络远程设备控制程序设计,小组成员:周凯亮 查伟 王俊杰 赵震玺 张慧成,一.课程设计目的和意义,1.1课程设计目的课程设计的主要目的是通过实际的嵌入式应用系统开发实例掌握嵌入式系统设计和开发的技能和专门知识,积累实践和工程经验。本课题设计尝试移植嵌入式服务器上广泛使用的网络服务器中称为“GoAhead”的网络服务器。并且,利用 CGI 程序,尝试在网络上控制 HBE-EMPOSIII-SV210 的 LED,7-Segment,TextLCD。1.2课程设计要求本课题所设计的系统要求实现以下功能。1.将“GoAhead”网络服务器移植到实验箱目标板Linux系统上;2.创建作为

2、网络服务器的索引文件使用的 index.html 文件;3.完成编写利用 Web 的 LED,7-Segment,TextLCD的控制程序。,二.课程设计的需求与方法 2.2需求分析功能需求分析远程控制是当前信息技术领域的热点,使用远程控制技术,我们可以克服因地域差异而造成的操作不便,让网络的效率得到更大的发挥。随着技术的发展与网络的普及,目前远程控制技术的应用领域已经相当广泛。我们不仅可以通过远程控制技术管理远端电脑,解决远端电脑的故障,与其他同事通过网络实现远程协作,一起编辑一份文档或者与其他团队成员交流信息,还可以在家里或旅途中使用公司内部网络的数据与办公设备,实现远程办公。性能需求分析

3、(1)准确性与及时性(2)灵活性(3)响应速度,课题任务目标(1)将“GoAhead”网络服务器移植到实验箱目标板Linux系统上;(2)创建作为网络服务器的索引文件使用的 index.html 文件;(3)完成编写利用 Web 的 LED,7-Segment,TextLCD的控制程序。2.2.4输入输出的要求(1)鼠标点击WEB输入,通过键盘输入两个16进制的数,通过CGI程序将其转换成8位二进制数来控制开发板中的LED 08的暗灭。(1为亮0为灭)(2)鼠标点击WEB输入,通过键盘输入6位16进制的数,在开发板的七段码中显示出来。(3)鼠标点击WEB输入,通过键盘在网页的Line1和Lin

4、e2中输入一串字母或数字,在开发板的TextLCD中将输入的这些字符对应的显示出来。系统运行环境硬件环境:pc机、HBE-EMPOSIII-SV210 hardware、串口线、网线等软件环境:windows、ubuntu等一些应用软件宿主机开发环境:交叉编译环境、调试环境,2.3软硬件平台设计硬件平台设计,以太网接口,S5PV210(ARM CortexTM-A8 Core),SDRAM,NAND FLASH,NOR FLASH,SD卡接口,系统电源,嵌入式网络控制系统通过串行接口直接传送到S5PV210微处理器上的Web服务器,之后通过浏览器,用户可以方便的监测控制。硬件平台设计框图如图所

5、示:,2.3.2 软件平台设计嵌入式网络控制系统通过RS-232串行接口直接传送到Samsung S5PV210微处理器上的WEB服务器,之后通过浏览器,用户可以方便的监测控制。因此系统软件部分主要由数据采集、数据传输、服务器数据处理和CGI程序访问等几大部分。系统工作流程如下图所示:,PC,IE,CGI,应用程序,驱动程序,HTML网页,数据采集程序,2.3.3 Goahead服务器的特点以及使用方式,Goahead 服务器是一款主要面向嵌入式系统的Web服务器。GoAhead Webserver是跨平台的服务器软件它的特点是:1、很小的内存消耗2、支持认证功能Digest Access A

6、uthentication(DAA)3、支持安全的通信,例如SSL(安全的套接字层)4、支持动态Web页面,如ASP页面5、可以使用传统的C语言编程定制Web页面里的HTML标签6、支持CGI(公共网关编程接口)7、嵌入式的JavaScript脚本翻译器8、独特的URL分析器,三.课程设计的步骤与实现,3.1GoAhead 网络服务器移植1.下载Goahead源码2.GoAhead 源码复制及解压缩3.为了 GoAhead 编译的源码修改对“Makefile”进行修改 main.c 和 misc.c 文件4.GoAhead 编译生成了“webs”网络服务器执行文件和“libwebs.a”库5.

7、创建作为网络服务器的索引文件使用的 index.html 文件6.创建在目标板上连接网络服务器时出现的网页目录(/web),创建包含 cgi 的目录(/web/cgi-bin)。7.向目标板下载 GoAhead 执行文件及 main.html8.在目标板上运行 GoAhead9.通过主机 PC 的网页浏览器连接网络服务器,3.2通过HTML中的CGI接口完成对开发板的链接,开始,编译HTML文件(如:first.html),编译.c文件(如:first.c),通过gcc.将c文件生成CGI文件,将HTML.cgi文件用TFTP指令下载到开发板并运行,结束,CGI(公用网关接口)规定了Web服务

8、器调用其他可执行程序(CGI程序)的接口协议标准。Web服务器通过调用CGI程序实现和Web浏览器的交互,也就是CGI程序接受Web浏览器发送给Web服务器的信息,进行处理,将响应结果再回送给Web服务器及Web浏览器。CGI程序一般完成Web网页中表单(Form)数据的处理、数据库查询和实现与传统应用系统的集成等工作。CGI接口标准包括:,1标准输入可通过标准输入(stdin)从Web服务器得到输 入信息2环境变量Web服务器和CGI接口设置了自己的一些环 境变量,用来向CGI程序传递一些重要的参数3标准输出通过标准输出(stdout)将输出信息传送给Web服务器(html形式),就在命令行

9、状态调试CGI程序,并且得到它们的输出。,虚拟机及超级终端截图:,通过HTML中的CGI接口完成对开发板的链接实验截图:,3.3嵌入式Web服务器的实现利用 Web 的 LED 控制程序,接下来,通过主机 PC 的网页浏览器连接网络服务器并向地址栏中输入“”并连接,则 8bitled.html 网页运行。向地址栏中输入“http:/向文本框中输入两位十六进制数并单击 input 按钮。在这里,输入“1a”后,单击“input”按钮。,LED 控制页面运行确认及测试实验截图:,3.3.2 7-Segment 设备驱动程序,接下来,通过主机 PC 的网页浏览器连接网络服务器。如果运行网页浏览器并向

10、地址栏中输入“”并连接,则 7segment.html 网页运行。向地址栏中输入“”。向文本框中输入六位十进制数并单击 input 按钮。在这里,输入”123456”后单击“input”按钮。,7segment控制页面运行确认及测试实验截图:,利用 Web 的 textlcd 控制程序,接下来,通过主机 PC 的网页浏览器连接网络服务器。如果运行网页浏览器并向地址栏中输入“”并连接,则 textlcd.html 网页运行。向地址输入栏输入“”。输入文本框的 Line1 和 Line2 文字并单击“input”按钮。如果画面上出现“LCD Done”消息窗,则可以清楚/web/cgi-bin 中

11、的 textlcd.cgi 程序顺利运行。,textlcd控制页面运行确认实验截图:,textlcd控制页面运行确认实验截图:,四 总结,4.1实验认知与发现的问题本次课程设计是嵌入式开发与应用,虽然只有短短的两个星期,但在这两个星期里我们学到了很多。首先,我们对计嵌入式开发有了进一步的掌握。基本掌握了Goahead网络远程设备控制并在网络上控制 HBE-EMPOSIII-SV210 的 LED,7-Segment,TextLCD。但在完成这些题目的同时,我们也发现了自己的很多问题:第一,比如很多的专业术语都没有听说过,只好在同学的帮助和网络的帮助下,勉勉强强完成了任务,我们也知道了自己的很多

12、不足,在往后的时间中还要继续研究。第二,在我们使用tftp传送文件的时候忘记修改虚拟机IP地址导致没有传送文件成功。第三,在我们将文件传送成功的时候,网页文件已经能在goahead中显示出来,但是输入数据的时候,开发板并没有显示出来,后面才发现是传送文件时,忘记用chomd命令给CGI文件加上权限,我们通过分析及时的解决了这个问题。第四,我们在完成实验后的第二天再次开启虚拟机并不能将这些网页文件打开,原来是每次启动虚拟机它的IP地址都是原地址,要将它改成并通过超级终端运行网页文件。第五,在运行网页文件的时候,首先要查看进程,要将进程中bin目录下的webs进程杀除再运行网页文件才能将它打开。最

13、后,通过本次实验我们知道了团队力量的重要性,有的题目单靠单人的力量是很难完成的,但是经过大家的合作,相比一个人来说完成的容易了点。,4.2实验效果分析本次实验虽然能将开发板中的LED,7-Segment,TextLCD成功显示出来。但是本次实验的效果仍有几点不足。第一:通过goahead网页服务器编写LED,7-Segment,TextLCD的网页较为简单。第二:控制开发板中7-Segment的显示时间没有进行精确的控制。4.3课程设计心得体会本次课程设计也获得一个经验:在写一个程序的时候,一定要事先把程序原理方框图化出来。以前总觉得这样做没必要,很浪费时间。但是,这次课程设计完全改变了我以前

14、的那种错误的认识。这次课程设计中碰到的那些需要很多代码才能完成的任务,画程序方框图是很有必要的,因为通过程序方框图,在做设计的过程中,我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,而且在程序测试的过程中也有利于查错。经过本次试验我们这次做的实验还算是比较成功的,因为我们同时也在不知不觉中提高了动手能力和独立分析思考问题、解决问题的能力。这两个星期的嵌入式应用的课程设计,使我们更加系统的认识和了解Goahead网络远程设备控制的工作原理,更深层次的认识了嵌入式开发,相信在今后的学习以及相关工作上会有很大帮助。致谢感谢孙老师和范老师在课设中给予的指导和鼓励。感谢学校提供机会,能够让

15、我们在实践中培养动手能力,将理论与实际结合再一起。,五.代码附录参考资料,5.1 7segment实验代码附录,/*7-Segment CGI Program*/#include#include#include#include#include#include#include#include#include#define FPGA_BASEADDRESS0 x88000000#define SEG_GRID_OFFSET 0 x30#defineSEG_DATA_OFFSET 0 x32typedef struct char name128;char val128;entry;,void get

16、word(char*word,char*line,char stop)int x=0,y=0;for(x=0;(linex),case 8:code=0 xfe;break;case 9:code=0 xf6;break;case a:case A:code=0 xfa;break;case b:case B:code=0 x3e;break;case c:case C:code=0 x1a;break;case d:case D:code=0 x7a;break;case e:case E:code=0 x9e;break;case f:case F:code=0 x8e;break;def

17、ault:code=0;break;return code;,int main()char*cl;int k;unsigned int low=0,high=0;entry entries;unsigned short digit6=0 x20,0 x10,0 x08,0 x04,0 x02,0 x01;unsigned short data6;int i,j,m;int fd;unsigned short*addr_fpga;unsigned short*addr_grid,*addr_data;printf(Content-type:text/htmlnn);printf(n7-Segme

18、nt cgi programn);,printf(n);if(fd=open(/dev/mem,O_RDWR|O_SYNC)0)printf(mem open failn);exit(1);addr_fpga=(unsigned short*)mmap(NULL,4096,PROT_READ|PROT_WRITE,MAP_SHARED,fd,FPGA_BASEADDRESS);addr_grid=addr_fpga+SEG_GRID_OFFSET/sizeof(unsigned short);addr_data=addr_fpga+SEG_DATA_OFFSET/sizeof(unsigned

19、 short);if(addr_grid 0|addr_data 0)close(fd);printf(mmap errorn);exit(1);cl=(char*)getenv(QUERY_STRING);getword(entries.name,cl,=);getword(entries.val,cl,*addr_grid=digit0;*addr_data=0;munmap(addr_grid,4096);munmap(addr_data,4096);close(fd);,if(k!=0)printf(7-Segment Done);else printf(You entered the

20、 wrong value!);printf();printf(n);return 0;5.1 7segment HTML源码附录 7segment cgi program向 7-Segment 中输入要显示的十进制数。,5.2 LED实验代码附录,/*8-Bit LED CGI Program*/#include#include#include#include#include#include#include#include#include#define FPGA_BASEADDRESS0 x88000000#define LED_OFFSET0 x20typedef struct char n

21、ame128;char val128;entry;void getword(char*word,char*line,char stop)int x=0,y=0;for(x=0;(linex),int main()int fd;unsigned short*addr_fpga,*addr_led;char*cl;unsigned short val;entry entries;printf(Content-type:text/htmlnn);printf(n8bit LED cgi programn);printf(n);cl=(char*)getenv(QUERY_STRING);getwor

22、d(entries.name,cl,=);getword(entries.val,cl,if(fd=open(/dev/mem,O_RDWR|O_SYNC)You entered 0 x%x,val);printf();printf(n);return 0;,8bit led cgi program输入两位十六进制值:,5.2 LED HTML源码附录,5.3 LCD实验代码附录,/*TextLCD CGI Program*/#include#include#include#include#include#include#include#define FPGA_BASEADDRESS0 x88

23、000000#define TEXTLCD_OFFSET 0 x10void setcommand(unsigned short command);void writebyte(char ch);void initialize_textlcd();void writeTextLcd(int row,char*str,int length);int function_set(int rows,int nfonts);int display_control(int display_enable,int cursor_enable,int nblink);int cusrsor_shit(int s

24、et_screen,int set_rightshit);int entry_mode_set(int increase,int nshift);int return_home();int clear_display();int set_ddram_address(int pos);void splitword(char*out,char*in,char stop);void unescape_url(char*url);char x2c(char*x);unsigned short*pTextlcd;typedef struct char name128;char val128;entry2

25、;,int get_get(entry entries)char qs128;int i;/bzero(qs,sizeof(qs);sprintf(qs,%s0,getenv(QUERY_STRING);for(i=0;*qs,for(i=0,j=0;urlj;+i,+j)if(urli=urlj)=%)urli=x2c(,urli=0;char x2c(char*x)char c;c=(x0=A?(x0,strcpy(data1,entries1.val);writeTextLcd(1,data0,strlen(data0);writeTextLcd(2,data1,strlen(data1

26、);munmap(pTextlcd,4096);close(fd);printf(LCD Done!);return 0;void setcommand(unsigned short command)command,void initialize_textlcd()function_set(2,0);/Function Set:8bit,display 2lines,5x7 moddisplay_control(1,0,0);/Display on,Cursor offclear_display();/Display clearentry_mode_set(1,0);/Entry Mode S

27、et:shift right cursorreturn_home();/go home/send Function Set command to the text lcd/rows=2:=2 rows,rows=1=1 rows/nfonts=1:=5x10 dot,nfonts=0:5x7 dotint function_set(int rows,int nfonts)unsigned short command=0 x30;,if(rows=2)command|=0 x08;else if(rows=1)command,int cusrsor_shit(int set_screen,int

28、 set_rightshit)unsigned short command=0 x10;command=set_screen?(command|0 x08):command;command=set_rightshit?(command|0 x04):command;setcommand(command);return 1;int entry_mode_set(int increase,int nshift)unsigned short command=0 x04;command=increase?(command|0 x2):command;command=nshift?(command|0

29、x1):command;setcommand(command);return 1;int return_home()unsigned short command=0 x02;setcommand(command);return 1;int clear_display(),unsigned short command=0 x01;setcommand(command);return 1;int set_ddram_address(int pos)unsigned short command=0 x80;command+=pos;setcommand(command);return 1;,void

30、 writeTextLcd(int row,char*str,int length)int i;if(row=1)set_ddram_address(0 x0);else if(row=2)set_ddram_address(0 x40);for(i=0;i TextLCD CGI Program向 LCD 中输入要显示的字符。Line1Line2#include int main()printf(Content-type:text/htmlnn);printf(nThe First CGI programn);printf(n It is a CGI program testnn);retu

31、rn 0;,TEST CGI PROGRAM!The first CGI PROGRAM!,5.3 LCD实验代码附录,The First webs test!欢迎使用goahead web服务器 组员:周凯亮 查伟 王俊杰 赵震玺 张慧成 课程设计目的:本课题设计尝试移植嵌入式服务器上广泛使用的网络服务器中称为“GoAhead”的网络服务器。并且,利用 CGI 程序,尝试在网络上控制 HBE-EMPOSIII-SV210 的 LED,7-Segment,TextLCD。,5.4 Textled HTML源码,课程设计要求:本课题所设计的系统要求实现以下功能。将“GoAhead”网络服务器移植

32、到实验箱目标板Linux系统上创建作为网络服务器的索引文件使用的 index.html 文件完成编写利用 Web 的 LED,7-Segment,TextLCD的控制程序GoAhead Website:http:/GoAhead Website:http:/,5.5参考文献1嵌入式开发与应用课程设计指导书2嵌入式开发与应用实验指导书3田泽 主编,嵌入式系统开发与应用教程(第2版),北京航空航天大学出版社,20104朱华生等 主编,嵌入式系统原理与应用:基于ARM微处理器和Linux操作系统,清华大学出版社,20125孙纪坤等 主编,嵌入式Linux系统开发技术详解:基于ARM,人民邮电出版社,20086谭浩强 主编,C语言程序设计,清华大学出版社,2010,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号