基于micro2440的wifi网络开关设计 毕业论文_第1页
基于micro2440的wifi网络开关设计 毕业论文_第2页
基于micro2440的wifi网络开关设计 毕业论文_第3页
基于micro2440的wifi网络开关设计 毕业论文_第4页
基于micro2440的wifi网络开关设计 毕业论文_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、防 灾 科 技 学 院毕 业 设 计题 目基于micro2440的wifi网络开关设计学生姓名学 号105032106系 别防灾仪器系专 业测控技术与仪器班 级开题时间2013年12月25日答辩时间2014年06月07日指导教师职 称教授基于micro2440的wifi网络开关设计摘要 在互联网流行的当今社会,用网络控制设备已经成为一种必然的趋势。本设计便是用WIFI设计了一个网络开关,通过网络实现远程控制Micro2440 开发板上的资源。本设计通过网页发送控制信号到嵌入式Linux服务器,利用CGI(Common Gateway Interface)与Micro2440上的服务器程序进行数

2、据交互。位于Micro2440中的主程序收到控制信号后,根据控制信号的不同利用Linux的管道通信方式,控制Micro2440的GPB5、GPB6、GPB7和GPB8,即Micro2440开发板的LED资源和蜂鸣器资源。网络控制FRIENDLY ARM的LED灯亮以及蜂鸣器响。本设计的核心技术为Micro 2440.应用BOA Web服务器.以及common gateway interface通用网络接口,将本地浏览器和网络服务器之间进行数据传输。通过管道来控制,通过linux语言控制本设计。在ARM收到信息后完成LED灯亮以及PWM响的成果。关键词:Micro2440 BOA Web服务器

3、CGI WIFIBased on micro2440 wifi network switch designAuthor Yuan YeTeacher HONG LiABSTACT In current society, the Internet popular, has become an inevitable trend of network control equipment. This design is to use WIFI to design a network switch, remote control on the Micro2440 development Board re

4、sources through the network.The design of the control signal to the embedded Linux server through the Webpage transmission, using CGI (Common Gateway Interface) data interaction with the server on the Micro2440 program. Located in the main program in Micro2440 receiving the control signal, according

5、 to the different pipeline communication using Linux control signals, control of Micro2440 GPB5, GPB6, GPB7 and GPB8, i.e. Micro2440 development Board of the LED resource and the buzzer resources.LED light network control FRIENDLY ARM light and buzzer. The core technology of the design for the appli

6、cation of Micro 2440 BOA Web common gateway interface server. And the universal network interface, will be among the local browser and web server for data transmission. Controlled by the pipeline, through the design of a Linux control language. To complete the LED lights and PWM ring results in the

7、ARM after receiving the information.Keywords: The Micro2440 BOA Web server CGI WIF 目录第一章 前言11.1 课题的内容及意义11.1.1 选题背景11.2 论文组织结构2第二章 功能要求及环境搭建32.1 功能要求32.2 硬件环境32.2.1 micro244032.2.2 LED62.2.3 pwm蜂鸣器72.2.4 wifi模块82.3软件环境和技术82.3.1 Boa web服务器82.3.3 linux管道102.4 环境搭建112.4.1 PC机环境搭建112.4.2 开发板14第三章 系统的整体设

8、计和实现153.2 CGI控制模块设计153.3 LED控制设计183.4 蜂鸣器控制设计193.5 用户界面设计20第四章 总结与期望244.1 课题工作的总结244.2 功能拓展24致 谢26参考文献27防灾科技学院毕业设计第一章 前言1.1 课题的内容及意义1.1.1 选题背景Micro2440的本质就是一个双层电路板,采用6层板设计的开发板作为核心板。它的底板上面引出了各种常见接口,这些接口主要集中于电路板的一侧,并利用2.0mm间距的插线将多余的IO口和系统总线引出,如此方便了用户的学习开发以及参考使用。 本套餐可完美组合固定,不会有很多电线“缠身”,运行时只要连好5V电源,开机就可

