




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南 阳 理 工 学 院 本科生毕业设计(论文)学 院:电子与电气工程学院专 业: 自动化 学 生: 张 真 指导教师: 曹 婷 完成日期 2014 年 5 月南阳理工学院本科生毕业设计(论文)物联网智能家居终端的设计与实现Design and Implementation of the Smart Home Terminal Based on the Internet of Things总 计: 31 页表 格: 1 个插 图: 24 幅南 阳 理 工 学 院 本 科 毕 业 设 计(论文)物联网智能家居终端的设计与实现Design and Implementation of the Smart Home Terminal Based on the Internet of Things学 院: 电子与电气工程学院 专 业: 自动化 学 生 姓 名: 张 真 学 号: 105090640038 指 导 教 师(职称): 曹 婷(讲师) 评 阅 教 师: 完 成 日 期: 南阳理工学院Nanyang Institute of Technology物联网智能家居终端的设计与实现I物联网智能家居终端的设计与实现自动化专业 张真摘要 智能家居又称为数字家庭, 一般是指以计算机接口技术和网络技术为基础,将各种家用数字化设备有机结合为一体的智能化的网络系统。本课题以Web 技术为核心, 在基于S3C2440 微处理器和嵌入式Linux 操作系统的软硬件平台上构建了Web服务器和视频服务器,Web 服务器采用Boa,视频服务器采用Mjpeg-Streamer,结合CGI技术处理HTML表单完成用户认证,视频监控,设备开关控制等家具监控功能。关键词 智能家居;Linux;网络服务器;S3C2440;通用网关接口Design and Implementation of the Smart Home Terminal Based on the Internet of ThingsAutomation Specialty ZHANG ZhenAbstract: Also known as digital home, smart home generally refers to computer interface technology and network technology as the foundation,the combination of various kinds of household digital equipment for the integration of intelligent network system .These household devices includes digital telephone, computer, digital audio and video equipment, digital home appliances and security monitoring equipment,intelligent household terminal for home users to provide simple, safe, reliable,intelligent integrated services.This topic with Web technology as the core, based on S3C2440 microprocessor and embedded Linux operating system software and hardware platform to build a Web server and the video server, Web server USES the Boa, adopts Mjpeg video server - the streamer, HTML form with CGI technology processing,complete the user authentication, video monitoring, switch control equipment, household monitoring function.Key words: Smart Home; Linux;Web Server;S3C2440;CGI物联网智能家居终端的设计与实现目 录1 引言11.1 智能家居发展现状11.2 智能家居系统概述11.3 研究目的及意义22 系统主要设计任务32.1 Linux系统移植42.1.1 Bootloader编译与移植42.1.2 修改U-Boot文件62.2 Mjpeg-streamer视频服务器移植72.3 Boa服务器移植72.2 CGI程序设计与实现73 硬件开发平台83.1 基于ARM920t的S3C2440处理器83.2 TQ2440开发板硬件资源94 智能家居终端软件设计104.1 Linux系统移植配置与调试104.2 硬件驱动程序的设计与加载134.2.1 LED驱动的设计144.2.2 LCD驱动程序设计144.2.3 USB摄像头驱动程序的设计164.3 Boa服务器移植方法与配置184.4 Mjpeg-streamer的编译与配置194.5 QT应用程序的设计205 整机系统调试及结果分析225.1 系统控制程序流程图225.2 视频监控程序与调试23结束语25参考文献26附录27致谢31II1 引言1.1 智能家居发展现状智能家居又称智能住宅,是以住宅为平台,利用先进的计算机、嵌入式系统和网络通讯技术,将家中的各种设备,包括照明系统、环境控制系统、网络家电等通过家庭网络连接到一起,构建高效的住宅设施与家庭日程事务的管理系统。与普通的家居相比,智能家居既具有传统的居住功能,又提升了家居安全性、便利性、舒适性、艺术性,因此成为当前人们家装所关注的热点。早在1995年比尔盖茨在未来之路中提到了物联网的概念,然而到了1998年的时候美国的麻省理工学院(MIT)的Kevin Ashton,把非接触式无线识别技术(RFID)与传感器技术应用于日常物品中才形成一个真正所谓的“物联网”。当时的物联网的概念就是利用产品电子代码EPC,还有我们的射频识别技术,通过网络,当时的网络还仅限于互联网来实现物品的互联互通。在任何时候任何地点对任何物品识别和管理,这就是原来的物联网。在1999年的时候EPC Global的Auto-ID中心提出:物联网就是成千上万的物品采用无线方式接入了Internet的网络。这是物联网概念真正的提出。在2008年IBM提出:互联网+物联网=智慧地球,就是把传感器设备安装到电网、铁路、桥梁、隧道、供水系统、大坝、油气管道等各种物体中,并且普遍链接成网路,及“物联网”。至此最新的物联网概念形成了。网络技术、传感技术、数据库技术、云计算、移动计算等新技术使得物联网发生了很大的变换,内含增多增大。所谓的物不仅仅是物理实体,网络不仅仅是各类信息的网络,还包括互联网、传感网、移动网,技术也把条码、射频、传感器包含了进来。广义的物联网概念就是利用自动识别技术,这里包括条码、射频、全球定位等按照标准的协议实现人与物、物与物在任何时候任何地点的链接,显著的特点就是智能化、进行信息交换和通信、以实现智能识别、定位、跟踪、监控、管理,构建成为一个庞大的网络体系。1.2 智能家居系统概述智能住宅强调的是人的主观能动性,要求重视人与居住环境的协调,能够随心所欲地控制室内居住环境。智能住宅的住户可以在任何地方通过手机遥控家电,监控住宅情况,如指示洗衣机工作;查看冰箱中食品储存情况;监视家中是否有人闯入等。因此,智能家居在生产设计方面,务必以实用为核心,力求实用、易用、人性化。随着社会信息化的加快,人们的工作、生活和通讯、信息的关系日益紧密。信息化社会在改变人们生活方式与工作习惯的同时,也对传统的住宅提出了挑战,社会、技术以及经济的进步更使人们的观念随之巨变。人们对家居的要求早已不只是物理空间,更为关注的是一个安全、方便、舒适的居家环境。家居智能化技术起源于美国,它是以家为平台进行设计的。智能家居控制系统是以HFC、以太网、现场总线、公共电话网、无线网的传输网络为物理平台,计算机网络技术为技术平台,现场总线为应用操作平台,构成一个完整的集家庭通信、家庭设备自动控制、家庭安全防范等功能的控制系统。智能家居控制系统的总体目标是通过采用计算机技术、网络技术、控制技术和集成技术建立一个由家庭到小区乃至整个城市的综合信息服务和管理系统,以此来提高住宅高新技术的含量和居民居住环境水平。大型的智能家居控制系统通常由系统服务器、家庭控制器(各种模块)、各种路由器、电缆调制解调器头端设备CMTS、交换机、通讯器、控制器、无线收发器、各种探测器、各种传感器、各种执行机构、打印机等主要部分组成。1.3 研究的目的及意义智能家居控制系统可以定义为一个过程或者一个系统。利用先进的计算机技术、网络通讯技术、综合布线技术、将与家居生活有关的各种子系统,有机地结合在一起,通过统筹管理,让家居生活更加舒适、安全、有效。与普通家居相比,智能家居不仅具有传统的居住功能,提供舒适安全、高品位且宜人的家庭生活空间。还将原来的被动静止结构转变为具有能动智慧的工具,提供全方位的信息交换功能,帮助家庭与外部保持信息交换畅通,优化人们的生活方式,帮助人们有效安排时间,增强家居生活的安全性,甚至为各种能源费用节约资金。系统的网络化功能可以提供遥控:家电(电视,空调,热水器等)控制、照明控制、室内外遥控、窗帘自控、防盗报警、电话远程控制、可编程定时控制及计算机控制等多种功能和手段。使生活更加舒适、便利和安全。因智能家居控制系统简单、功能灵活,扩展容易而被人们广泛接受和应用。家居生活的智能化是当今计算机网络与通讯技术最人性化的应用,给人们的家居生活带来了全新的感受。今天,借助电话控制或互联网,您几乎可以在任何地方、任何时候监控您的家居状况,为您的家居生活带来前所未有的方便。随着社会全面的信息化、智能化和自动化,家庭智能化必将成为未来家居装饰潮流发展的最新方向!2 系统主要设计任务系统主要设计包含以下几个部分,基于S3C2440的Linux系统移植,Boa服务器移植,Mjpeg视频服务器移植,系统硬件设备驱动程序编写,模块设计如图1所示。图1 智能家居系统控制框图2.1 Linux内核移植所谓嵌入式Linux,是指Linux在嵌入式系统中的应用。在所有的操作系统中,Linux操作系统是一个发展最快,应用最广泛的操作系统,由于Linux系统的优良特性,使得其成为嵌入式开发中的首选。随着嵌入式Linux的不断成熟,以及其对更小尺寸和更多类型的处理器支持,使得嵌入式Linux操作系统迈入了嵌入式系统的主流,因此本系统采用Linux作为操作系统。关于Linux的移植分为四部分,Bootloade移植,Linux内核的移植,内核驱动程序的移植以及根文件系统的挂载。内核方面我们一般以2.6.xx及其以上的版本移植,因为其通用性良好。根文件系统一般选用yaffs文件系统,而内核驱动方面,Linux内核一般有足够的硬件驱动供我们加载,所以其实我们主要工作就放到了移植方面。下面Bootloader的移植进行演示。我们一般选用较好的U-Boot作为嵌入式系统中通用的Boot Loader,下面是几种不同的Bootloader介绍。Bootloader 是嵌入式系统的引导加载程序,它是系统上电后运行的第一段程序,其作用类似于 PC 机上的 BIOS。在完成对系统的初始化任务之后,它会将非易失性存储器(通常是Flash或DOC等)中的Linux 内核拷贝到 RAM 中去,然后跳转到内核的第一条指令处继续执行,从而启动 Linux 内核。2.1.1 Bootloade编译与移植表1 开放源码的Linux引导程序Boot LoaderMonitor描述X86ARMPowerLILO否Linux磁盘引导程序是否否GRUB否GNU的LILO替代程序是否否Loadin否从DOS引导Linux是否否ROLO否从ROM引导Linux而不需要BIOS是否否Etherboot否通过以太网卡启动Linux的固件是否否LinuxBIOS否完全替代BUIS的Linux引导程序是否否BLOB否LART等硬件平台的引导程序否是否U-boot是通用引导程序是是是RedBoot是基于eCos的引导程序是是是(1) 首先,把下载下来的u-boot-1.1.6.tar.bz2包,复制到我们的工作目录,这里我们把它复制到/home/work/目录下边,然后解压,如图2所示。图2 Bootloader编译与移植进入U-Boot目录,然后修改顶层目录的Makefile,如图3所示。图3 Bootloader编译与移植找到smdk2410_config项,仿照其模式为TQ2440建立编译项,如图4所示。图4 Bootloader编译与移植此时要注意,“”符号前边一定要加“TAB”而并非空格,否则会在测试编译时报错。其中各项的意思如下:arm: CPU的架构(ARCH)。 arm920t: CPU的类型(CPU),其对应于cpu/arm920t子目录。 tq2440: 开发板的型号(BOARD),对应于board/smdk2440/tq2440目录。 TQ2440: 开发者/或经销商(vender)。 s3c24x0: 片上系统(SOC)。然后找到ifndef CROSS_COMPILE,在这句话之前加入我们的交叉编译器,这里分别安装了cross-2.95.3和cross-3.4.1交叉编译工具,在这里使用3.4.1版本有时候会报错,所以推荐在这里使用cross-2.95.3,该工具的安装目录为/usr/local/arm/2.95.3,如图5所示。图5 Bootloader编译与移植(2) 在/board子目录中建立自己的开发板tq2440目录,见图6。图6 Bootloader编译与移植由于我在上一步板子的开发者/或经销商(vender)中填了friendlyarm,所以开发板tq2440目录一定要建在/board子目录中的tq2440目录下 ,否则编译会出错,同时还要记得修改自己的开发板tq2440目录下的Makefile文件,同样用vi编辑器打开Makefile,并把COBJS变量值修改如下OBJS := tq2440.o flash.o(3) 在include/configs/中建立配置头文件,即复制s3c2440.h到tq2440中,如图7所示。图7 Bootloader编译与移植(4) make测试编译如图8所示。图8 Bootloader编译与移植可以看到,系统并没有报错,说明编译配置已经没问题,接下来我们所要做的就是要根据开发板参数,修改相应的文件。2.1.2 修改UBoot文件(1) 修改/cpu/arm920t/start.S。start.S文件是整个Boot loader程序的入口点,在这里我们需要对寄存器地址定义、中断禁止部分、时钟设置(2440的主频为405MHz)等部分,按照s3c2440手册或者vivi的源代码,将从Flash启动改成从NAND Flash启动。(2) 在board/friendlyarm/qq2440加入NAND Flash读函数文件,拷贝vivi中的nand_read.c文件到此文件夹即可。(3) 修改board/friendlyarm/qq2440/Makefile文件。OBJS := qq2440.o nand_read.o flash.o(4) 修改include/configs/qq2440.h文件。添加NAND FLASH、JFFS2、USB启动支持。(5) 修改board/friendlyarm/qq2440/lowlevel_init.S文件,依照开发板的内存区的配置情况, 修改board/tekkaman/tekkaman2440/lowlevel_init.S文件,我们利用友善之臂提供的vivi源码里的信息做一些简单的修改。(6) 修改/board/friendlyarm/qq2440/qq2440.c。修改其对GPIO和PLL的配置(需参阅开发板的硬件说明和芯片手册):(7) 在个文件中添加“CONFIG_S3C2440”,使得原来s3c2410的代码可以编译进来。此外还需要对以下文件进行一些修改include/linux/mtd/nand_ids.hinclude/linux/mtd/nand.h /lib_arm/board.ccommon/env_nand.c/board/EmbedSky/qq2440/tq2440.c在U-Boot根目录下执行如下命令# make clean;# make tq2400_config;# make编译一段时间后,便会生成U-Boot映像的ELF格式。2.2 Mjpeg-streamer视频服务器移植Mjpg-streamer是用于从摄像头采集图像的视频服务器,它把图像以流的形式通过基于IP的网络传输到浏览器如IE。并可以利用某些摄像头的硬件压缩功能来降低服务器CPU的开销。它为嵌入式设备和一些常规服务器提供了一个轻量且更少CPU消耗的方案,因为无需为视频帧压缩浪费大量的计算效率(这件事交给硬件了)。2.3 Boa服务器移植Boa是一个非常小巧的Web服务器,可执行代码只有约60KB。它是一个单任务Web服务器,只能依次完成用户的请求,但Boa支持CGI,能够为CGI程序fork出一个进程来执行。Boa的设计目标是速度和安全,在其站点公布的性能测试中,Boa的性能 要好于Apache服务器。与其他传统的Web 服务器不同的是当有连接请求到来时, 它并不为每个连接单独创建进程, 也不通过复制自身进程来处理多链接, 而是通过建立HTTP 请求列表来处理多路HTTP 连接请求, 同时它只为CGI 程序创建新的进程, 这样就在最大程度上节省了系统资源, 这对嵌入式系统来说至关重要. 同时它还具有自动生成目录、自动解压文件等功能, 因此, Boa 具有很高的HTTP 请求处理速度和效率, 在嵌入式系统中具有很高的应用价值。Boa服务器移植主要包括以下几点:(1) 修改配置文件。(2) 生成Makefile文件。(3) 执行make命令编译。2.4 CGI程序设计与实现CGI:通用网关接口(Common Gateway Interface)是一个Web服务器主机提供信息服务的标准接口。通过CGI接口,Web服务器就能够获取客户端提交的信息,转交给服务器端的CGI程序进行处理,最后返回结果给客户端。组成CGI通信系统的是两部分:一部分是html页面,就是在用户端浏览器上显示的页面。另一部分则是运行在服务器上的CGI程序。我们的CGI程序主要完成与网页接口的连接,即主登陆窗口、LED显示窗口、参数设置窗口、实时显示参数窗口等网页分别编写文件,实现程序见附录。图9 CGI登录流程图3 硬件开发平台简介3.1 基于ARM920t的S3C2440处理器S3C2440A是韩国三星公司推出的16/32位RISC微控制器,其CPU采用的是ARM920T内核。(1) 特点: 具有PLL时钟发生器,主频最高可达533M。 内核1.2V供电最高400M,1.3V供电最高533M。 存储器支持1.8V、2.5V、3.0V、3.3V。 I/O均支持3.3V供电。 S3C2440为单机器周期执行指令集。 具有电源管理功能,可以使系统以普通方式、空闲方式和掉电模式工作。(2) 内核结构:采用ARM920T内核,具有16KB指令Cache、16KB数据Cache和存储器管理单元MMU,指令高速存储缓冲器(I-Cache),数据高速存储缓冲器(D-cache)提高指令执行效率及数据存储效率,减少主存带宽和响应性带来的影响,加强的ARM体系结构MMU,用于支持winCE、linux等操作系统,内部高级微控制总线(AMBA)体系结构(AMB2.0,AHB/APB)。(3) 存储器控制器特性: S3C2440采用总线结构管理片上外设及内存。 S3C2440的存储器管理器提供访问外部存储器的所有控制信号。27位地址号32位数据信号、8个片选信号、以及读/写控制信号等。 总共有8个存储器Bank(Bank0Bank7),其中,Bank0-Bank5为固定128MB,Bank6和Bank7的容量可编程改变,可以是2、4、8、16、32、64、128MB,最大共1GB。Bank0可以作为引导ROM,其数据线宽只能是16位和32位,其它存储器的数据线宽可以是8位、16位和32位。 8个存储器Bank: Bank0-Bank5:SRAM、ROM。 Bank6Bank7:SRAM、ROM SDRAM。 S3C2440支持两种启动方式: NOR FLASH启动,即代码直接写入NOR FLASH,运行时直接在NOR FLASH上运行。 NAND FLASH启动方式,即代码烧到NAND FLASH中,借助片内4K的sram,将代由NAND FLASH烤到SDRAM中,在SDRAM中运行。3.2 TQ2440开发板硬件资源介绍(1) CPU处理器 Samsung S3C2440A,主频400MHZ,最高533MHZ(2) SDRAM内存 在板64M SDRAM(3) 32bit数据总线(4) SDRAM时钟频率高达100MHZ(5) FLASH存储 在板256M Nand Flash,掉电非易失 在板2M Nor Flash,掉电非易失,已经安装BIOS(6) LCD显示 板上集成4线电阻式触摸屏接口,可以直接连接四线电阻触摸屏 支持黑白、4级灰度、16级灰度、256色、4096色STN液晶屏, 板上引出一个12V电源接口,可以为大尺寸TFT液晶的12V CCFL背光模块(7) 接口和资源 1个10M以太网RJ45接口(采用CS8900网络芯片) 3个串行口 1个USB Host 1个USB Slave B型接口 1个SD卡存储接口 1路立体声音频输出接口,一路麦克风接口; 1个2.0mm间距20针标准JTAG接口 1个PWM控制蜂鸣器 1个可调电阻,用于AD模数转换测试 1个I2C总线AT24C08芯片,用于I2C总线测试 1个20pin摄像头接口 板载实时时钟电池 电源接口(12V),带电源开关和指示灯(8) 系统时钟源 12M无源晶振(9) 实时时钟 内部实时时钟(带后备锂电池)(10) 扩展接口 1个34 pin 2.0mmGPIO接口 1个44 pin 2.0mm 系统总线接口(11) 指示灯 4个LED指示灯,可模拟做演示设备(12) 操作系统支持 Linux2.6.x WindowsCE.NET 4.24 智能家居终端软件设计4.1 Linux系统移植配置与调试(1) Linux开发板硬件平台配置,应该配置支持TQ2440。其中包括板载资源的配置,主要目的是芯片厂商的启动文件加载,如图10所示。图10 Linux开发平台配置(2) Linux yaffs文件系统配置,这是开发板的根文件系统,我们的应用程序都放在了NANDFlash中,要想对其读取,必须加载根文件系统其中包括Linux的内核镜像也被烧录到NANDFlash中。具体配置如图11所示。图11 Linux文件系统挂载配置(4) S3C2440开发板使用的Nandflash容量为256M,大页(2K)Nand,内核中NandFlash驱动的位置为:drivers/mtd/nand/目录,该目录下的s3c2410_nand.c文件为s3c2440的NAND控制器的驱动,我们无需修改驱动,只需要让内核支持nand驱动,并创建nandflash分区表。开发板NANDFalsh配置,系统的应用程序及内核镜像均被烧录到NANDFlash中,开发板为支持256 NANDFlash,因此在添加了文件系统之后必须添加系统对NANDFlash的硬件驱动支持,这样系统才能正常的从NANDFlash向内存中加载应用程序,其编译配置如图12所示。图12 Linux支持NANDFlash存储配置(5) 在通常情况下,生产厂商把LCD驱动器会以COF/COG的形式与LCD玻璃基板制作在一起,而LCD控制器则是由外部的电路来实现,现在很多的MCU内部都集成了LCD控制器,如S3C2410/2440等。通过LCD控制器就可以产生LCD驱动器所需要的控制信号来控制STN/TFT屏了。 S3C2440内部有LCD显示控制器在驱动设备文件夹已经有关于驱动控制器的驱动文件,这些驱动文件是可以直接调用的,注意,系统并没有建立S3C2440的LCD配置文件,但是由于S3C2410与2440驱动兼容,因此只需添加配置S3C2410的驱动即可,添加S3C2410存储配置帧缓冲支持如图13所示。图13 LinuxLCD显示器存配置(6) EABI即嵌入式应用二进制接口,他描述了可连接目标代码,库目标代码,可执行文件镜像的编译。连接执行调试以及目标代码的生成过程。这里我们选着ARM EABI,具体如图14所示。图14 配置Linux支持EABI4.2 硬件驱动程序设计与加载在Linux系统中所有的设备都被看成文件,因此我们对驱动的编写实际上是对文件的操作。在程序运行过程中,系统涉及到了以下几个模块:GPIO、USB摄像头,显示设备TFTLCD,输入设备触摸屏,在Linux设备驱动属于内核的一部分,Linux内核的一个模块可以以两种方式被编译和加载:(1) 直接编译进Linux内核,随同Linux启动时加载。(2) 编译成一个可加载和删除的模块,使用insmod加载(modprobe和insmod命令类似,但依赖于相关的配置文件),rmmod删除。这种方式控制了内核的大小,而模块一旦被插入内核,它就和内核其他部分一样。4.2.1 LED驱动的设计 建立LED设备文件int led_no;int fd;if (argc != 3 | sscanf(argv1, %d, &led_no) != 1 | sscanf(argv2,%d, &on) != 1 | on 1 | led_no 4) fprintf(stderr, Usage: leds led_no 0|1n);exit(1);fd = open(/dev/GPIO-Control, 0);if (fd par; void _iomem *regs = fbi-io; int type = fbi-regs.lcdcon1 & S3C2410_LCDCON1_TFT; struct fb_var_screeninfo *var = &info-var; struct s3c2410fb_mach_info *mach_info = fbi-dev-platform_data; struct s3c2410fb_display *default_display = mach_info-displays + mach_info-default_display; int clkdiv = s3c2410fb_calc_pixclk(fbi, var-pixclock) / 2; dprintk(%s: var-xres = %dn, _func_, var-xres); dprintk(%s: var-yres = %dn, _func_, var-yres); dprintk(%s: var-bpp = %dn, _func_, var-bits_per_pixel); if (type = S3C2410_LCDCON1_TFT) s3c2410fb_calculate_tft_lcd_regs(info, &fbi-regs); -clkdiv; if (clkdiv regs); if (clkdiv support for frame buffer devices -* Enable frameware EDID* Enable Vidoe Mode Handling Helpers S3C24X0 LCD framebuffer supportConsole display driver support - Framebuffer Console Support* Bootup Logo - Standard 224-color Linux logo启动时输出:Console: switching to colour frame buffer device 40x30fb0: s3c2410fb frame buffer device即证明移植成功。4.2.1 USB摄像头驱动的设计LIBUSB是一种高级别的API,它封装了低级别的内核与USB模块的交互,并提供了一系列适合在用户空间进行USB驱动开发的函数。libusb基于USB文件系统提供的USB接口、端点等信息,与USB设备进行通信。显然,只要开发平台上的内核支持USB文件系统,我们就可以利用libusb进行USB驱动开发。(1) 有了Libusb提供的这些API应用程序,利用libusb的驱动框架,开发USB驱动程序的时候就会很方便。一般的驱动应该都包含如下接口:Device_Find(); /* 寻找设备接口 */Device_Open(); /* 打开设备接口 */Device_Write(); /* 写设备接口 */Device_Read(); /* 读设备接口 */Device_Close(); /* 关闭设备接口 */(2)初始化设备接口void usb_init(void);int usb_find_busses(void);int usb_find_devices(void);struct usb_bus *usb_get_busses(void);这些接口也可以称为核心函数,它们主要用来初始化并寻找相关设备。整个初始化的主要过程是先初始化相关数据,然后寻找系统上的usb总线,任何usb设备都通过usb总线和计算机总线通信,进而和其他设备通信,最后寻找总线上的usb设备。(3)操作设备接口usb_dev_handle *usb_open(struct *usb_device dev);int usb_close(usb_dev_handle *dev);usb_detach_kernel_driver_np(usb_dev_handle *dev, int interface);int usb_clear_halt (usb_dev_handle *dev, unsigned int ep);int usb_claim_interface(usb_dev_handle *dev, int interface);int usb_release_interface(usb_dev_handle *dev, int interface);初始化完成后是对设备的操作。利用Libusb提供的接口,对设备进行打开、关闭操作,设置当前设备使用的configuration,设置当前设备配置的interface descriptor,以及复位指定的endpoint和设备,注册、注销与操作系统通信的接口。控制传输接口、批传输接口。int usb_control_msg(usb_dev_handle *dev, int requesttype, int request, int value, int index, char *bytes, int size, int timeout);int usb_get_string_simple(usb_dev_handle *dev, int index, char *buf, size_t buflen);int usb_bulk_write(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout);int usb_bulk_read(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout);这些接口的主要功能是从默认的管道发送和接受数据,只是不同的传输方式对应不同的接口。4.3 Boa服务器实现与调试Boa服务器和普通Web 服务器一样, 能够完成接收客户端请求、分析请求、响应请求、向客户端返回请求结果等任务. 它的工作过程主要包括:(1) 完成Web 服务器的初始化工作, 如创建环境变量、创建TCP 套接字、绑定端口、开始侦听、进入循环结构, 以及等待接收客户浏览器的连接请求;(2) 当有客户端连接请求时,Web 服务器负责接收客户端请求, 并保存相关请求信息;(3) 在接收到客户端的连接请求之后,分析客户端请求, 解析出请求的方法、URL 目标、可选的查询信息及表单信息, 同时根据请求做出相应的处理;(4) Web 服务器完成相应处理后, 向客户端浏览器发送响应信息, 关闭与客户机的TCP 连接。Boa服务器根据请求方法的不同, 做出不同的响应. 如果请求方法为HEAD, 则直接向浏览器返回响应首部; 如果请求方法为GET, 则在返回响应首部的同时, 将客户端请求的URL 目标文件从服务器上读出, 并且发送给客户端浏览器; 如果请求方法为POST, 则将客户发送过来的表单信息传送给相应的CGI 程序, 作为CGI 的参数来执行CGI 程序, 并将执行结果发送给客户端浏览器。 Boa 的功能实现也是通过建立连接、绑定端口、进行侦听、请求处理等来实现的。其过程如图16所示。 boa源码移植boa下载到目标板中目标板验证boa移植成功Linux下web库源码修改运用标准库进行开发调试、验证、测试完成图16 Boa服务器移植流程图(5) Boa服务器配置脚本: # Boa v0.94 configuration file# File format has not changed from 0.93# File format has changed little from 0.92# version changes are noted in the commentsPort 80User nobodyGroup nogroupErrorLog /var/log/boa/error_logAccessLog /var/log/boa/access_logDocumentRoot /var/wwwUserDir public_htmlDirectoryIndex index.htmlDirectoryMaker /usr/lib/boa/boa_indexerKeepAliveMax 1000KeepAliveTimeout 10MimeTypes /etc/mime.typesDefaultType text/plainCGIPath /bin:/usr/bin:/usr/local/binAlias /doc /usr/docScriptAlias /cgi-bin/ /usr/lib/cgi-bin/4.4 Mjpeg-streamer编译与配置(1) 重新配置内核使内核支持所用的摄像头,用make menuconfig。(2) 重新编译内核 make zImage.bin。(3) Mjpg-stream 的移植。(4) 需要安装J2SE RuntimeEnviroment 5.0 Update 22插件才能播放视频流。(5) Mjpeg-streamer服务器配置脚本:export LD_LIBRARY_PATH=$(pwd)CFLAGS = -O2 -DLINUX -D_GNU_SOURCE -Wall -shared fPICsudo ./mjpg_streamer -i ./input_uvc.so -f 15 -r 960x720 -o ./output_http.so -w ./www4.5 QT应用程序的设计QT是一个跨平台的C+应用程序开发框架,有时又被称为C+部件工具箱。Qt被用在KDE桌面环境、Opera、GoogleEarth、Skype、AdobePhotoshopAlbum和VirtualBox的开发中。它是诺基亚(Nokia)的QtDevelopmentworks部门的产品。使用Qt,只需一次性开发应用程序和用户界面,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序。而Nokia公司又为QT开发研发了一系类工具,如QTdesigner,QT Debuger,QT仿真工具等。所以开发起来非常方便。Qt 包括多达 250 个以上的 C+ 类,丰富的 API,还提供基于模板的 collections,serialization, file, I/O device, directory management, date/time 类。甚至还包括正则表达式的处理 功能。支持 2D/3D 图形渲染,支持 OpenGL,大量的开发文档,XML 支持。下面只列出LED的QT设计方法。设计思路:控制LED灯亮和灭是通过S3C2440的GPIO的低电平来实现
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上海房管局房屋买卖合同模板
- 建设工程法规及相关知识课件讲解习题全面
- 物业客服管家培训方案
- 销售心态调整与情绪管理
- 未来视角:企业合同中的知识产权条款与策略
- 陕旅版五年级下册Unit 8 Have a good habit!教案及反思
- 小学语文人教部编版三年级上册铺满金色巴掌的水泥道教学设计
- 合同为基础的人力资源管理策略手册
- 技术转让合同2025
- 物业管理人员聘用合同范本
- 同步练习:4.1 光的直线传播
- Mission-Planner地面站操作手册
- 2025+DeepSeek自学手册:从理论(模型训练)到实践(模型应用)
- 小学数学课程与教学论教案
- 神经重症气管切开患者气道功能康复与管理专家共识
- 无菌技术的护理课件
- 糖尿病科普教育的社交媒体推广-洞察分析
- 自动喷水灭火系统的工作原理和应用
- 碳碳复合材料
- 汽车维修场所安全管理协议书
- 气候风险与企业绿色创新
评论
0/150
提交评论