【测控技术与仪器】基于micro2440的wifi网络开关设计4_第1页
【测控技术与仪器】基于micro2440的wifi网络开关设计4_第2页
【测控技术与仪器】基于micro2440的wifi网络开关设计4_第3页
【测控技术与仪器】基于micro2440的wifi网络开关设计4_第4页
【测控技术与仪器】基于micro2440的wifi网络开关设计4_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计基于MICRO2440的WIFI网络开关设计摘要在互联网流行的当今社会,用网络控制设备已经成为一种必然的趋势。本设计便是用WIFI设计了一个网络开关,通过网络实现远程控制MICRO2440开发板上的资源。本设计通过网页发送控制信号到嵌入式LINUX服务器,利用CGI(COMMONGATEWAYINTERFACE)与MICRO2440上的服务器程序进行数据交互。位于MICRO2440中的主程序收到控制信号后,根据控制信号的不同利用LINUX的管道通信方式,控制MICRO2440的GPB5、GPB6、GPB7和GPB8,即MICRO2440开发板的LED资源和蜂鸣器资源。网络控制FRIENDLYARM的LED灯亮以及蜂鸣器响。本设计的核心技术为MICRO2440应用BOAWEB服务器以及COMMONGATEWAYINTERFACE通用网络接口,将本地浏览器和网络服务器之间进行数据传输。通过管道来控制,通过LINUX语言控制本设计。在ARM收到信息后完成LED灯亮以及PWM响的成果。关键词MICRO2440BOAWEB服务器CGIWIFI题目基于MICRO2440的WIFI网络开关设计学生姓名学号系别防灾仪器系专业测控技术与仪器班级开题时间2013年12月25日答辩时间2014年06月07日指导教师职称教授BASEDONMICRO2440WIFINETWORKSWITCHDESIGNABSTACTINCURRENTSOCIETY,THEINTERNETPOPULAR,HASBECOMEANINEVITABLETRENDOFNETWORKCONTROLEQUIPMENTTHISDESIGNISTOUSEWIFITODESIGNANETWORKSWITCH,REMOTECONTROLONTHEMICRO2440DEVELOPMENTBOARDRESOURCESTHROUGHTHENETWORKTHEDESIGNOFTHECONTROLSIGNALTOTHEEMBEDDEDLINUXSERVERTHROUGHTHEWEBPAGETRANSMISSION,USINGCGICOMMONGATEWAYINTERFACEDATAINTERACTIONWITHTHESERVERONTHEMICRO2440PROGRAMLOCATEDINTHEMAINPROGRAMINMICRO2440RECEIVINGTHECONTROLSIGNAL,ACCORDINGTOTHEDIFFERENTPIPELINECOMMUNICATIONUSINGLINUXCONTROLSIGNALS,CONTROLOFMICRO2440GPB5,GPB6,GPB7ANDGPB8,IEMICRO2440DEVELOPMENTBOARDOFTHELEDRESOURCEANDTHEBUZZERRESOURCESLEDLIGHTNETWORKCONTROLFRIENDLYARMLIGHTANDBUZZERTHECORETECHNOLOGYOFTHEDESIGNFORTHEAPPLICATIONOFMICRO2440BOAWEBCOMMONGATEWAYINTERFACESERVERANDTHEUNIVERSALNETWORKINTERFACE,WILLBEAMONGTHELOCALBROWSERANDWEBSERVERFORDATATRANSMISSIONCONTROLLEDBYTHEPIPELINE,THROUGHTHEDESIGNOFALINUXCONTROLLANGUAGETOCOMPLETETHELEDLIGHTSANDPWMRINGRESULTSINTHEARMAFTERRECEIVINGTHEINFORMATIONKEYWORDSTHEMICRO2440BOAWEBSERVERCGIWIF目录第一章前言111课题的内容及意义1111选题背景112论文组织结构2第二章功能要求及环境搭建321功能要求322硬件环境3221MICRO24403222LED6223PWM蜂鸣器7224WIFI模块823软件环境和技术8231BOAWEB服务器8233LINUX管道1024环境搭建11241PC机环境搭建11242开发板14第三章系统的整体设计和实现1532CGI控制模块设计1533LED控制设计1834蜂鸣器控制设计1935用户界面设计20第四章总结与期望2441课题工作的总结2442功能拓展24致谢26参考文献27第一章前言11课题的内容及意义111选题背景MICRO2440的本质就是一个双层电路板,采用6层板设计的开发板作为核心板。它的底板上面引出了各种常见接口,这些接口主要集中于电路板的一侧,并利用20MM间距的插线将多余的IO口和系统总线引出,如此方便了用户的学习开发以及参考使用。本套餐可完美组合固定,不会有很多电线“缠身”,运行时只要连好5V电源,开机就可进入精彩的嵌入式世界。所配面板也可单独拆卸下来固定到其他壁面上,特别适合嵌入式爱好者DIY或中小企业二次开作原型机使用,也可以直接用于某些显示终端。本机可预装LINUX2613QTOPIA或WINDOWSCE50,可使用VS2008包含VISUALBASIC,VISUALC,VISUALC进行开发,也可以运行简易的UCOS2系统或裸机程序2440TEST等。为了满足信号的完整性要求,核心板部分利用等长布线这一方法。它将主要的芯片放在顶层,来方便日后的维修和调试;其核心板部分采用的是20MM间距“U”型排列插针,因此“U”型核心板U2440指的也是它,此举方便了拔插以及引出更多的CPU信号脚。MICRO2440的本质就是一个最小系统板,其中包含最基本的电源电路5V供电、用户调试指示灯、标准JTAG调试口、复位电路、还有核心的CPU和储物单元等等。NANDFLASH和NORFLASH是它的FLASH储物单元的两种类型,利用跳线J1可以选择从NAND或NOR启动系统。一般NORFLASH里面放置的是不经常更改的BIOS我们采用的是SUPERVIVI,NANDFLASH里面则写完整的系统程序BOOTLOADER、内核、文件系统等112研究现状和发展趋势在人类对生活要求不断的提高下,网络技术和通用技术都在不停的发展,完成智能家居的远程控制将会成为必然的走向。这个信息时代的开始,送给人们一个高科技产物,那就是智能家居系统。所有的智能家具都在它的涉及范围之内,其中包括了系统和设备的管理和操作,应用了自动控制技术,应用了通讯网络技术以及计算机技术。使人们得到安全,舒服,便捷的感觉以及不破坏绿色环境的需求是本系统的最终目的。检测家居设备的状态数据例如室内温度,家电情况,防盗门开关等都算是在只能家居系统的范畴之内。用户想要远程控制的话,可以通过发送短信或者网络对家庭系统进行远程控制或者查看。每当发现异常信号的时候,例如防盗门被打开,室内温度过高等。及时触发报警器,并且在最短时间内通过网络告知用户。系统将对用户的室内外安全进行全方面网络实时视频监控。本系统以WEB编程(CGI)作为核心技术,并建立在MICRO2440开发板和嵌入式LINUX操作系统之上制作完成。本系统实现了一个简易的网络控制系统。本系统的特点是原理简单,通用性好,并且方便搭建环境,在改动之后可以直接用于各种实际项目之上。12论文组织结构第一章是前言。本章主要给出毕业设计课题的背景,内容,意义和论文的组织结构。第二章是功能要求和环境搭建。主要讲述本次设计的主要研究内容,以及所需要的环境搭建。第三章是系统的整体设计和实现。本章主要介绍本设计如何设计以及实现最终目标的第四章是总结与期望。本章对此次设计做出了总结,并对未来的前途做出期望,功能做出拓展。第二章功能要求及环境搭建21功能要求(1)LED、蜂鸣器的驱动程序(2)远程控制LED亮灭(3)远程控制蜂鸣器响停(4)从客户端看到LED灯的状态(5)网页设计友好(6)完成设计22硬件环境221MICRO2440MICRO2440的本质就是一个双层电路板,采用6层板设计的开发板作为核心板。它的底板上面引出了各种常见接口,这些接口主要集中于电路板的一侧,并利用20MM间距的插线将多余的IO口和系统总线引出,如此方便了用户的学习开发以及参考使用。为了满足信号的完整性要求,核心板部分利用等长布线这一方法。它将主要的芯片放在顶层,来方便日后的维修和调试;其核心板部分采用的是20MM间距“U”型排列插针,因此“U”型核心板U2440指的也是它,此举方便了拔插以及引出更多的CPU信号脚。MICRO2440的本质就是一个最小系统板,其中包含最基本的电源电路5V供电、用户调试指示灯、标准JTAG调试口、复位电路、还有核心的CPU和储物单元等等。NANDFLASH和NORFLASH是它的FLASH储物单元的两种类型,利用跳线J1可以选择从NAND或NOR启动系统。一般NORFLASH里面放置的是不经常更改的BIOS我们采用的是SUPERVIVI,NANDFLASH里面则写完整的系统程序BOOTLOADER、内核、文件系统等。各个片选的存储空间并不相同,在这两种不同的启动模式中。如下图图21存储空间分配图S3C2440支持两种启动模式一种是从NANDFLASH启动MINI2440即是此种;一种是从NORFLASH启动。各个片选的存储空间并不相同,在这两种不同的启动模式中。MINI2440使用了两片外接的32MBYTES总共64MBYTES的SDRAM芯片HY57V561620FTP/MT48LC16M16A2,两个芯片并接在一起,总线数据宽度可以达到32BIT,这样就增加了访问速度;两个芯片并接在一起,所以使用了NGCS6作为片选,它们的物理起始地址为0X30000000,下面是SDRAM部分原理图。图22SDRAM部分原理图MINI244具备两种FLASH,一种是NORFLASH,型号为SST39VF1601AMD29LV160DB与此引脚兼容,大小为2MBYTE;另一种是NANDFLASH,型号为K9F1G08,大小为128M旧版本为K9F1208,大小为64MBYTE。NANDFLASH不具有地址线,它通过专门的控制接口与CPU连接在一起,数据总线为8位,但NANDFLASH读写数据的速度不会很慢。大部分的优盘或者SD卡等都是NANDFLASH制成的设备。在图23中可以看出,NORFLASH使用了A1A22共22条地址总线和16条数据总线与CPU相连,地址是从A1开始的,这意味着它每次最小的读写单位是2BYTE,因此根据原理图,该设计总共可以兼容支持最大8MBYTE的NORFLASH,实际我们的开发板上只用了A1A20条地址线,因为与A21、A22相连的SST39V1601的相应引脚是悬空的。图23NORFLASH原理图本开发板的电源系统直接使用外接的5V电源,通过降压芯片产生整个系统所需要的三种电压33V、18V、125V。而开发板并非面向手持移动设备设计,因此它并不具备完善的电源管理电路。整个系统的电源通断是由拨动开关S1控制的,不能通过软件进行开关机。开发板MICRO2440有两种USB接口,一个是USBHOST,它和普通PC的USB接口是一样的,可以连接USB外设,比如USB摄像头、USB键盘、USB鼠标、优盘等;另外一种是USBSLAVE,一般使用它将程序下载到开发板中。222LED资源LED(LIGHTEMITTINGDIODE),它的基本结构是将一块电致发光的半导体材料置于一个有引线的架子上,然后四周用环氧树脂密封,用来保护内部芯线,所以LED的抗震性能好。在MICRO2440SRCDRIVERSLEDDRIVER中编译程序,使其在初始状态下全灭。当收到命令时按要求亮起。图24LED原理图如图24所示,LED1与GPB5相连,LED2与GPB6相连,LED3与GPB7相连,LED4与GPB8相连,并且都是共阳极。当IO口的输出为低时,对应的LED会亮起。223蜂鸣器图25电路原理图如图25所示,蜂鸣器发声原理便是将GPB0设为TIMER0时的输出,TIMER0输出会是占空比50的方波。TIMER0的输出频率就是发声频率。另外使用TIMER3作为延时计时,周期1MS,重复N次来实现一个NMS的延时,来控制发声时间。224WIFI模块首先来介绍一下WIFI。WIFI。所谓无线保真技术,就是一种用无线方式将个人电脑以及手持设备等等终端连接起来的技术,它的本质就是一个高频无线电信号。无线保真是一个由WIFI联盟所持有的无线网络通信技术品牌。目的是改善标准的无线网路产品之间的互通性。现时一般人会把WIFI及IEEE80211混为一谈。甚至把WIFI等同于无线网际网路。无线网络是一种商业认证,也是一种无线联网技术。它在无线局域网的范畴内指的是“无线相容性认证”在以前人们通过网线连接电脑来上网,现在则是利用无线电波来上网,这便是无线保真;其中常见的就是无线路由器,在这个无线路由器的电波覆盖的有效范围都可以采用无线保真连接方式进行联网,如果无线路由器连接了一条ADSL线路或者别的上网线路,则又被称为热点。无线网络上网是现在非常广泛的一种无线网络传输技术,它也可以理解为无线上网,几乎所有的平板电脑,笔记本电脑以及智能手机都可以做到无线保真上网。其实根本上无线上网便是把有线信号改变成无线信号而已,使用路由器接受无线信号供给对应的平板电脑笔记本电脑以及智能手机。智能手机在上网的时候,如果连接WIFI,便可以省去高额的上网费用。无线网络无线上网传输速度非常快,最快可以达到54MBS,这非常适合于在大城市中应用,它也有它的缺点,在安全性能上不如蓝牙,无线通信质量也并不是很好,但这并不影响无线网络在当今社会中的广泛应用。无线保真非常适合办公用户的需要,因为它并不需要布线,所以并不受布线条件的干扰;而且它的发射功率都在100MV以下,连手机的发射功率都不到,所以无线保真上网也更为安全健康。WIFI模块为串口或TTL电平转WIFI通信的一种传输转换产品,UARTWIFI模块是基于UART接口的符合WIFI无线网络标准的嵌入式模块,里面含有无线网络协议IEEE80211协议栈以及TCP/IP协议栈,能够实现用户串口或TTL电平数据到无线网络之间的转换。本设计使用WIF模块是RI3070L。23软件环境和技术231BOAWEB服务器在ARMLINUX下,主要有3个嵌入式WEB服务器HTTPD、THTTPD和BOA。它们与APACHE等高性能WEB服务器的主要区别在于它们一般是单进程服务器,只有在完成一个用户请求后才能响应另一个用户的请求,无法并行响应,但对其在数字家庭中的应用已经足够了。相比其它两种,BOA服务器运行时所占资源最小。BOA并不同于其他的WEB服务器,每当发现连接请求时,BOA服务器不会创立进程为单个连接,也不会复制自身进程来处理多个链接,而是建立HTTP请求列表处理多路HTTP连接请求,BOA服务器创建新的进程只会为了CGI程序,,这样在很大程度上节约了系统资源。因此,BOA具有很高的HTTP请求处理速度和效率,在嵌入式系统中具有很高的应用价值。BOA服务器也拥有其他WEB服务器的功能,也能接受客户端请求,分析请求和响应请求,并向客户端反馈结果。BOA服务器会根据不同的请求方法,从而做出不同的响应。如果HEAD直接向浏览器请求的方法首先返回一个响应如果请求方法为GET的响应返回最前,同时,客户端请求的目标文件的URL从服务器上读取,并传送给客户端浏览器如果请求方法是POST,发送客户端来发送给相应的CGI程序,作为参数来执行CGI程序,并将结果发送给客户端的浏览器形式的消息。BOA的功能的实现是通过建立的连接,绑定端口,监听,请求处理等。图26BOA执行流程图232CGICGI是通用网关接口,为服务器和用户程序之间的连接,它可以使你的网站更加生动,很多工具,如网络上的搜索引擎,留言板,BBS等都是CGI程序。CGI是沟通HTML表单和服务器程序接口(INTERFACE)。CGI并不是一种语言,但也可以算是一组规范的其他语言的应用程序。从理论上讲,你可以使用任何编程语言来编写CGI程序,只要在编程以内符合CGI的规范定义的一些事情就是可以的。由于C语言做的很好的平台中立性(在几乎所有的系统平台都有相应的编译器),并且让大多数程序员所熟悉,因此,编写CGI的首选语言就是C。233LINUX管道在LINUX中,管道是一种很常见的沟通机制。从根本上说,管道是一种文件,但管道是从一般的文件不同,管道可以克服这两个文件的缺点。其表现如下在LINUX中,管道是一种很常见的沟通机制。从根本上说,管道是一种文件,但管道是从一般的文件不同,管道可以克服这两个文件的缺点。其性能如下(1)限制管道的大小。实际上,管道是一个固定大小的缓冲区。在LINUX中,缓冲区是1页,4K字节的大小,让它并不会不加检验的增长大小。使用单个固定缓冲区可能会造成问题,例如写管道时可能变满,当这种情况发生,然后写管道WRITE调用将默认被阻塞,等待某些数据被读取后,为了使足够的空间对于WRITE()调用。(2)读取进程也可能工作得比写进程快。当所有当前进程数据已被读取时,管道变空。当这种情况发生时,一个随后的READ调用将默认地被阻塞,等待某些数据被写入,这解决了READ调用返回文件结束的问题。LINUX的管道分为2种有名管道和无名管道。1、无名管道无名管道是最初最原始的管道通信方法,如图26所示,它具有以下特点它只能用于具有亲缘关系的进程之间的通信,可用范围相对较小;它具有固定的读写端口,所以它是双半工的通信模式;管道并非普通文件,只存储于内存之中,并不属于任何文件系统,它也是特殊的文件,它的读写也可以用普通的函数表达。2、有名管道FIFO有名管道是对无名管道的一种改进,如图26所示,它具有以下特点它的应用范围较广,并不相干的两个进程可以实现彼此通信;有名管道在文件系统中可见,想要指出它只要它的路径名就可以了。有名管道使用便捷,在建立有名管道之后,可以将两个进程当做普通文件来读写;FIFO严格地遵循先进先出规则,对管道及FIFO的读总是从开始处返回数据,对它们的写则是把数据添加到末尾,它们不支持如LSEEK等文件定位操作。图26无名管道和有名管道24环境搭建241PC机环境搭建(1)安装系统第一步在WINDOWS中安装好虚拟机,之后运行程序。然后通过NEWVIRTUAIMACHINE,打开新建虚拟机向导,选择CUNTON。点击NEST进入下一步,一直选择NEST直到没有NEST的时候选择IWILLINSTALLTHEOPERATINGSYSTEMLATER,这一步是要安装好虚拟机在安装系统。在接下来的界面中选择LINUX,同时VERSION选择中选择REDHATENTERPRISELINUX5。再次点击NEST。然后在上面选择RHEL5点击NEST。根据PC机是单核还是双核选择ONE和TWO。点击NEST。根据内存选择给虚拟机分配的内存大小,点击NEST。之后选择USEBRIDGEDNETWORKING,也就是网络连接方式。继续一直点击NEST,直到出现填数字的地方。那是根据磁盘大小分配,一般选择15G,下面的选择SPLITVIRTUALDISKINTO2GBFILES。NEXT,选择安装位置,推荐在之前安装的目录中。点击NEXT,点击FINISH。进入虚拟机启动状态,这时显示找不到操作系统。此时用虚拟机的光驱来加载RHEL5的安装镜像文件,再通过下拉菜单,在DEVICE中选择CD/DVD,并在CONNECT项中USEISOIMAGEFILE;并在BROWSE中选择镜像文件点击OK。之后重启虚拟机。跳过检测,进入RHEL5的安装界面,NEXT,点击简体中文。点击NEXT,键盘语言选择美国英语式。点击下一步,出现安装号码,跳过安装号码。遇到初始化磁盘的窗口时选择是。默认使用原有的分区方案,点击下一步,出现确认的对话框时选择是。这时进入了网络配置界面,使用默认分配,点击下一步。遇到时区问题时根据地点不同自行更改。之后点击下一步输入ROOT账户密码确认。当进入软件定制的安装时。选定软件开发与网络服务器这两项额外功能,现在定制。在软件包安装中,将服务器的选择还有基本系统全部选上,开发中把老的软件开发选上。其他用默认就可以。单机下一步,会开始一段检测,完毕后进去配置界面点击下一步开始进行RHEL5的安装。过程需要时间,在此之中请耐心等候,安装结束后,点击重新引导,之后点击前进,将防火墙禁用。前进,禁用SELINUX。之后分别选择不启用KDUNP,并对好本地时间。前进,创建一个用户,测试声卡,不安装附加光盘,整个安装到此完成。在下次开启时就会看到登陆界面了。(2)搭建交叉编译环境在LINUX平台下,要为开发板编译内核,图形界面QTOPIA,BOOTLOADER,还有其他一些应用程序,均需要交叉编译工具链。STEP1将光盘目录LINUX中的ARMLINUXGCC443TGZ复制到某个目录下如TMP,然后进入到该目录,执行解压命令CD/TMPTARXVZFARMLINUXGCC443TGZC/注意C后面有个空格,并且C是大写的,它是英文单词“CHANGE”的第一个字母,在此是改变目录的意思。执行该命令,将把ARMLINUXGCC安装到/USR/LOCA/ARM/443目录。STEP2把编译器路径加入系统环境变量,运行命令GEDIT/ROOT/BASHRC编辑/ROOT/BASHRC文件,在最后一行添加EXPORTPATHPATH/OPT/FRIENDLYARM/TOOLSCHAIN/443/BIN重新登录系统不必重启机器,开始LOGOUT即可,使以上设置生效,在命令行输入ARMLINUXGCCV,会出现如下信息,这说明交叉编译环境已经成功安装。图27安装成功图(3)配置NFS服务器通过命令启动和停止NFS服务在命令行下运行/ETC/INITD/NFSSTART这将启动NFS服务,可以输入以下命令检验NFS该服务是否启动。MOUNTTNFSLOCALHOST/OPT/MICRO2440/MNT/如果没有出现错误信息,您将可以浏览到/MNT目录中的内容和/OPT/MICRO2440是一致的。使用这个命令可以停止NFS服务/ETC/INITD/NFSSTOP设置共享目录运行命令GEDIT/ETC/EXPORTS编辑NFS服务的配置文件注意第一次打开时该文件是空的,添加以下内容/OPT/MICRO2440RW,SYNC,NO_ROOT_SQUASH其中/OPT/MICRO2440表示NFS共享目录,它可以作为开发板的根文件系统通过NFS挂接;表示所有的客户机都可以挂接此目录RW表示挂接此目录的客户机对该目录有读写的权力NO_ROOT_SQUASH表示允许挂接此目录的客户机享有该主机的ROOT身份242BOA服务器的移植嵌入式LINUXWEB服务器的移植方法如下所示1下载BOA09413TARGZ源码,下载地址HTTP/WWWBOAORG/。将下载的文件放入用户目录如/CCP,解压TARXZFBOA09413TARGZ。2生成MAKEFILE文件。BOA09413TARGZ经解压后生成BOA09413目录,运行该目录下的SRC/CONFIGURE文件,执行命令/CONFIGURE。3修改MAKEFILE文件VIMAKEFILE。修改CCGCC为CCARMLINUXGCC。修改CPPGCCE为CPPARMLINUXGCCE。4进入BOA09413/SRC目录,运行MAKE,进行编译。执行命令MAKE,得到的可执行程序为BOA,再执行命令ARMLINUXSTRIPBOA将调试信息剥去。5把编译后的BOA放入根文件系统的/BIN目录下。6BOA配置。在BOA源码BOA09413目录下已有一个示例BOACON,F可以在其基础上进行修改。修改如下GROUP修改GROUPNOGROUP为GROUP0。SCRIPTALIAS修改SCRIPTALIAS/CGIBIN/USR/LIB/CGIBIN/为SCRIPTALIAS/CGIBIN/VAR/WWW/CGIBIN/。SERVERNAME修改SERVERNAMEWWWYOURORGHERE为SERVERNAMEWWWYOURORGHERE。如果文件系统是只读的如CRAMFS,需要在BOACONF里注释掉ACCESSLOG/VAR/LOG/BOA/ACCESS_LOG。此外,还需要将MIMETYPES文件复制至根文件系统/ETC目录下,通常从LINUX主机的/ETC目录下直接复制即可。7重新编译文件系统,然后下载到ARM板。完成上述操作后,在ARM板上运行BOA程序,正常情况下就可以在PC上通过IE浏览器访问开发板上的WEBSERVER。第三章系统的整体设计和实现31整体设计本设计的总体思想是通过WIFI网络来控制MICRO2440其原理如图31。正如图中所讲,我们利用PC机发送信号通过网络传到WIFI模块,WIFI模块再发送信号到MICRO2440,之后MICRO2440控制LED亮灭以及蜂鸣器响停。控制之后也会反馈信号到MICRO2440,反馈信号原路返回到PC机上告知用户。系统整体设计框图如下所示PC机WIFI模块MICRO2440LED蜂鸣器网络图31系统整体设计图32CGI控制模块设计CGI是一个标准的WEB服务器的交互接口的外部扩展应用程序,它本身就是一个服务器端程序。当用户的浏览器中,在将请求发送到服务器时,通常会请求一个网页文件,但对于CGI,请求执行的CGI程序,它动态生成网页代码。在这种方式中,用户可以在浏览器上看到实际上是动态生成的网页CGI程序。CGI程序一般完成WEB网页中的数据处理,查询等,可以使用任何编程语言(如FORTRAN,PASCAL中,C等)来写,也可以在服务器系统上使用了一个支持表单(FORM)脚本语言来写。但对于BOA的WEB服务器,不支持任何脚本,CGI程序只支持C代码。用C语言编写CGI程序的执行速度,安全性和效率都很高。CGI数据是利用标准输入/输出STDIN/STDOUT的方式传播的。当用户提交的HTMLFORM,WEB浏览器,首先,在表格的数据进行编码,名称/值对的形式,并将其发送到WEB服务器,然后由WEB服务器的CGI程序通过。它的格式为“NAME1VALUE1如果要返回纯文本,则语句PRINTF“CONTENTTYPETEXT/HTMLNN”通知服务器,随后输出的是纯ASCII文本形式的信息。所以,CONTENTTYPE用以向服务器表明返回数据的类型,希望另一端的客户能据此作处理。如果CGI程序出了问题,STATUS标题就用于了解一些信息。各种状态代码代表不同含义。如果CGI程序不希望产生一个新的HTML返回给用户,并指向到其他的位置,可以使用位置的标题,它会在浏览器引导到一个新的位置,只要位置。某个地方,如果你想在原来的页面出现无论是作为一个结果,也可以使用位置,只要输入链接网址后面添加必要的数据,数据和问号()来隔离处理。如果有多个数据时,可以使用NAME1VALUE1NAME2值“的形式。当然,做一个网页的脚本(如JAVASCRIPT)来分析数据,以便把他们在正确的地方网页。图32程序图这里采用POST的方法传输表单数据,然后在主函数中读取表单值,根据表单的值对LED和蜂鸣器进行控制。具体过程如下所示LENGETENV“CONTENT_LENGTH“IFLENNULLUNSIGNEDINTCONTENT_LEN0CHARDATACONTENT_LENATOILENDATAMALLOCCONTENT_LEN1READ0,DATA,CONTENT_LENSSCANFDATA,“LEDD“,SSCANFDATA,“VIEWD“,FREEDATAELSELED_NUM0PRINTF“FLAGDN“,FLAG33LED控制设计在嵌入式LINUX中,对LED的控制需要驱动程序,LED驱动程序中,用户直接接触到的是IOCTL控制。应用程序将来调用的IOCTL函数FILE为应用层返回的文件句柄,CMD为操作命令,ARG为传入的参数。STATICINTSBC2440_LEDS_IOCTLSTRUCTINODEINODE,STRUCTFILEFILE,UNSIGNEDINTCMD,UNSIGNEDLONGARGSWITCHCMDCASE0CASE1IFARG4RETURNEINVALS3C2410_GPIO_SETPINLED_TABLEARG,CMDRETURN0DEFAULTRETURNEINVAL本设计在CONFIGINI文件中,存储了LED的状态,当接收到CGI传输的对LED状态的改变时,修改CONFIGINI中存储的LED状态,VOIDCONFIGINTLED_CONFIG,INTLED_NUMFILEFPIFFPFOPEN“CONFIGINI“,“R“NULLPRINTF“FOPENERRORRETURN/A“EXIT1FSCANFFP,“LED1D,LED2D,LED3D,LED4D,LED5D“,LED_CONFIG,LED_CONFIG1,LED_CONFIG2,LED_CONFIG3,LED_CONFIG4IFLED_NUM0IFLED_CONFIGLED_NUM11LED_CONFIGLED_NUM10ELSELED_CONFIGLED_NUM11FSEEKFP,7LED_NUM15,SEEK_SETFPRINTFFP,“D“,LED_CONFIGLED_NUM1FCLOSEFP然后根据对LED的实际状态进行修改。VOIDLED_FUNINTLED_CONFIGUNSIGNEDINTLED_N

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论