9、进入精彩的嵌入式世界。所配面板也可单独拆卸下来固定到其他壁面上,特别适合嵌入式爱好者DIY或中小企业二次开作原型机使用,也可以直接用于某些显示终端。本机可预装Linux-2.6.13+Qtopia或WindowsCE5.0,可使用VS2008(包含Visual Basic,Visual C+,Visual C#)进行开发,也可以运行简易的uCos2系统或裸机程序2440test等。为了满足信号的完整性要求,核心板部分利用等长布线这一方法。它将主要的芯片放在顶层,来方便日后的维修和调试;其核心板部分采用的是2.0mm间距“U”型排列插针,因此“U”型核心板-U2440指的也是它,此举方便了拔插以

10、及引出更多的CPU信号脚。 micro2440的本质就是一个最小系统板,其中包含最基本的电源电路(5V供电)、用户调试指示灯、标准JTAG调试口、复位电路、还有核心的CPU和储物单元等等。NAND FLASH和NOR FLASH是它的FLASH储物单元的两种类型,利用跳线J1可以选择从NAND或NOR启动系统。一般NOR FLASH里面放置的是不经常更改的BIOS(我们采用的是supervivi),NAND FLASH里面则写完整的系统程序(bootloader、内核、文件系统等)1.1.2 研究现状和发展趋势在人类对生活要求不断的提高下,网络技术和通用技术都在不停的发展,完成智能家居的远程控

11、制将会成为必然的走向。这个信息时代的开始,送给人们一个高科技产物,那就是智能家居系统。所有的智能家具都在它的涉及范围之内,其中包括了系统和设备的管理和操作,应用了自动控制技术,应用了通讯网络技术以及计算机技术。使人们得到安全,舒服,便捷的感觉以及不破坏绿色环境的需求是本系统的最终目的。检测家居设备的状态数据:例如室内温度,家电情况,防盗门开关等都算是在只能家居系统的范畴之内。用户想要远程控制的话,可以通过发送短信或者网络对家庭系统进行远程控制或者查看。每当发现异常信号的时候,例如防盗门被打开,室内温度过高等。及时触发报警器,并且在最短时间内通过网络告知用户。系统将对用户的室内外安全进行全方面网

12、络实时视频监控。本系统以Web编程(CGI)作为核心技术,并建立在micro2440 开发板和嵌入式LINUX操作系统之上制作完成。本系统实现了一个简易的网络控制系统。本系统的特点是原理简单,通用性好,并且方便搭建环境,在改动之后可以直接用于各种实际项目之上。1.2 论文组织结构第一章是前言。本章主要给出毕业设计课题的背景,内容,意义和论文的组织结构。第二章是功能要求和环境搭建。主要讲述本次设计的主要研究内容,以及所需要的环境搭建。第三章是系统的整体设计和实现。本章主要介绍本设计如何设计以及实现最终目标的第四章是总结与期望。本章对此次设计做出了总结,并对未来的前途做出期望,功能做出拓展。第二章

13、 功能要求及环境搭建2.1 功能要求(1)LED、蜂鸣器的驱动程序(2)远程控制LED亮灭(3)远程控制蜂鸣器响停(4)从客户端看到LED灯的状态(5)网页设计友好(6)完成设计2.2 硬件环境2.2.1 Micro2440Micro2440的本质就是一个双层电路板,采用6层板设计的开发板作为核心板。它的底板上面引出了各种常见接口,这些接口主要集中于电路板的一侧,并利用2.0mm间距的插线将多余的IO口和系统总线引出,如此方便了用户的学习开发以及参考使用。 为了满足信号的完整性要求,核心板部分利用等长布线这一方法。它将主要的芯片放在顶层,来方便日后的维修和调试;其核心板部分采用的是2.0mm间

14、距“U”型排列插针,因此“U”型核心板-U2440指的也是它,此举方便了拔插以及引出更多的CPU信号脚。 micro2440的本质就是一个最小系统板,其中包含最基本的电源电路(5V供电)、用户调试指示灯、标准JTAG调试口、复位电路、还有核心的CPU和储物单元等等。NAND FLASH和NOR FLASH是它的FLASH储物单元的两种类型,利用跳线J1可以选择从NAND或NOR启动系统。一般NOR FLASH里面放置的是不经常更改的BIOS(我们采用的是supervivi),NAND FLASH里面则写完整的系统程序(bootloader、内核、文件系统等)。各个片选的存储空间并不相同,在这两

15、种不同的启动模式中。如下图:图2.1 存储空间分配图S3C2440 支持两种启动模式:一种是从 Nand Flash 启动(MINI2440 即是此种);一种是从 Nor Flash启动。各个片选的存储空间并不相同,在这两种不同的启动模式中。Mini2440 使用了两片外接的 32M bytes 总共 64M bytes 的 SDRAM 芯片:HY57V561620FTP/MT48LC16M16A2),两个芯片并接在一起,总线数据宽度可以达到32-bit,这样就增加了访问速度;两个芯片并接在一起,所以使用了nGCS6 作为片选,它们的物理起始地址为 0x30000000,下面是SDRAM部分原

