Goahead网络远程设备控制程序设计课件

上传人:风*** 文档编号:240610203 上传时间:2024-04-24 格式:PPTX 页数:48 大小:1.60MB
返回 下载 相关 举报
Goahead网络远程设备控制程序设计课件_第1页
第1页 / 共48页
Goahead网络远程设备控制程序设计课件_第2页
第2页 / 共48页
Goahead网络远程设备控制程序设计课件_第3页
第3页 / 共48页
点击查看更多>>
资源描述
Goahead网络远程设备控制小组成员:周凯亮 查伟 王俊杰 赵震玺 张慧成一一.课程课程设计目的和意义设计目的和意义n 1.1课程设计目的课程设计的主要目的是通过实际的嵌入式应用系统开发实例掌握嵌入式系统设计和开发的技能和专门知识,积累实践和工程经验。本课题设计尝试移植嵌入式服务器上广泛使用的网络服务器中称为“GoAhead”的网络服务器。并且,利用CGI程序,尝试在网络上控制HBE-EMPOSIII-SV210的LED,7-Segment,TextLCD。n 1.2课程设计要求本课题所设计的系统要求实现以下功能。1.将“GoAhead”网络服务器移植到实验箱目标板Linux系统上;2.创建作为网络服务器的索引文件使用的index.html文件;3.完成编写利用Web的LED,7-Segment,TextLCD的控制程序。二二.课程设计的课程设计的需求需求与与方法方法n 2.2需求分析2.2.1功能需求分析远程控制是当前信息技术领域的热点,使用远程控制技术,我们可以克服因地域差异而造成的操作不便,让网络的效率得到更大的发挥。随着技术的发展与网络的普及,目前远程控制技术的应用领域已经相当广泛。我们不仅可以通过远程控制技术管理远端电脑,解决远端电脑的故障,与其他同事通过网络实现远程协作,一起编辑一份文档或者与其他团队成员交流信息,还可以在家里或旅途中使用公司内部网络的数据与办公设备,实现远程办公。2.2.2性能需求分析(1)准确性与及时性(2)灵活性(3)响应速度2.2.3课题任务目标 (1)将“GoAhead”网络服务器移植到实验箱目标板Linux系统上;(2)创建作为网络服务器的索引文件使用的index.html文件;(3)完成编写利用Web的LED,7-Segment,TextLCD的控制程序。2.2.4输入输出的要求(1)鼠标点击WEB输入,通过键盘输入两个16进制的数,通过CGI程序将其转换成8位二进制数来控制开发板中的LED08的暗灭。(1为亮0为灭)(2)鼠标点击WEB输入,通过键盘输入6位16进制的数,在开发板的七段码中显示出来。(3)鼠标点击WEB输入,通过键盘在网页的Line1和Line2中输入一串字母或数字,在开发板的TextLCD中将输入的这些字符对应的显示出来。2.2.5系统运行系统运行环境环境硬件环境:pc机、HBE-EMPOSIII-SV210hardware、串口线、网线等软件环境:windows、ubuntu等一些应用软件宿主机开发环境:交叉编译环境、调试环境n2.3软硬件平台设计2.3.1硬件平台设计以太网接口S5PV210(ARMCortexTM-A8Core)SDRAMNANDFLASHNORFLASHSD卡接口系统电源嵌入式网络控制系统通过串行接口直接传送到S5PV210微处理器上的Web服务器,之后通过浏览器,用户可以方便的监测控制。硬件平台设计框图如图所示:2.3.2 软件平台设计嵌入式网络控制系统通过RS-232串行接口直接传送到SamsungS5PV210微处理器上的WEB服务器,之后通过浏览器,用户可以方便的监测控制。因此系统软件部分主要由数据采集、数据传输、服务器数据处理和CGI程序访问等几大部分。系统工作流程如下图所示:PCIECGI应用程序驱动程序HTML网页数据采集程序2.3.3 Goahead服务器的特点以及使用方式Goahead服务器是一款主要面向嵌入式系统的Web服务器。GoAheadWebserver是跨平台的服务器软件它的特点是:1、很小的内存消耗2、支持认证功能DigestAccessAuthentication(DAA)3、支持安全的通信,例如SSL(安全的套接字层)4、支持动态Web页面,如ASP页面5、可以使用传统的C语言编程定制Web页面里的HTML标签6、支持CGI(公共网关编程接口)7、嵌入式的JavaScript脚本翻译器8、独特的URL分析器三.课程设计的步骤与实现n3.1GoAhead 网络服务器移植1.下载Goahead源码2.GoAhead源码复制及解压缩3.为了了 GoAhead编译的源码修改对“Makefile”进行修改main.c和misc.c文件4.GoAhead编译生成了“webs”网络服务器执行文件和“libwebs.a”库5.创建作为网络服务器的索引文件使用的index.html文件6.创建在目标板上连接网络服务器时出现的网页目录(/web),创建包含cgi的目录(/web/cgi-bin)。7.向目标板下载GoAhead执行文件及main.html8.在目标板上运行GoAhead9.通过主机PC的网页浏览器连接网络服务器 n3.2通过HTML中的CGI接口完成对开发板的链接开始编译HTML文件(如:first.html)编译.c文件(如:first.c)通过gcc.将c文件生成CGI文件将HTML.cgi文件用TFTP指令下载到开发板并运行结束CGI(公用网关接口)规定了Web服务器调用其他可执行程序(CGI程序)的接口协议标准。Web服务器通过调用CGI程序实现和Web浏览器的交互,也就是CGI程序接受Web浏览器发送给Web服务器的信息,进行处理,将响应结果再回送给Web服务器及Web浏览器。CGI程序一般完成Web网页中表单(Form)数据的处理、数据库查询和实现与传统应用系统的集成等工作。CGI接口标准包括:1标准输入可通过标准输入(stdin)从Web服务器得到输入信息2环境变量Web服务器和CGI接口设置了自己的一些环境变量,用来向CGI程序传递一些重要的参数3标准输出通过标准输出(stdout)将输出信息传送给Web服务器(html形式),就在命令行状态调试CGI程序,并且得到它们的输出。虚拟机及超级终端截图:虚拟机及超级终端截图:通过HTML中的CGI接口完成对开发板的链接实验截图:n3.3嵌入式Web服务器的实现3.3.1利用 Web 的 LED 控制程序 创建8bitled.html;8bitled.c文件LED 控制控制程序程序创建建8bitled.html和8bitled.cgi复制到/tftpboot目录中LED 控制控制程序程序编译通过tftp下载8bitled.html和8bitled.cgi,并复制到/web和/web/cgi-bin向目向目标板板下下载 LED 控制程序控制程序接下来,通过主机PC的网页浏览器连接网络服务器并向地址栏中输入“8bitled.html”并连接,则8bitled.html网页运行。向地址栏中输入“http:/192.168.0.165/8bitled.html向文本框中输入两位十六进制数并单击input按钮。在这里,输入“1a”后,单击“input”按钮。LED 控制页面运行确认及测试实验截图:3.3.2 7-Segment 设备驱动程序vi7segment.htmlvi7segment.c7Segment控制程序创建将7segment.html和7segment.cgi文件复制到/tftpboot目录中。7Segment 控制程序控制程序编译通过tftp下载7segment.html和7segment.cgi文件,向/web和/web/cgi-bin目录中复制文件。向目向目标板下板下载 7Segment 控制程序控制程序接下来,通过主机PC的网页浏览器连接网络服务器。如果运行网页浏览器并向地址栏中输入“7segment.html”并连接,则7segment.html网页运行。向地址栏中输入“”。向文本框中输入六位十进制数并单击input按钮。在这里,输入”123456”后单击“input”按钮。7segment控制页面运行确认及测试实验截图:3.3.3利用 Web 的 textlcd 控制程序 创建textlcd.html创建textlcd.cTextlcd控控制程序制程序创建建将textlcd.html和textlcd.cgi文件复制到/tftpboot目录中。编译 textlcd 控控制程序制程序下载textlcd.html和textlcd.cgi文件,向/web和/web/cgi-bin目录中复制文件。向目向目标板板下下载 textlcd 控控制程序制程序接下来,通过主机PC的网页浏览器连接网络服务器。如果运行网页浏览器并向地址栏中输入“textlcd.html”并连接,则textlcd.html网页运行。向地址输入栏输入“”。输入文本框的Line1和Line2文字并单击“input”按钮。如果画面上出现“LCDDone”消息窗,则可以清楚/web/cgi-bin中的textlcd.cgi程序顺利运行。textlcd控制页面运行确认实验截图:textlcd控制页面运行确认实验截图:赵震玺周凯亮*查伟王俊杰四四 总结总结n4.1实验认知与发现的问题本次课程设计是嵌入式开发与应用,虽然只有短短的两个星期,但在这两个星期里我们学到了很多。首先,我们对计嵌入式开发有了进一步的掌握。基本掌握了Goahead网络远程设备控制并在网络上控制HBE-EMPOSIII-SV210的LED,7-Segment,TextLCD。但在完成这些题目的同时,我们也发现了自己的很多问题:第一,比如很多的专业术语都没有听说过,只好在同学的帮助和网络的帮助下,勉勉强强完成了任务,我们也知道了自己的很多不足,在往后的时间中还要继续研究。第二,在我们使用tftp传送文件的时候忘记修改虚拟机IP地址导致没有传送文件成功。第三,在我们将文件传送成功的时候,网页文件已经能在goahead中显示出来,但是输入数据的时候,开发板并没有显示出来,后面才发现是传送文件时,忘记用chomd命令给CGI文件加上权限,我们通过分析及时的解决了这个问题。第四,我们在完成实验后的第二天再次开启虚拟机并不能将这些网页文件打开,原来是每次启动虚拟机它的IP地址都是原地址,要将它改成192.168.0.100并通过超级终端运行网页文件。第五,在运行网页文件的时候,首先要查看进程,要将进程中bin目录下的webs进程杀除再运行网页文件才能将它打开。最后,通过本次实验我们知道了团队力量的重要性,有的题目单靠单人的力量是很难完成的,但是经过大家的合作,相比一个人来说完成的容易了点。n4.2实验效果分析本次实验虽然能将开发板中的LED,7-Segment,TextLCD成功显示出来。但是本次实验的效果仍有几点不足。第一:通过goahead网页服务器编写LED,7-Segment,TextLCD的网页较为简单。第二:控制开发板中7-Segment的显示时间没有进行精确的控制。n4.3课程设计心得体会本次课程设计也获得一个经验:在写一个程序的时候,一定要事先把程序原理方框图化出来。以前总觉得这样做没必要,很浪费时间。但是,这次课程设计完全改变了我以前的那种错误的认识。这次课程设计中碰到的那些需要很多代码才能完成的任务,画程序方框图是很有必要的,因为通过程序方框图,在做设计的过程中,我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,而且在程序测试的过程中也有利于查错。经过本次试验我们这次做的实验还算是比较成功的,因为我们同时也在不知不觉中提高了动手能力和独立分析思考问题、解决问题的能力。这两个星期的嵌入式应用的课程设计,使我们更加系统的认识和了解Goahead网络远程设备控制的工作原理,更深层次的认识了嵌入式开发,相信在今后的学习以及相关工作上会有很大帮助。n致谢感谢孙老师和范老师在课设中给予的指导和鼓励。感谢学校提供机会,能够让我们在实践中培养动手能力,将理论与实际结合再一起。五五.代码附录参考资料代码附录参考资料n5.1 7segment实验代码附录 /*7-SegmentCGIProgram*/#include#include#include#include#include#include#include#include#include#defineFPGA_BASEADDRESS0 x88000000#defineSEG_GRID_OFFSET0 x30#defineSEG_DATA_OFFSET0 x32typedefstructcharname128;charval128;entry;voidgetword(char*word,char*line,charstop)intx=0,y=0;for(x=0;(linex)&(linex!=stop);x+)wordx=linex;wordx=0;if(linex)+x;while(liney+=linex+);intsizeofword(char*word)inti=0;for(i=0;i10;i+)if(wordi=0)break;returni;unsignedintGetsegcode(charx)unsignedintcode;switch(x)case0:code=0 xfc;break;case1:code=0 x60;break;case2:code=0 xda;break;case3:code=0 xf2;break;case4:code=0 x66;break;case5:code=0 xb6;break;case6:code=0 xbe;break;case7:code=0 xe4;break;case8:code=0 xfe;break;case9:code=0 xf6;break;casea:caseA:code=0 xfa;break;caseb:caseB:code=0 x3e;break;casec:caseC:code=0 x1a;break;cased:caseD:code=0 x7a;break;casee:caseE:code=0 x9e;break;casef:caseF:code=0 x8e;break;default:code=0;break;returncode;intmain()char*cl;intk;unsignedintlow=0,high=0;entryentries;unsignedshortdigit6=0 x20,0 x10,0 x08,0 x04,0 x02,0 x01;unsignedshortdata6;inti,j,m;intfd;unsignedshort*addr_fpga;unsignedshort*addr_grid,*addr_data;printf(Content-type:text/htmlnn);printf(n7-Segmentcgiprogramn);printf(n);if(fd=open(/dev/mem,O_RDWR|O_SYNC)0)printf(memopenfailn);exit(1);addr_fpga=(unsignedshort*)mmap(NULL,4096,PROT_READ|PROT_WRITE,MAP_SHARED,fd,FPGA_BASEADDRESS);addr_grid=addr_fpga+SEG_GRID_OFFSET/sizeof(unsignedshort);addr_data=addr_fpga+SEG_DATA_OFFSET/sizeof(unsignedshort);if(addr_grid0|addr_data0)close(fd);printf(mmaperrorn);exit(1);cl=(char*)getenv(QUERY_STRING);getword(entries.name,cl,=);getword(entries.val,cl,&);k=sizeofword(entries.val);for(i=0;ik;i+)data(k-i)-1=Getsegcode(entries.vali);for(j=0;j200;j+)for(i=0;ik;i+)*addr_grid=digiti;*addr_data=datai;for(m=0;m65536;m+);*addr_grid=digit0;*addr_data=0;munmap(addr_grid,4096);munmap(addr_data,4096);close(fd);if(k!=0)printf(7-SegmentDone);elseprintf(Youenteredthewrongvalue!);printf();printf(n);return0;n5.1 7segment HTML源码附录 7segmentcgiprogram向7-Segment中输入要显示的十进制数。n5.2 LED实验代码附录/*8-BitLEDCGIProgram*/#include#include#include#include#include#include#include#include#include#defineFPGA_BASEADDRESS0 x88000000#defineLED_OFFSET0 x20typedefstructcharname128;charval128;entry;voidgetword(char*word,char*line,charstop)intx=0,y=0;for(x=0;(linex)&(linex!=stop);x+)wordx=linex;wordx=0;if(linex)+x;while(liney+=linex+);intmain()intfd;unsignedshort*addr_fpga,*addr_led;char*cl;unsignedshortval;entryentries;printf(Content-type:text/htmlnn);printf(n8bitLEDcgiprogramn);printf(n);cl=(char*)getenv(QUERY_STRING);getword(entries.name,cl,=);getword(entries.val,cl,&);val=(unsignedshort)strtol(entries.val,NULL,16);if(val=0)if(!(entries.val0=0&entries.val1=0)|(entries.val0=0&entries.val1=0)printf(Youenteredthewrongvalue!);exit(1);if(fd=open(/dev/mem,O_RDWR|O_SYNC)0)printf(memopenfail,%dn,fd);exit(1);addr_fpga=(unsignedshort*)mmap(NULL,4096,PROT_READ|PROT_WRITE,MAP_SHARED,fd,FPGA_BASEADDRESS);addr_led=addr_fpga+LED_OFFSET/sizeof(unsignedshort);*addr_led=val|0 x100;munmap(addr_fpga,4096);close(fd);printf(Youentered0 x%x,val);printf();printf(n);return0;8bitledcgiprogram输入两位十六进制值:  n5.2 LED HTML源码附录 n5.3 LCD实验代码附录/*TextLCDCGIProgram*/#include#include#include#include#include#include#include#defineFPGA_BASEADDRESS0 x88000000#defineTEXTLCD_OFFSET0 x10voidsetcommand(unsignedshortcommand);voidwritebyte(charch);voidinitialize_textlcd();voidwriteTextLcd(introw,char*str,intlength);intfunction_set(introws,intnfonts);intdisplay_control(intdisplay_enable,intcursor_enable,intnblink);intcusrsor_shit(intset_screen,intset_rightshit);intentry_mode_set(intincrease,intnshift);intreturn_home();intclear_display();intset_ddram_address(intpos);voidsplitword(char*out,char*in,charstop);voidunescape_url(char*url);charx2c(char*x);unsignedshort*pTextlcd;typedefstructcharname128;charval128;entry2;intget_get(entryentries)charqs128;inti;/bzero(qs,sizeof(qs);sprintf(qs,%s0,getenv(QUERY_STRING);for(i=0;*qs&i=A?(x0&0 xdf)-A)+10:(x0-0);c*=16;c+=(x1=A?(x1&0 xdf)-A)+10:(x1-0);returnc;intmain(intargc,char*argv)chardata2128;intfd;entryentries;char*cl;unsignedshort*addr_fpga;printf(Content-type:text/htmlnn);cl=(char*)getenv(QUERY_STRING);get_get(entries);if(fd=open(/dev/mem,O_RDWR|O_SYNC)0)perror(memopenfailn);exit(1);addr_fpga=(unsignedshort*)mmap(NULL,4096,PROT_READ|PROT_WRITE,MAP_SHARED,fd,FPGA_BASEADDRESS);pTextlcd=addr_fpga+TEXTLCD_OFFSET/sizeof(unsignedshort);if(pTextlcd0)close(fd);printf(mmaperrorn);exit(1);initialize_textlcd();strcpy(data0,entries0.val);strcpy(data1,entries1.val);writeTextLcd(1,data0,strlen(data0);writeTextLcd(2,data1,strlen(data1);munmap(pTextlcd,4096);close(fd);printf(LCDDone!);return0;voidsetcommand(unsignedshortcommand)command&=0 x00FF;*pTextlcd=command|0 x0000;usleep(1000);*pTextlcd=command|0 x0100;usleep(1000);*pTextlcd=command|0 x0000;usleep(1000);voidwritebyte(charch)unsignedshortdata;data=ch&0 x00FF;*pTextlcd=data&0 x400;usleep(1000);*pTextlcd=data|0 x500;usleep(1000);*pTextlcd=data|0 x400;usleep(1000);voidinitialize_textlcd()function_set(2,0);/FunctionSet:8bit,display2lines,5x7moddisplay_control(1,0,0);/Displayon,Cursoroffclear_display();/Displayclearentry_mode_set(1,0);/EntryModeSet:shiftrightcursorreturn_home();/gohome/sendFunctionSetcommandtothetextlcd/rows=2:=2rows,rows=1=1rows/nfonts=1:=5x10dot,nfonts=0:5x7dotintfunction_set(introws,intnfonts)unsignedshortcommand=0 x30;if(rows=2)command|=0 x08;elseif(rows=1)command&=0 xf7;elsereturn-1;command=nfonts?(command|0 x04):command;setcommand(command);return1;intdisplay_control(intdisplay_enable,intcursor_enable,intnblink)unsignedshortcommand=0 x08;command=display_enable?(command|0 x04):command;command=cursor_enable?(command|0 x02):command;command=nblink?(command|0 x01):command;setcommand(command);return1;intcusrsor_shit(intset_screen,intset_rightshit)unsignedshortcommand=0 x10;command=set_screen?(command|0 x08):command;command=set_rightshit?(command|0 x04):command;setcommand(command);return1;intentry_mode_set(intincrease,intnshift)unsignedshortcommand=0 x04;command=increase?(command|0 x2):command;command=nshift?(command|0 x1):command;setcommand(command);return1;intreturn_home()unsignedshortcommand=0 x02;setcommand(command);return1;intclear_display()unsignedshortcommand=0 x01;setcommand(command);return1;intset_ddram_address(intpos)unsignedshortcommand=0 x80;command+=pos;setcommand(command);return1;voidwriteTextLcd(introw,char*str,intlength)inti;if(row=1)set_ddram_address(0 x0);elseif(row=2)set_ddram_address(0 x40);for(i=0;ilength;i+)writebyte(stri);TextLCDCGIProgram向LCD中输入要显示的字符。Line1Line2#includeintmain()printf(Content-type:text/htmlnn);printf(nTheFirstCGIprogramn);printf(nItisaCGIprogramtestnn);return0;TESTCGIPROGRAM!ThefirstCGIPROGRAM!n5.3 LCD实验代码附录TheFirstwebstest!欢迎使用goaheadweb服务器组员:周凯亮查伟王俊杰赵震玺张慧成   课程设计目的:本课题设计尝试移植嵌入式服务器上广泛使用的网络服务器中称为“GoAhead”的网络服务器。并且,利用CGI程序,尝试在网络上控制HBE-EMPOSIII-SV210的LED,7-Segment,TextLCD。n5.4 Textled HTML源码课程设计要求:本课题所设计的系统要求实现以下功能。将“GoAhead”网络服务器移植到实验箱目标板Linux系统上创建作为网络服务器的索引文件使用的index.html文件完成编写利用Web的LED,7-Segment,TextLCD的控制程序GoAheadWebsite:GoAheadWebsite: -LastUpdate:November01,2010  提问与解答环节Questions And Answers谢谢聆听 学习就是为了达到一定目的而努力去干,是为一个目标去战胜各种困难的过程,这个过程会充满压力、痛苦和挫折Learning Is To Achieve A Certain Goal And Work Hard,Is A Process To Overcome Various Difficulties For A Goal
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!