16、理图。 图2.2 SDRAM 部分原理图Mini244具备两种Flash,一种是 Nor Flash,型号为 SST39VF1601(AMD29LV160DB与此引脚兼容),大小为 2Mbyte;另一种是 Nand Flash,型号为 K9F1G08,大小为128M(旧版本为 K9F1208,大小为 64Mbyte)。Nand Flash不具有地址线,它通过专门的控制接口与CPU 连接在一起,数据总线为 8位,但Nand Flash 读写数据的速度不会很慢。大部分的优盘或者SD 卡等都是 Nand Flash 制成的设备。 在图2.3中可以看出, Nor Flash使用了A1-A22 共 22

17、 条地址总线和 16 条数据总线与 CPU 相连,地址是从 A1 开始的,这意味着它每次最小的读写单位是 2-byte,因此根据原理图,该设计总共可以兼容支持最大 8Mbyte 的 Nor Flash,实际我们的开发板上只用了 A1-A20 条地址线,因为与A21、A22 相连的 SST39V1601的相应引脚是悬空的。图2.3 Nor Flash原理图本开发板的电源系统直接使用外接的5V电源,通过降压芯片产生整个系统所需要的三种电压:3.3V、1.8V、1.25V。 而开发板并非面向手持移动设备设计, 因此它并不具备完善的电源管理电路。整个系统的电源通断是由拨动开关S1控制的,不能通过软件进

18、行开关机。开发板Micro 2440有两种USB接口, 一个是USB Host, 它和普通 PC的 USB接口是一样的,可以连接USB外设,比如 USB摄像头、 USB键盘、 USB鼠标、 优盘等; 另外一种是USB Slave,一般使用它将程序下载到开发板中。2.2.2 LED资源LED (light emitting diode),它的基本结构是:将一块电致发光的半导体材料置于一个有引线的架子上,然后四周用环氧树脂密封,用来保护内部芯线,所以 LED 的抗震性能好。在micro2440SRCDRIVERSLEDdriver中编译程序,使其在初始状态下全灭。当收到命令时按要求亮起。图2.4

19、LED原理图如图2.4所示,LED1与GPB5相连,LED2与GPB6相连,LED3与GPB7相连,LED4与GPB8相连,并且都是共阳极。当IO口的输出为低时,对应的LED会亮起。2.2.3蜂鸣器图2.5 电路原理图如图2.5所示,蜂鸣器发声原理便是将GPB0设为Timer0时的输出,Timer0输出会是占空比50%的方波。Timer0的输出频率就是发声频率。另外使用Timer3作为延时计时,周期1ms,重复n次来实现一个n ms的延时,来控制发声时间。2.2.4 wifi模块 首先来介绍一下wifi。Wi-Fi 。所谓无线保真技术,就是一种用无线方式将个人电脑以及手持设备等等终端连接起来的

20、技术,它的本质就是一个高频无线电信号。无线保真是一个由Wi-Fi联盟所持有的无线网络通信技术品牌。目的是改善标准的无线网路产品之间的互通性。现时一般人会把Wi-Fi及IEEE 802.11混为一谈。甚至把Wi-Fi等同于无线网际网路。无线网络是一种商业认证,也是一种无线联网技术。它在无线局域网的范畴内指的是“无线相容性认证”;在以前人们通过网线连接电脑来上网,现在则是利用无线电波来上网,这便是无线保真;其中常见的就是无线路由器,在这个无线路由器的电波覆盖的有效范围都可以采用无线保真连接方式进行联网,如果无线路由器连接了一条ADSL线路或者别的上网线路,则又被称为热点。无线网络上网是现在非常广泛

21、的一种无线网络传输技术,它也可以理解为无线上网,几乎所有的平板电脑,笔记本电脑以及智能手机都可以做到无线保真上网。其实根本上无线上网便是把有线信号改变成无线信号而已,使用路由器接受无线信号供给对应的平板电脑笔记本电脑以及智能手机。智能手机在上网的时候,如果连接Wi-Fi,便可以省去高额的上网费用。无线网络无线上网传输速度非常快,最快可以达到54Mbs,这非常适合于在大城市中应用,它也有它的缺点,在安全性能上不如蓝牙,无线通信质量也并不是很好,但这并不影响无线网络在当今社会中的广泛应用。无线保真非常适合办公用户的需要,因为它并不需要布线,所以并不受布线条件的干扰;而且它的发射功率都在100mv以

22、下,连手机的发射功率都不到,所以无线保真上网也更为安全健康。Wifi模块为串口或TTL电平转WIFI通信的一种传输转换产品,Uart-Wifi模块是基于Uart接口的符合wifi无线网络标准的嵌入式模块,里面含有无线网络协议IEEE802.11协议栈以及TCP/IP协议栈,能够实现用户串口或TTL电平数据到无线网络之间的转换。本设计使用wif模块是ri3070L。2.3软件环境和技术2.3.1 Boa web服务器在ARM-Linux下,主要有3个嵌入式Web服务器:HTTPD、THTTPD和BOA。它们与Apache等高性能Web服务器的主要区别在于它们一般是单进程服务器,只有在完成一个用户

23、请求后才能响应另一个用户的请求,无法并行响应,但对其在数字家庭中的应用已经足够了。相比其它两种,BOA服务器运行时所占资源最小。Boa并不同于其他的Web服务器,每当发现连接请求时,BOA服务器不会创立进程为单个连接,也不会复制自身进程来处理多个链接,而是建立HTTP请求列表处理多路HTTP连接请求,BOA服务器创建新的进程只会为了CGI程序,,这样在很大程度上节约了系统资源。因此,Boa具有很高的HTTP请求处理速度和效率, 在嵌入式系统中具有很高的应用价值。 Boa服务器也拥有其他Web服务器的功能,也能接受客户端请求,分析请求和响应请求,并向客户端反馈结果。 Boa服务器会根据不同的请求

24、方法,从而做出不同的响应。如果HEAD直接向浏览器请求的方法首先返回一个响应;如果请求方法为GET的响应返回最前,同时,客户端请求的目标文件的URL从服务器上读取,并传送给客户端浏览器;如果请求方法是POST,发送客户端来发送给相应的CGI程序,作为参数来执行CGI程序,并将结果发送给客户端的浏览器形式的消息。Boa的功能的实现是通过建立的连接,绑定端口,监听,请求处理等。图2.6 Boa执行流程图2.3.2 CGI CGI是通用网关接口,为服务器和用户程序之间的连接,它可以使你的网站更加生动,很多工具,如网络上的搜索引擎,留言板,BBS等都是CGI程序。CGI是沟通HTML表单和服务器程序接

25、口(interface)。CGI并不是一种语言,但也可以算是一组规范的其他语言的应用程序。从理论上讲,你可以使用任何编程语言来编写CGI程序,只要在编程以内符合CGI的规范定义的一些事情就是可以的。由于C语言做的很好的平台中立性(在几乎所有的系统平台都有相应的编译器),并且让大多数程序员所熟悉,因此,编写CGI的首选语言就是C。2.3.3 linux管道在Linux中,管道是一种很常见的沟通机制。从根本上说,管道是一种文件,但管道是从一般的文件不同,管道可以克服这两个文件的缺点。其表现如下:在Linux中,管道是一种很常见的沟通机制。从根本上说,管道是一种文件,但管道是从一般的文件不同,管道可

26、以克服这两个文件的缺点。其性能如下:(1) 限制管道的大小。实际上,管道是一个固定大小的缓冲区。在Linux中,缓冲区是1页,4K字节的大小,让它并不会不加检验的增长大小。使用单个固定缓冲区可能会造成问题,例如写管道时可能变满,当这种情况发生,然后写管道write()调用将默认被阻塞,等待某些数据被读取后,为了使足够的空间对于write()调用。(2) 读取进程也可能工作得比写进程快。当所有当前进程数据已被读取时,管道变空。当这种情况发生时,一个随后的read()调用将默认地被阻塞,等待某些数据被写入,这解决了read()调用返回文件结束的问题。Linux的管道分为2种:有名管道和无名管道。1

27、、无名管道 无名管道是最初最原始的管道通信方法,如图2.6所示,它具有以下特点: 它只能用于具有亲缘关系的进程之间的通信,可用范围相对较小; 它具有固定的读写端口,所以它是双半工的通信模式; 管道并非普通文件,只存储于内存之中,并不属于任何文件系统,它也是特殊的文件,它的读写也可以用普通的函数表达。2、有名管道(FIFO) 有名管道是对无名管道的一种改进,如图2.6所示,它具有以下特点: 它的应用范围较广,并不相干的两个进程可以实现彼此通信; 有名管道在文件系统中可见,想要指出它只要它的路径名就可以了。有名管道使用便捷,在建立有名管道之后,可以将两个进程当做普通文件来读写; FIFO严格地遵循

28、先进先出规则,对管道及FIFO的读总是从开始处返回数据,对它们的写则是把数据添加到末尾,它们不支持如 lseek()等文件定位操作。图2.6 无名管道和有名管道2.4 环境搭建2.4.1 PC机环境搭建(1)安装系统第一步在windows中安装好虚拟机,之后运行程序。然后通过NEW Virtuai Machine,打开新建虚拟机向导,选择Cunton。点击nest进入下一步,一直选择nest直到没有nest的时候选择I will install the operating system later,这一步是要安装好虚拟机在安装系统。在接下来的界面中选择linux,同时Version选择中选择R

29、ed Hat Enterprise Linux 5。再次点击nest。然后在上面选择RHEL5点击nest。根据PC机是单核还是双核选择one和two。点击nest。根据内存选择给虚拟机分配的内存大小,点击nest。之后选择use bridged networking,也就是网络连接方式。继续一直点击nest,直到出现填数字的地方。那是根据磁盘大小分配,一般选择15G,下面的选择split virtual disk into 2GB files。Next,选择安装位置,推荐在之前安装的目录中。点击next,点击finish。进入虚拟机启动状态,这时显示找不到操作系统。此时用虚拟机的光驱来加载R

30、HEL5的安装镜像文件,再通过下拉菜单,在Device中选择CD/DVD,并在Connect项中Use ISO image file;并在browse中选择镜像文件点击OK。之后重启虚拟机。跳过检测,进入RHEL5的安装界面,NEXT,点击简体中文。点击NEXT,键盘语言选择美国英语式。点击下一步,出现安装号码,跳过安装号码。遇到初始化磁盘的窗口时选择是。默认使用原有的分区方案,点击下一步,出现确认的对话框时选择是。这时进入了网络配置界面,使用默认分配,点击下一步。遇到时区问题时根据地点不同自行更改。之后点击下一步输入root账户密码确认。当进入软件定制的安装时。选定软件开发与网络服务器这两项

31、额外功能,现在定制。在软件包安装中,将服务器的选择还有基本系统全部选上,开发中把老的软件开发选上。其他用默认就可以。单机下一步,会开始一段检测,完毕后进去配置界面点击下一步开始进行RHEL5的安装。过程需要时间,在此之中请耐心等候,安装结束后,点击重新引导,之后点击前进,将防火墙禁用。前进,禁用SELinux。之后分别选择不启用kdunp,并对好本地时间。前进,创建一个用户,测试声卡,不安装附加光盘,整个安装到此完成。在下次开启时就会看到登陆界面了。(2)搭建交叉编译环境在 Linux 平台下,要为开发板编译内核,图形界面 Qtopia,bootloader,还有其他一些应用程序,均需要交叉编

32、译工具链。Step1:将光盘目录 linux中的 arm-linux-gcc-4.4.3.tgz 复制到某个目录下如 tmp,然后进入到该目录,执行解压命令: #cd /tmp #tar xvzf arm-linux-gcc-4.4.3.tgz C / 注意:C 后面有个空格,并且 C 是大写的,它是英文单词“Change”的第一个字母,在此是改变目录的意思。 执行该命令,将把 arm-linux-gcc 安装到/usr/loca/arm/4.4.3 目录。Step2:把编译器路径加入系统环境变量,运行命令 #gedit /root/.bashrc 编辑/root/.bashrc 文件,在最后

33、一行添加: export PATH=$PATH: /opt/FriendlyARM/toolschain/4.4.3/bin重新登录系统(不必重启机器,开始-logout 即可),使以上设置生效,在命令行输入 arm-linux-gcc v,会出现如下信息,这说明交叉编译环境已经成功安装。图2.7 安装成功图(3)配置NFS服务器通过命令启动和停止 nfs 服务 在命令行下运行: #/etc/init.d/nfs start 这将启动 nfs 服务,可以输入以下命令检验 nfs 该服务是否启动。 # mount -t nfs localhost: /opt/micro2440 /mnt/ 如果

34、没有出现错误信息,您将可以浏览到 /mnt 目录中的内容和/opt/micro2440 是一致的。 使用这个命令可以停止 nfs 服务: #/etc/init.d/nfs stop设置共享目录 运行命令 #gedit /etc/exports 编辑 nfs 服务的配置文件(注意:第一次打开时该文件是空的),添加以下内容: /opt/micro2440 *(rw,sync,no_root_squash) 其中: /opt/micro2440表示 nfs 共享目录,它可以作为开发板的根文件系统通过 nfs 挂接; * 表示所有的客户机都可以挂接此目录 rw 表示挂接此目录的客户机对该目录有读写的权

35、力 no_root_squash 表示允许挂接此目录的客户机享有该主机的 root 身份2.4.2 BOA服务器的移植嵌入式Linux Web 服务器的移植方法如下所示:(1)下载BOA-0. 94. 13. tar. gz源码,下载地址: http: /www. Boa. org/。将下载的文件放入用户目录(如/ccp),解压#tar xzf Boa-0. 94. 13. tar.gz。(2)生成Makefile文件。Boa-0. 94. 13. tar.gz经解压后生成Boa-0. 94. 13目录,运行该目录下的src/configure文件,执行命令#. /configure。(3)修

36、改Makefile文件: #viMakefile。修改CC = gcc为CC = arm-linux-gcc。修改CPP = gcc-E为CPP = arm-linux-gcc-E。(4)进入Boa-0. 94. 13/src目录,运行make,进行编译。执行命令#make,得到的可执行程序为Boa,再执行命令#arm-linux-strip Boa将调试信息剥去。(5)把编译后的Boa放入根文件系统的/bin目录下。(6) BOA配置。在BOA源码Boa-0. 94. 13目录下已有一个示例Boa. con,f可以在其基础上进行修改。修改如下:Group:修改Group nogroup为Gr

37、oup 0。ScriptAlias:修改ScriptAlias/cgi-bin/usr/lib/cgi-bin/为ScriptAlias /cgi-bin/var/www/cgi-bin/。ServerName:修改#ServerName www. . here为ServerNamewww. your. org. here。如果文件系统是只读的(如cramfs),需要在Boa. conf里注释掉#AccessLog /var/log/Boa/access_log。此外,还需要将mime. types文件复制至根文件系统/etc目录下,通常从linux主机的/etc目录下直接复制

38、即可。(7)重新编译文件系统,然后下载到ARM板。完成上述操作后,在ARM板上运行BOA程序,正常情况下就可以在PC上通过IE浏览器访问开发板上的Web Server。第三章 系统的整体设计和实现3.1 整体设计本设计的总体思想是通过wifi网络来控制micro2440.其原理如图3.1。正如图中所讲,我们利用PC机发送信号通过网络传到wifi模块,wifi模块再发送信号到micro2440,之后micro2440控制LED亮灭以及蜂鸣器响停。控制之后也会反馈信号到micro2440,反馈信号原路返回到pc机上告知用户。系统整体设计框图如下所示:图3.1 系统整体设计图3.2 CGI控制模块设

39、计CGI是一个标准的Web服务器的交互接口的外部扩展应用程序,它本身就是一个服务器端程序。当用户的浏览器中,在将请求发送到服务器时,通常会请求一个网页文件,但对于CGI,请求执行的CGI程序,它动态生成网页代码。在这种方式中,用户可以在浏览器上看到实际上是动态生成的网页CGI程序。 CGI程序一般完成Web网页中的数据处理,查询等,可以使用任何编程语言(如Fortran,Pascal中,C等)来写,也可以在服务器系统上使用了一个支持表单(form)脚本语言来写。但对于BOA的Web服务器,不支持任何脚本,CGI程序只支持C代码。用C语言编写CGI程序的执行速度,安全性和效率都很高。CGI数据是

40、利用标准输入/输出STDIN/STD-OUT的方式传播的。当用户提交的HtmlForm,Web浏览器,首先,在表格的数据进行编码,名称/值对的形式,并将其发送到Web服务器,然后由Web服务器的CGI程序通过。它的格式为“NAME1=VALUE1&NAME2=VALUE2”。如果参数值是空白的,那么,取而代之的是一个“+”特殊字符“XX”,而不是为特殊字符,XX十六进制ASCII码。这些特殊字符包括“”,“=”,以及ASCII值在中国128个字符。这种包装后的信息,如果该方法设置为POST,则程序从CON获取数据 - TENT_LENGTH环境字长的数量,然后从标准输入读取字符串,对应的数据的

41、长度可以提交。如果对GET方法设置,数据将被发送到QUERY_STRING环境变量中,通过调用函数的getenv(“QUERY_STRING”)可以被读取。通过传送给Web服务器的标准输出(stdout)输出信息的CGI程序。传送给Web服务器的信息可以具有各种格式,通常是一个纯文本或HTML的形式,这样他们就可以直观地得到在页面上所要求的结果。 CGI程序产生的输出由两部分组成:报头信息和实际信息。由两部分之间有一个空行分隔。主要类型的头信息有3个: Content-type、Location和Status。如果CGI程序要返回HTML,则语句printf(“Contenttype: tex

42、t/htmlnn”)通知服务器后面输出的是HTML代码;如果要返回纯文本,则语句printf(“Contenttype: text/htmlnn”)通知服务器,随后输出的是纯ASCII文本形式的信息。所以,Content-type用以向服务器表明返回数据的类型,希望另一端的客户能据此作处理。如果CGI程序出了问题, Status标题就用于了解一些信息。各种状态代码代表不同含义。如果CGI程序不希望产生一个新的HTML返回给用户,并指向到其他的位置,可以使用位置的标题,它会在浏览器引导到一个新的位置,只要位置。某个地方,如果你想在原来的页面出现无论是作为一个结果,也可以使用位置,只要输入链接网址

43、后面添加必要的数据,数据和问号(?)来隔离处理。如果有多个数据时,可以使用NAME1= VAL - UE 1NAME 2=值“的形式。当然,做一个网页的脚本(如JavaScript)来分析数据,以便把他们在正确的地方网页。图3.2 程序图这里采用POST的方法传输表单数据,然后在主函数中读取表单值,根据表单的值对LED和蜂鸣器进行控制。具体过程如下所示:len = getenv(CONTENT_LENGTH);if(len != NULL) unsigned int content_len = 0;char *data;content_len = atoi(len);data = malloc

44、(content_len + 1);read(0, data, content_len);sscanf(data,led%d,&led_num);sscanf(data,view%d,&flag);free(data);else led_num=0;printf(flag=%dn,flag);3.3 LED控制设计在嵌入式Linux中,对LED的控制需要驱动程序,LED驱动程序中,用户直接接触到的是ioctl控制。应用程序将来调用的ioctl函数*file为应用层返回的文件句柄,cmd为操作命令,arg为传入的参数。static int sbc2440_leds_ioctl( struct i

45、node *inode, struct file *file, unsigned int cmd, unsigned long arg) switch(cmd) case 0: case 1: if (arg 4) return -EINVAL; s3c2410_gpio_setpin(led_tablearg, !cmd); return 0; default: return -EINVAL; 本设计在config.ini文件中,存储了LED的状态,当接收到CGI传输的对LED状态的改变时,修改config.ini中存储的LED状态,void config(int *led_config,i

46、nt led_num)FILE *fp;if(fp=fopen(config.ini,r+)=NULL)printf(fopen Error!Return/a);exit(1);fscanf(fp,led1=%d,led2=%d,led3=%d,led4=%d,led5=%d,led_config,led_config+1,led_config+2,led_config+3,led_config+4);if(led_num 0)if(led_configled_num-1=1)led_configled_num-1 = 0;else led_configled_num-1 = 1;fseek(

47、fp,7*(led_num-1)+5,SEEK_SET);fprintf(fp,%d,led_configled_num-1);fclose(fp);然后根据对LED的实际状态进行修改。void led_fun(int *led_config)unsigned int led_num = 0;int led_fd = open(/dev/leds0, O_RDWR);/ open LED Deviceif (led_fd 0)led_fd = open(/dev/leds,0);for (led_num = 0; led_num 4; led_num+)ioctl(led_fd, led_co

48、nfigled_num, led_num);close(led_fd);3.4 蜂鸣器控制设计Linux支持多种IPC机制,其中就有信号与管道。通过网页来控制蜂鸣器就是通过管道机制来实现的,其中蜂鸣器是共享资源。mypwm是后台程序, 它启动的时候就创建了一个有名管道/tmp/pwm-control(这个名字是可以自由改动),并一直检测输入该管道的数据,根据不同的参数(蜂鸣器开关状态key和频率freq)来改变蜂鸣器的状态。main.cgi是一个网关程序,它接收从网页发送过来的字符形式指令并对这些指令进行赋值转换为实际数字,然后调用echo命令输送到管道/tmp/pwm-control以此实现

49、对蜂鸣器的控制。1、打开蜂鸣器void open_buzzer(void)fd = open(/dev/pwm, 0);if (fd = 0) ioctl(fd, PWM_IOCTL_STOP);close(fd);fd = -1;3、设置蜂鸣器频率void set_buzzer_freq(int freq)/ this IOCTL command is the key to set frequencyint ret = ioctl(fd, PWM_IOCTL_SET_FREQ, freq);if(ret 0) perror(set the frequency of the buzzer);e

50、xit(1);3.5 用户界面设计用户界面设计尽量保证界面布局简洁,逻辑性好,用户容易下手。对重要的操作返回结果。界面尽量整体美观。图3.3 本次设计界面图3.6系统调试1、编译文件编译main.cgi: #arm-linux-gcc -o main.cgi main.c led.c 编译pwmk控制程序:#arm-linuxg-cc o mypwm mypwm.c2、将文件复制到开发板(1)在开发板中建立以下目录:/home/www/cig-bin和/home/www/image(2)修改BOA服务器的配置文件boa.conf网页文件路径DocumentRoot /home/www CGI脚

51、本路径ScriptAlias /cgi-bin/ /home/www/cgi-bin/ (3)将main.cgi复制到目录/home/www/cgi-bin(4)将mypwm文件复制到目录/home/www3、将WIFI模块连接到开发板上 将WIFI模块连接到开发板上,并与无线路由器相连,获取IP与PC机组成局域网。 图3.4 WIFI模块与开发板相连4、后台运行mypwm控制蜂鸣器的程序mypwm需要在后台运行并创建有名管道pwm-control#nohup ./mypwm &5、登录系统在PC机上运行Web浏览器(如IE,Google Chrome等),在地址栏输入开发板的IP地址(本设计

52、所使用开发板的IP地址为30)。进入控制页面,显示当前时间。图3.5 显示时间蜂鸣器控制,单击open打开蜂鸣器,close关闭蜂鸣器。图3.6 蜂鸣器控制LED控制,四个按钮依次对应开发板上的四个LED,点击按钮控制LED的亮灭图3.7 LED控制第四章 总结与期望4.1 课题工作的总结经过一段时间的工作和学习。终于完成了基于micro2440的wifi网络的设计,项目所要求的功能全部完成。通过这次设计得到很多的知识,不单单是课题中涉及到的那些软硬件知识还有自学的能力以及接触新鲜事物的经验。接手题目以后从互联网上对micro2440进行了详细的学习,并通过实物对其进一步

53、的了解。通过了解我认识到micro2440是一门当今应用非常流行的技术,整个产业每年都会有巨大的产值并且在不断的更新。在阅读了大量的资料后确定了题目的设计方案。整个设计中应用了Boa Web服务器,CGI程序,linux语言等多种课本之外的知识,在学习这些知识中所遇到的种种困难和教训都是我在此次设计中得到的宝贵经验。这些经验是:(1) 设计之前应该进行大量的资料收集和分析,确定一个清晰的设计思路。(2) 在编写软件时,不仅要实现功能,还要尽可能的优化易懂。(3) 很多时候靠自己很难研究明白,询问他人也是一个很好的解决办法。(4) 因为第一次接触这些知识,导致在编程过程中遇到了重重困难,上手很慢

54、。(5) 信号问题,所以导致网盘经常失灵。随着课题的进展,对micro2440的了解越来越深入。认为micro2440的功能今后会进一步发展。Micro2440今后也会得到更加广泛的运用。 设计完成了,但是所谓活到老学到老,我坚信通过这次设计学习的知识获得的经验以及得到的心得都将成为我以后成功路上的基石。4.2 功能拓展在当今这个网络发展飞快的今天,wifi网络的应用会越来越广泛。随着现在社会互联网的发达,通过wifi网络去控制家电等各种电子产品成为一种趋势。现在很多工作也围绕着wifi展开。在本设计中,以micro2440为模板,通过wifi网络来控制其LED灯亮以及蜂鸣器响。其中运用Boa Web服务器,CGI程序以及linux语言等多种新兴软件。虽然在本设计中仅仅利用控制系统发出指令,通过wifi网络产生驱动信号,从而控制LED灯以及蜂鸣器。但是在未来的生活中,w

温馨提示

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

评论

0/150

提交评论