基于ARM的网络视频监控系统的设计与实现_第1页
基于ARM的网络视频监控系统的设计与实现_第2页
基于ARM的网络视频监控系统的设计与实现_第3页
基于ARM的网络视频监控系统的设计与实现_第4页
基于ARM的网络视频监控系统的设计与实现_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

1、东北大学本科毕业设计(论文) 毕业设计(论文)任务书 毕业设计(论文)任务书毕业设计(论文)任务书毕业设计(论文)题目:毕业设计(论文)题目:基于基于 ARM 的网络视频监控系统的设计与实现的网络视频监控系统的设计与实现设计设计(论文论文)的基本内容:的基本内容: 网络视频监控是未来监控发展的趋势,它是把传统的监控系统通过一个通信协议连接到网络中,这个系统可以支持双向通信。用户可以使用手机或互联网来实时监控。有效便捷的网络视频监控系统能够给人们的生活带来安全和便利。因此,网络视频监控得到了越来越多的关注和发展。 毕业设计课题“网络视频监控系统”研究内容包括以下方面: (1)介绍“网络视频监控”

2、背景及国内外研究的现状;(2)分析各种监控设备原理结构;(3)网络监控的基本原理;(4)网络监控系统的硬件设计及实现;(5)对系统进行测试与分析;(6)撰写毕业论文。毕业设计(论文)专题部分:毕业设计(论文)专题部分:题目:题目:设计或论文专题的基本内容:设计或论文专题的基本内容:学生接受毕业设计(论文)题目日期学生接受毕业设计(论文)题目日期第第1 周周指导教师签字:指导教师签字:东北大学本科毕业设计(论文) 摘要I基于 ARM 的网络监控系统的设计与实现摘摘 要要本文根据家庭网络监控系统的要求,提出一种基于 ARM 的网络视频监控方案。方案要求视频的实时传输、实时监控。本系统以 Intel

3、 Xscale 芯片和嵌入式Linux 系统为平台,在平台中搭建网络视频服务器,并以它为中介,负责将USB 摄像头采集到得视频数据传输到网络服务器中,最后发送到申请监控的远程 PC 机中,远程 PC 只需在网页中便能实时的看到监控端的视频图像。论文首先阐述了嵌入式网络视频监控技术的发展、现状和前景,然后介绍了嵌入式硬件系统结构和嵌入式 Linux 操作系统的特点,阐述了嵌入式硬件整体结构,使大家大体的完整的对系统硬件有详细的了解,实际记录了嵌入式操作系统内核的编译和移植,介绍了 Bootloader 的基本原理和启动过程,实现了视频采集程序的编译和移植,研究了嵌入式一般驱动程序的使用。随后,本

4、文详细描述了视频采集程序的整体结构框图和具体功能代码块、网络通信编程技术、图像编解码、嵌入式视频服务器和搭建网站等内容的设计和具体实现,最后进行系统测试,描述系统功能,调整用户友好界面,提出未来进一步开发建议。本文的研究成果有很大的应用价值,是现代嵌入式发展的新方向,也是 IP通信的新应用,对嵌入式视频未来发展有一定参考价值。关键词:ARM;嵌入式;Linux;视频监控2009 年年3 月月6日日东北大学本科毕业设计(论文) 摘要II目 录毕业设计(论文)任务书毕业设计(论文)任务书.II摘摘 要要.IIIABSTRACT.IV第第 1 章章 引言引言.11.1 课题的背景和来源.11.2 课

5、题研究的实际意义.21.3 本文的内容及主要工作.3第第 2 章章 嵌入式嵌入式 ARM 系统硬件结构简介系统硬件结构简介.52.1 视频监控系统结构简介.52.2 ARM 处理器简介.52.3 XSCALE体系结构.62.4 主要硬件电路说明.9第第 3 章章 嵌入式嵌入式 ARM 系统软件结构系统软件结构.113.1 LINUX操作系统简介.113.2 交叉编译环境的建立.123.3 嵌入式 LINUX操作系统移植.133.3.1 BootLorder 移植.133.3.2 Linux 内核移植.143.3.3 嵌入式文件系统.15东北大学本科毕业设计(论文) 目 录III3.4 LINU

6、X下的程序调试.16第第 4 章章 USB 设备驱动程序设计设备驱动程序设计.174.1 设备驱动程序简介.174.2 LINUX下驱动程序的实现.204.3 USB 摄像头驱动程序设计.22第第 5 章章 视频采集功能视频采集功能的的设计设计.255.1 基于 V4L 的编程.265.1.1 摄像头相关数据结构.265.1.2 摄像头基本功能实现.275.1.3 视频数据采集.315.2 图像编解码.345.2.1 编解码介绍.345.2.2 系统压缩技术.355.3 SOCKET 简介 .35第第 6 章章 网络视频服务器和网站的搭建网络视频服务器和网站的搭建.376.1 视频服务器介绍.

7、376.2 构架网络视频服务器.376.2.1 网络视频服务器软件 BOA.376.2.2 配置网络视频服务器.386.2.3 网络视频服务器开启、运行以及维护.406.3 建立网站.41第第 7 章章 系统功能测试系统功能测试.437.1 测试环境及内容.437.2 测试结论.45第第 8 章章 结论结论.478.1 本文工作总结.478.2 进一步展望.47参考文献参考文献.49致谢致谢.51东北大学本科毕业设计(论文) 目 录IV第 1 章 引言1.1 课题的背景和来源设想一下这样的场景:您正在外地或是公司,有些不放心家里年幼的孩子,怎么办?打个电话?不,太麻烦。您可以用你的便携 PDA

8、 或者是智能手机访问一个网页,您就会像回家了一样马上看到您家里的所有情况,每个角落都不会放过。无论黑天白天、离家多远,你都能方便的看到家中的情况,无比安全。这不是什么高深的技术,只需在家中安装一台摄像头,实现视频监控的功能。二十一世纪的网络化、数字化让人们的生活每天都发生着翻天覆地的变化,获取信息的方便和快捷可以使人们在信息化的今天领先一步创造出巨大的利益,而获取信息的重要途径就是眼睛。据统计,人类采集信息的 80%来自视觉。图像和视频是对客观事物生动、形象的描述,是一种最直观的表现方式。而视频监控技术因为它方便快捷、生动形象、信息丰富等特点日益受到人们的青睐,并在各行各业得到广泛的应用。与此

9、同时,现代网络和数字技术的快速发展也为视频监控技术的发展奠定了坚实的基础。在摄像机、电视出现后,视频监控就因为其优异的特点随之出现了,并伴随着实际技术水平不断发展。发展之初,模拟技术正当流行,视频监控中的图像和视频主要是模拟信号,传输和处理的方式也以模拟为主。接着,数字技术出现,它以领先模拟技术的诸多特点引领着视频监控技术的快速发展。在这个时期,视频监控把采集到的图像、声音和视频转换成数字信号进行处理、传输,接受端再把数字信号通过模数转换技术转换成模拟信号供用户使用。近些年来,计算机、通信、电子技术像脱缰的马一样把以前所有的技术以前所未有的方式极具凝聚力的结合在一起,视频监控技术达到了它发展的

10、顶点。上世纪末,基于 PC 的数字化网络视频监控系统迅速崛起,部分取代了以视频矩阵图像分割东北大学本科毕业设计(论文) 第 1 章 引言- 1 -器、录像机为核心,辅以其他设备的模拟视频监控系统。数字化的视频监控技术在图像质量、传输距离、看干扰性、传输速度、方便快捷等方面远远的超过了模拟视频技术。也许,数字视频监控系统唯一的缺点就是它的复杂和昂贵。二十一世纪,嵌入式技术、多媒体处理技术进一步发展,为视频监控系统的发展提供了新的出路嵌入式视频监控系统。嵌入式系统是以应用为中心,软硬件可以剪裁,具有高稳定、低成本、功耗低、速度快、实时好的专用计算机系统,它由嵌入式微处理器,配以周边硬件设备,接口电

11、路组成。嵌入式系统内部使用嵌入式操作系统,安装专用的功能软件。嵌入式技术把硬件和软件集于一体,独立工作。嵌入式视频监控系统比其他视频监控系统在布局区域范围上要广泛;由于使用 IP 技术,嵌入式视频监控技术比其他视频监控系统更具紧密的结合度,能够充分利用现代网络技术的成果,并能构成复杂的视频监控网络;性能上,嵌入式视频监控系统继承了嵌入式技术的优点,非常适合自动化的环境。因此,嵌入式视频监控技术正在我国快速的发展,积极的研究会加强我们在这方面技术的学习,也会为视频监控技术的发展贡献力量。1.2 课题研究的实际意义网络视频监控系统是在高带宽网络、大规模集成电路、高速通信等高科技手段发展的基础上产生

12、的。虽然它利用了当今最前沿的技术,却解决了一直以来都没有完美解决的老问题安全问题。以往的监控系统体积过于庞大、技术落后、成本高昂,这直接影响了视频监控系统的普及程度。不能在所有需要安装视频监控系统的地方安装,导致了一些监控的盲点,有些还造成了严重的损失。嵌入式早期应用于军事及航天领域,以后逐步广泛的应用于工业控制、仪器仪表、汽车电子、通信和家用消费领域。随着互联网的发展,嵌入式处理器类型多样化,处理能力空前提升,新兴的嵌入式系统正朝着信息家电IA(Information Application)和 3C(Computer,Communication&Consumer)产品方向发展,应用

13、嵌入式技术,只需要一个手掌大的小盒子,就能实现所有监控的功能,这样的优势促使人们在视频监控系统上的需求持续增加。2006 年,AT&T 公司就在美国推出了面向家用的视频监控设备,用户可使用手机或者 PC 接收来自家中的警报或实时视频回馈。用户需要一次性支付 199美元,用以购买摄像头、无线门磁探测器以及相关软硬件,之后需每月支付9.95 美元作为服务费用,美国的宽带互联网用户和 CingularWireless 公司的无线上网手机用户都可以享用该服务。网络视频监控系统在美国一夜之间极受欢迎。东北大学本科毕业设计(论文) 第 1 章 引言- 2 - 与国外市场相同,国内个人用户也是视频监

14、控领域不可缺少的重要客户,一直以来,我国的视频监控业务主要集中在行业用户上,由于家用视频监控一直没有形成规模,产业链也没有完全形成,加上造价、设备复杂性方面的影响,家用视频监控市场一直没有显著的发展。 近年来,随着人们生活条件的改善,国内市场对适合民用的安全监控系统的需求变得十分强烈。为了应对市场需求,原先以行业应用为主的网络视频监控设备从外观、功能、应用和价格上不断贴近家庭市场的消费需求,大量以网络视频监控设备为代表的家用视频监控产品开始涌入民用市场,凭借强大的技术、时尚的外观设计和高性价比,潜移默化地改变着国内安防民用市场的发展现状。不仅如此,在电力系统、电信机房、工厂、城市交通、水利系统

15、、小区治安等领域,视频监控系统得到越来越广泛的应用。同时,现在 3G 技术迅猛发展,手机视频监控等新兴技术也日新月异。过去,我国的视频监控应用主要集中在政府部门和金融、公安、交通、电力等特殊部门及行业。其中,政府部门和金融行业分别占据了 20.9和 20.6的市场份额。然而,随着社会信息化的进步,越来越多的行业和领域视频监控的需求大量增加,即便是公安这样的传统用户也在平安城市方面对城市监控提出了全新的格局和功能要求。今年,视频监控开始从银行、交通等个别领域向多领域延伸,由传统的安防监控向管理监控和生产经营监控发展。此外,视频监控仅用于企业行业的情况也逐渐被打破,公众家庭也成为2008 年视频监

16、控应用的新市场。在公众家庭市场,视频监控主要是应用于住宅的安全防范和财产的监控。用户可以通过在家中安装摄像头,利用家庭网关作为视频服务器,用户在远程通过 Internet 实时监控家庭安全。虽然离数字家庭的全面实现还比较远,但随着 IPv6 技术和信息家电技术的发展、移动监控设备的进一步优化,视频监控技术很可能最先在数字家庭中得到推广。一份国内市场研究报告指出,随着个人用户对家庭安全的重视度日益增长,采用视频监控系统来保障住宅安全的意识明显加强,将在 2008 年成为新兴市场。所以,从市场需求、技术创新、行业需要等方面,网络视频监控系统都需要我们仔细研究和学习,有极大的现实意义。 1.3 本文

17、的内容及主要工作根据毕业设计的初衷,我们需要设计基于 ARM 的网络视频监控系统。在监控系统中,视频采集、传输、播放的功能不是由专门视频处理芯片完成,而是东北大学本科毕业设计(论文) 第 1 章 引言- 3 -由软件实现。论文首先介绍了嵌入式 ARM 系统的硬件结构和软件结构,方便大家熟悉ARM 和 Linux 系统,包括嵌入式设备的硬件结构,逻辑框图和 Linux 的基本操作、安装方法;第二,研究了嵌入式的一些驱动程序,主要是摄像头驱动程序V4L,系统中选用的摄像头芯片中星微 301;第三,研究了视频监控的具体流程和实现方式,让大家在总体上对整个系统有一个大概的认知;最后,搭建了视频服务器和

18、具体网站,增加了整个系统的友好程度,让系统全面的跟高的展示在使用者面前。本次设计的目的只有一个,就是实现视频的实时监控。围绕它,不管是硬件结构还是软件流程,都需要学习和研究,不断调试,决不放弃。总之,论文的内容都是围绕如何建立一个视频监控系统。无论是从哪个方面,我们都是为这个目标而努力。东北大学本科毕业设计(论文) 第 2 章 嵌入式 ARM 系统硬件结构简介- 4 -第 2 章 嵌入式 ARM 系统硬件结构简介2.1 视频监控系统结构简介网络视频监控系统是基于嵌入式技术设计的。嵌入式并没有统一的定义,但目前有一个广泛而又被认可的规范:将软件产品固化到硬件平台上,完成应有的功能既是嵌入式。基于

19、嵌入式 ARM 技术的视频监控系统服务器端采用摄像头不断的采集图像,压缩成视频流,然后通过网络发送到申请监控的客户端。监控系统的使用者可以在远程实现网页上的实时监控和一些简单的功能操作。系统整体结构如图 2.1所示1。CPU单元Intel XscaleLCDJTAGSDRAMFLASH以太网控制器摄像头ZC301远程PC客户端图 2.1 系统整体结构图该系统中 CPU 采用基于 ARM 的 PXA270 微处理器,通过在其上运行Linux 操作系统,执行 Boa 视频服务器,接受并处理来自摄像头的图像信号,通过以太网控制器发送至远端,实现视频数据的远程传输和接受,达到视频监控的目的2。2.2

20、ARM 处理器简介ARM,既是一个公司的名字,也是对一类微处理器的通称。ARM 嵌入式微处理器是全球领先的 16/32 位 RISK 处理器芯片知识产权设计供应商ARM(AdvancedRISKMachines)公司的产品。ARM 公司本身不直接从事芯片生产,而是依靠转让设计许可,由合作公司生产各具特色的芯片。东北大学本科毕业设计(论文) 第 2 章 嵌入式 ARM 系统硬件结构简介- 5 -ARM 处理器以其完整的体系结构,极小的体积、极低的功耗、极低的成本、极高的性能,及时根据嵌入对象的不同进行功能上的扩展的优势,在众多种类的嵌入式微处理器中脱颖而出。基于 ARM 技术的微处理器应用占据了

21、 32 位RISC 微处理器 75%以上的市场份额,ARM 技术正在逐步渗入到我们生活的各个方面。采用 RISC 架构的 ARM 微处理器一般具有如下特点:(1) 采用固定长度的指令格式,指令规整、简单、基本寻址方式有 23 种;(2) 使用单周期指令,便于流水线操作执行;(3) 大量使用寄存器,数据处理指令只对寄存器进行操作,以提高指令的执行效率;(4)所有的指令都可根据前面的执行结果决定是否被执行,从而提高指令的执行效率;(5)可用加载/存储指令批量传输数据,以提高数据的传输效率;(6)可在一条数据处理指令中同时完成逻辑处理和移位处理;(7)在循环处理中使用地址的自动增减来提高运行效率。目

22、前,ARM 处理器有 ARM7、ARM9、ARM9E、 ARM10、ARM10E、SecurCore、StrongARM 和 XScale 等系列。每个系列除了具有 ARM 体系结构的共同特点以外,都有各自的特点和应用领域。2.3 XScale 体系结构Xscale 核是采用 ARM V5TE 架构的处理器,是 Intel 公司的 StrongARM 的升级换代产品,它具有高性能、低功耗等特点,并在流水线设计、DSP 处理和指令设计中有很大改进3。ARM 的体系结构是基于 RISK 的,XScale 是 ARM处理器的一种,所以 XScale 具有 RISK 的基本特性。而且针对嵌入式系统,X

23、Scale 构架还引入了 Pentium 处理器工艺和系统结构技术,实现了 Pentium 微处理器体系结构的一系列高性能技术,达到了高性能、低功耗和小体积等嵌入式系统要求的特性。它的特点有:超流水线、高主频、存储体系、分支预测和指令集体系结构。本设计采用的就是基于英特尔 Xscale 构架的一种 32 位嵌入式处理器,它除了应用于掌上电脑之中外,还可以应用于智能手机、网络存储设备、骨干网路由器等电子设备。PXA27x 系列处理器是英特尔当前最新推出的嵌入式处理器。它的时钟频率从 312 到 624MHz 不等,并内建 64MB 的堆栈型 Intel StrataFlash 内存。内置了东北大

24、学本科毕业设计(论文) 第 2 章 嵌入式 ARM 系统硬件结构简介- 6 -英特尔的无线 MMX 技术,能够显著提升多媒体性能。OURS-PXA270-EP 是一款基于 INTELXSCALE PXA270 处理器,针对高效嵌入式系统教学和实验科研的平台。这款设备主要包括核心板与底版两个部分,核心板主要集成了高速的 PXA270 CPU,配套的存储器,网卡等设备;底版主要是各种类型的接口与扩展口。核心板(8 层 PCB 电路)系统包括:CPU: INTEL PXA270(520M),支持 GDB 调试;SDRAM: 64M 工作在 104M 外频上;FLASH: 32M INTEL Nor

25、FLASH;Net: 10/100M Ethernet controller (LAN91C111);SUPERIO: WINBOND 83977;CPLD: XILINX 95144 (117USER IO);总线驱动器: 若干;核心板正面如图 2.2 所示,核心板背面如图 2.3 所示。CPUCPLDSDRAMLDOdrvFLASHFLASHdrvdrvdrvdrvdrv图 2.2 核心板正面图东北大学本科毕业设计(论文) 第 2 章 嵌入式 ARM 系统硬件结构简介- 7 -EthernetSDRAMSuperIO100PIN CONNECTORLDOdrvdrvdrvdrv图 2.3

26、核心板背面图底版(4 层 PCB 电路)如图 2.4 所示。包括:Ethernet: 10/100 接口 1 个UART: 6 个(包括 RS232,RS485,IRDA,全功能串口)USB1.1:2 个(1 个 host 一个 device)PS2:2 个(KEYBOARD&MOUSE)标准并口:1 个PCMCIA: 1 个IDE:1 个SD/MMC: 1 个SMC:1 个CAMERA:1 个96PIN 功能扩展口:2 个4X5 小键盘CPU_JTAG CPLD_JTAGLEDSHARP LQ080V3DG01 8 寸真彩 LCD640X480VGA 640X480LED 8X8 点

27、阵一组 7 段 LED 数码管 4 个东北大学本科毕业设计(论文) 第 2 章 嵌入式 ARM 系统硬件结构简介- 8 -串口串口串口串口irdaPCMCIA 卡SMC 卡SDPSPSUSB USB并口VGA音频3音频1音频2LED点阵LCD接口LCD接口LED数码管核心板键盘485 NET 图 2.4 底版图2.4 主要硬件电路说明嵌入式设备除了以 ARM 芯片为主要控制单元,也有很多周边电路和外围设备,它们有的帮助 ARM 处理信号、有的负责存储数据、有的进行网络连接、有的用来数据通信,这些周边设备缺一不可,不能替代。首先介绍 CPU 核心总线4,总线是 CPU 和其他设备的桥梁。CPU

28、是通过总线信号来控制 SDRAM ,FLASH,网卡,SUPERIO 等外部设备的,无论是低速还是高速,只要是与总线相关的芯片,都要和 CPU 总线信号有关。其次,研究嵌入式系统内存SDRAM。SDRAM 是嵌入式系统的内存,具有单位空间存储容量大和价格便宜的优点,已广泛应用在各种嵌入式系统中。当系统启动时,CPU 首先从复位地址 0 x0 处读取启动代码,在完成系统的初始化后,程序代码一般应调入 SDRAM 中运行,以提高系统的运行速度。同时,系统及用户堆栈、运行数据也都放在 SDRAM 中。SDRAM 的存储单元可以理解为一个电容,总是倾向于放电,为避免数据丢失,必须定时刷新(充电)。因此

29、,要在系统中使用 SDRAM,就要求微处理器具有刷新控制逻辑,或在系统中另外加入刷新控制逻辑电路。PXA270 芯片在片内具有独立的 SDRAM 刷新控制逻辑,可方便地与 SDRAM 接口。除了 SDRAM,FLASH 也是一种存储媒介。FLASH 一般具有 NOR 型和 NAND 型。NAND 型 FLASH 单元密度高,写入和擦除速度非常快,而且一般 NAND 型 FLASH 的存储容量很大。NOR 型 FLASH 的优点是东北大学本科毕业设计(论文) 第 2 章 嵌入式 ARM 系统硬件结构简介- 9 -芯片内执行命令,这样应用程序可以直接在 FLASH 内运行,不用进入内存,使得它的传

30、输效率很高。嵌入式设备最大的优点就是网络功能强大,它能像 PC一样方便地连接到互联网上,这些功能都是网络控制器的作用。也就是Ethernet Controller,本系统采用 SMSC 公司的单芯片的网络控制器,LAN91C111。它可以工作在两种速度下,10M 以太网或者 100M 以太网。LAN91C111 的工作流程是,驱动程序将要发送的数据包按指定格式写入芯片并启动发送命令,LAN91C111 会自动把数据包转换成物理帧格式在物理信道上传输;反之芯片收到物理信号后自动将其还原成数据,并按指定格式存放在芯片RAM 中以便主机程序取用。就是 LAN91C111 完成数据包和电信号之间的相互

31、转换。最后,说明一下串口电路,在嵌入式视频监控系统中,串口起到了很重要地作用,嵌入式系统启动的信息都可以通过串口传到 PC 上,极大地方便了系统的移植和软件的调试。大多数情况下,嵌入式 CPU 的串口 0 会作为 CPU的一个终端,为用户与 CPU 交互提供基本的输出输入信息。当 CPU 运行BOOT 代码时,通常只有这个终端 ;运行 LINUX 内核时,如果有 LCD 显示,串口 0 与 LCD 终端会同时有效。串口 0 终端的交互方式是命令行的模式,在BOOT 阶段,支持简单的 BOOT 命令。东北大学本科毕业设计(论文) 第 3 章 嵌入式 ARM 系统软件结构- 10 -第 3 章 嵌

32、入式 ARM 系统软件结构3.1 Linux 操作系统简介Linux 是一个类似 Unix 的操作系统,它起源于芬兰一个名为 LinusTorvaldS的业余爱好者,现已成为最流行的一款开放源代码的操作系统。Linux 从问世至今,短短时间内已发展成为一个功能强大、设计完善的操作系统。Linux 系统不仅能够运行于 PC 平台,还在嵌入式系统方面大放光芒。由于 Linux 的源码开放,内核精简且性能强悍,不依赖于具体厂商,能广泛适用于各种硬件设备,系统二次开发成本极低,因此在 IT 业界已经达成共识,即采用嵌入式Linux 作为嵌入式操作系统是大势所趋5。嵌入式 Linux 是目前嵌入式系统领

33、域中发展势头非常迅猛的系统。嵌入式Linux 是指对 Linux 经过小型化裁剪后,能够固化在容量只有几百 K 字节或几M 字节的存储器芯片或单片机中,应用于特定嵌入式场合的专用操作系统。目前正在开发的嵌入式系统中,49%的项目选择嵌入式 Linux 作为操作系统。嵌入式 Linux 现已成为嵌入式操作系统的理想选择6。目前基于嵌入式 Linux 的应用已经遍布很多领域,比如移动多媒体设备、手持设备、车载导航系统、机械控制等。嵌入式 Linux 分为两种类型:在没有使用 MMU 的平台上(无内存虚实地址转换和映射)的一般为 uCLinux;而在有 MMU 平台上,则使用原本地嵌入式 Linux

34、 版本。由于在目前的主流嵌入式 ARM 中大多不具有 MMU,因此只用 IM 左右的内核就能实现网络功能和任务调度的 Linux 系统就可以适用于从高端服务器到嵌入式应用的各级平台。ARM 技术和 Linux 成功地结合,应用于数以千计的商业产品中。从便携式消费品、网络和无线设备,到自动化设备、医疗设备和存储产品,这一应用列表与日俱增。ARM 和 Linux 的结合充分满足了各类应用对嵌入式平台高性能、低功耗和低价格的要求,通过开发环境、开源社区和 ARM 的商业伙伴的优势为嵌入式开发提供了更灵活的选择。本次设计的开发环境为 redhat9.0 系统,在 Windows XP 下安装虚拟机,在

35、虚拟机中安装 Linux 系统,这样可以屏蔽底层差别,避免硬件驱动带来的麻烦,而且还能方便的使用串口、并口、USB 接口,快速的进入实验环境。图 3.1 为虚拟机下 Linux 系统启动后的情况。东北大学本科毕业设计(论文) 第 3 章 嵌入式 ARM 系统软件结构- 11 - 图 3.1 虚拟机下 Linux 操作系统3.2 交叉编译环境的建立通常嵌入式系统的软件编译和执行是在两个不同平台上进行的。编译是在宿主机,一般为装有 Linux 的 pc;执行是在目标机,即嵌入式系统的硬件平台。一般是在宿主机上通过跨平台交叉编译器把源文件编译成目标平台上可执行的文件,再通过串口、并口或者网络下载至目

36、标平台上的 FLASH 或者其它存储介质,然后由目标机来运行这些软件。这里所说的跨平台编译器和一般的编译器功能类似,都是把源代码通过编译器编译成目标文件,然后通过链接器、可重定位器程序和定位器把目标文件重新定位成可执行文件。和通用的编译器之间最大的差别就在于跨平台编译器编译出来的可执行程序通常只能在特定 CPU所属平台上运行。所以一般来说每种 CPU 都对应有不同的跨平台编译器。本系统采用基于 XScale 的 PXA270,可以使用常用的 ARM-LINUX-GCC 交叉编译器。要成功构建完整的交叉编译环境需要在宿主机上创建一系列的工具包括 C/C+编译器、汇编器、链接器、嵌入式系统的标准

37、C 库和 GDB 代码级调试器。成功建立好开发环境后便可以运用这些工具进行嵌入式系统开发7。东北大学本科毕业设计(论文) 第 3 章 嵌入式 ARM 系统软件结构- 12 -3.3 嵌入式 Linux 操作系统移植3.3.1 BootLorder 移植BootLoader 是系统加电后运行的第一段代码。一般只是在启动时运行很短的时间,然而对一个嵌入式系统来说,这一部分却是整个系统的一个无比重要的组成部分,不可缺少。在一般嵌入式系统中,系统复位或者加电后通常从地址 0 x00000000 处开始执行,而这个地址一般正是存放的 BootLoader 启动代码。通过这段程序,可以初始化硬件设备、建立

38、内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终加载操作系统内核准备好正确的环境。BootLoader 一般情况下需要包含以下几个必备的功能 :(l)初始化处理器。这个动作都是用汇编语言完成的,称为重置码(resetcode)或者称为 bootcode,而且对于每个 CPU 都不一样的,当电源接通后就会执行这个动作,通常只有两三个汇编指令,目的是将 CPU 的控制权转给硬件初始化的程序。(2)初始化一些必要的硬件。这个动作也大都由汇编语言来完成,主要是初始化 CPU、SDRAM 等,其他的硬件,例如串口,可以由 c 语言等比较高级的程序语言来完成后续动作。(3)设置处理器

39、的寄存器以及内存,关掉所有的输入管脚(包括中断管脚),以防止突然有信号进入妨碍接下来的硬件初始化动作。然后初始化串口,以便后续运行的程序能够同 HOST 端进行通信,便于调试。(4)从特定的位置把操作系统和文件系统调入内存,并设置一些操作系统所必需的参数,然后把 CPU 控制权交给操作系统。有的 BootLoader 会先从串口或者网络等其他途径得到内核的映像文件,然后把这些文件写入目标系统的FLASH 或者其它存储介质,最后再把内核载入 RAM 执行,交出控制权。一般 BootLoader 都包含两种不同的操作模式:“启动加载”模式和“下载”模式,这种区别仅对于开发人员才有意义。从最终用户的

40、角度看,BootLoader 的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载模式的区别。(l)启动加载(Bootloading)模式:这种模式也称为“自主”(Autonomous)模式,即BootLoader 从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。这种模式是 BootLoader 的正常工作模式,因此在东北大学本科毕业设计(论文) 第 3 章 嵌入式 ARM 系统软件结构- 13 -嵌入式产品发布的时候,BootLoader 显然必须工作在这种模式下。(2)下载(Downloading)模式:在这种模式下,目标机上的 Boot

41、Loader 将通过串口连接或者网络连接等通信手段从主机(HOST)下载文件,比如下载内核映像和根文件系统映像等。从主机下载的文件通常首先被 BootL0ader 保存到目标机的RAM 中,然后再被 BootLoader 写到目标机上的 FLASH 类固态存储设备中。BootLoader 的这种模式通常在第一次安装内核与根文件系统时被使用,此外,以后的系统更新也会使用 BootLoader 的这种工作模式。工作于这种模式下的BootLoader 通常都会向它的终端用户提供一个简单的命令行接口。BootLoader 的实现依赖于 CPU 的体系结构,一般来说启动过程分为两个阶段。第一阶段依赖于

42、CPU 体系结构的代码,比如设备初始化代码等,通常都放在第一阶段中,而且通常都用汇编语言来实现,运行效率比较高。这个阶段完成的任务一般如下:( l) 硬件设备初始化(屏蔽所有的中断、关闭处理器内部的指令/数据 cache);(2) 为第二阶段准备 RA.M 空间;(3) 复制 BootLoader 的第二阶段代码到 RAM 空间中;(4) 设置好堆栈并跳转到第二阶段的 C 程序入口点。第二阶段则通常用 C 语言来实现,这样可以实现复杂的功能,而且代码会具有更好的可读性和可移植性。这个阶段主要任务有:( l)初始化本阶段要使用的硬件设备;(2)检测系统内存映射;(3)将内核映像和根文件系统从 F

43、LASH 读到 RAM 中;(4)为内核设置启动参数;(5)调用内核文件运行。本设计中的 Bootloader 采用 Blob,Blob 是 Boot Loader Object 的缩写,是一款功能强大的 Bootloader。Blob 最初是由 Jan-Derk Bakker 和 Erik Mouw 两人为一块名为 LART(Linux Advanced Radio Terminal)的开发板写的,该板使用的处理器是 StrongARM SA-1100,现在 Blob 已经被成功移植到许多基于 ARM 的CPU 上了。本设计中的 Intel Xcale 就是采用 Blob 作为 Bootlo

44、ader8。3.3.2 Linux 内核移植选用嵌入式 Linux 作为目标机操作系统,一方面由于 Linux 是一款免费的操作系统,能很好的降低成本,同时 Linux 的开发应用现在已经成为热门,有大东北大学本科毕业设计(论文) 第 3 章 嵌入式 ARM 系统软件结构- 14 -量的资源可用于学习与重复应用,并且 Linux 系统具有良好的可移植性和可裁剪性,能自动支持多任务管理。一般常用的 GUI 如 QT/E,MiniGUI 等都支持Linux。Linux 的开发工具也都可以很方便的免费获得。系统采用的嵌入式 Linux 内核为随实验平台光盘中的 Linux 内核,它是针对这套实验平台

45、所配置的 Linux 内核,内核版本为 Linux2.4.209。在实验过程中,只需要在这个内核的基础上进行添加和删减所需要和不需要的功能,编译后就可以使用了。在编译内核之前,需要对内核进行必要的配置,通过虚拟机进入/pxa270_linux/linux/目录后在终端执行 make menuconfig10命令,就可以可视化的配置内核需要的功能和要求,本次试验,主要是针对视频方面,选择了对V4L 的静态加载、对 spca5xx 摄像头驱动的动态加载,这样就结束了对内核的配置。编译内核需要创建内核依赖关系、创建内核镜像文件和创建内核模块。首先执行 makedep 命令,读取配置过程生成的配置文件

46、,来创建对应于配置的依赖关系树,从而决定哪些需要编译而哪些不需要;接着需要 makeclean 删除前面步骤留下的文件,以避免出现一些错误;然后便可以生成所需要的内核文件了,用 make zlmage 来实现得到可移植的内核。内核文件通过并口下载线烧写入开发板中,便可以通过 BootLoader 加载运行。3.3.3 嵌入式文件系统嵌入式 Linux 操作系统一般采用 FLASH 作为存储介质。FLASH 具有独特的物理特性,所以必须使用专门的嵌入式文件系统。嵌入式系统对文件的操作是通过层次结构实现的。对于用户程序来说,文件是有结构的文件,用户程序通过对文件 IO 函数操作文件。嵌入式文件系统

47、是嵌入式操作系统的一部分,它的任务是对逻辑文件进行管理,其工作包括提供对逻辑文件的操作(复制、删除、修改等)接口,方便用户操作文件和目录。在文件系统内部,根据存储设备的特点,使用不同的文件组织模式来实现文件的逻辑结构。此外,文件系统要对管理文件的安全性负责。文件系统不能直接控制物理设备,它是通过 FLASH 驱动实现控制的11。目前 FLASH 支持的文件系统技术主要有JFFS2,YAFFS2,TrueFFS,FTL/NTFL,RAMFS,CRAMFS 和 ROMFS 等等。本系统采用的是 JFFS2 文件系统。JFFS2 文件系统是专门为 NAND 闪存设计的嵌入式文件系统,根据 NAND闪

48、存以页面为单位存取的特点,将文件组织成固定大小的数据段。利用 NAND东北大学本科毕业设计(论文) 第 3 章 嵌入式 ARM 系统软件结构- 15 -闪存提供的每个页面 16B 的备用空间来存放 ECC(ErrorCorrectionCode)和文件系统的组织信息、 ,不仅能够实现错误检测和坏块处理,也能够提高文件系统的加载速度。JFFS2 采用一种多策略混合的垃圾回收算法,结合了贪心策略的高效性和随机选择的平均性,达到了兼顾损耗平均和系统开销的目的。它是日志结构的文件系统,提供了损耗平衡和掉电保护,可以有效地避免意外掉电对文件系统一致性和完整性的影响。JFFS2 文件系统是按层次结构设计的

49、,分为文件系统管理层接口、JFFS2 内部实现层和 NAND 接口层,这样就简化了其与系统的接口设计,可以方便地集成到系统中去。与 YAFFS 相比,它增加了一些功能,因此功能更强。3.4Linux 下的程序调试调试是程序开发过程中必不可少的一个重要环节,通用 PC 机的程序调试与嵌入式操作系统的调试环境上有着明显的区别,前者调试器和被调试的程序往往是运行在同一台机器上,是相同操作系统下的两个不同的进程,调试器通过操作系统专用调用接口控制被调试进程,后者通常为远程调试,调试器一般运行于桌面操作系统上,而被调试的程序则运行在嵌入式系统之上,因此需要协调这两个程序之间的通信。Linux 下的调试工

50、具非常的少,gdb 是 Linux 下最著名的调试工具,它是 GNUC 自带的调试工具,它可以使开发人员了解程序运行的详细细节,从而消除程序的错误,达到调试的目的,gdb 还具有远程调试功能,可以满足嵌入式系统调试的要求,在调试过程中 PC 机也称为宿主机和嵌入式系统通过串口协议或者 TCP/IP 协议连接起来,远程主机上运行被 gdb 规范断点改造过的内核,当条件成立时,断点被激活,然后等待本地宿主机的连接命令,一旦连接成功,宿主机就可以向远程嵌入式系统发送调试命令了。在调试过程中 gdb 通过调试 stub 来完成通信功能,调试 stub 是嵌入式操作系统中的一小段代码,它提供了运行 gd

51、b 的宿主机和嵌入式系统进程之间交互的一个媒介。除了使用调试器外还可以直接在程序中使用 printf()或 printk 打印函数,这种方法功能比较弱,效率低下,但在内核模块调试时这是唯一的方法。东北大学本科毕业设计(论文) 第 4 章 USB 设备驱动程序设计- 16 -第 4 章 USB 设备驱动程序设计4.1 设备驱动程序简介Linux 系统中,设备驱动程序扮演着特殊的角色。它就像一个独立的黑盒子一样,使某个特定的硬件可以相应一个定义良好的内部编程接口并且完成隐藏设备的作用。用户只需调用一组标准化的函数完成操作,而且这些操作与特定的驱动程序无关。驱动程序的任务就是将这些函数映射到作用硬件

52、的具体操作上。这样的模块化的驱动程序结构使得 Linux 系统中的驱动程序可以独立于内核的其他部分,可以在需要使用的时候将驱动“插入”内核。从系统运行顺序来看,硬件平台启动运行 Linux 后,启用了 MMU 单元即内存管理单元,在这种模式下系统不能直接对物理地址进行访问。若要对某一硬件外设进行读写,需要通过内核调用该硬件的驱动来实现。上面已经说过,驱动程序的作用在于向应用程序提供访问硬件设备的接口,驱动程序屏蔽了硬件实现上的细节操作,于是应用程序可以像操作普通文件一样对硬件设备进行操作。Linux 以模块的形式加载设备类型,通常是一个模块对应实现一个设备驱动。模块是内核的一部分,它们没有被编

53、译到内核中,而是分别被编译并链接成一组目标文件。可以根据用户的需要在不需要对内核进行重新编译的情况下动态载入正在运行的内核,或从正在运行的内核中卸载。利用这种机制,内核尺寸可以保持在最小,并具有最大的灵活性,也便于检验新的内核代码,而不需要重新编译内核并重新引导。设备驱动程序一般需要完成以下功能:( l)对设备初始化和释放;(2)把数据从内核传送到硬件和从硬件读取数据;(3)读取应用程序传送给设备文件的数据和回送应用程序的请求数据;(4)检测和处理设备出现的错误。在 Linux 操作系统下有两类主要设备文件类型:块设备、字符设备。用户进程正是通过设备文件来与硬件打交道。每个设备文件都有其文件属

54、性,表示是字符设备还是块设备。另外每个文件都有 2 个设备号,第一个是主设备号,标识驱动程序;第二个是从设备号,标识使用同一个设备驱动程序的不同硬件设备。设备文件的主设备号必须与设备驱动程序在登记时申请的设备号一致,否则用户进程将无法访问驱动程序。东北大学本科毕业设计(论文) 第 4 章 USB 设备驱动程序设计- 17 -Linux 驱动程序可以分为三个主要部分:( l)自动配置和初始化子程序,负责检测所要驱动的硬件设备是否存在和能否正常工作。如果该设备正常,则对这个设备及其他必需的条件位口中断、DMA 通道)进行申一请并初始化。这部分驱动程序仅在初始化时被调用一次。(2)服务于 I/O 请

55、求的子程序,又称为驱动程序的上半部分。调用这部分程序是由于系统调用的结果。这部分程序在执行时,系统仍认为是与进行调用的进程属于同一个进程,只是由用户态变成了核心态,但仍具有进行此系统调用的用户程序的运行环境,因而可以在其中调用与进程运行环境相关的函数。(3)中断服务子程序,又称为驱动程序的下半部分。在 Linux 操作系统中,并不是直接从中断向量表中调用设备驱动程序的中断服务子程序,而是由Linux 系统来接收硬件中断,再由系统调用中断服务子程序。中断可以在任何一个进程运行时产生,因而在中断服务子程序被调用时,不能依赖于任何进程的状态,也就不能调用任何与进程运行环境有关的函数。因为设备驱动程序

56、一般支持同一类型的若干设备,所以一般在系统调用中断服务子程序时,都带有一个或多个参数,以唯一标识请求服务的设备。在系统内部,I/O 设备的存取通过设备驱动程序提供的一组固定的入口点来进行,这组入口点在驱动程序初始化时向系统进行登记,以便在系统适当的时候调用。一般来说,字符型设备驱动程序能够提供如下几个入口点:(1)open 入口点:打开设备准备 I/O 操作,对字符特别设备进行打开操作,都会调用设备的 open 入口点。open 子程序必须对将要进行的 I/O 操作做好必要的准备工作,如清除缓冲区等。如果设备是独占的,即同一时刻只能有一个程序访问此设备,则 open 子程序必须设置一些标志以表

57、示设备的状态。(2)close 入口点:关闭一个设备,当最后一次使用设备结束后,调用 dose 子程序。独占设备必须标记设备可再次使用。(3)read 入口点:读取设备,对于有缓冲区的 I/0 操作,一般从缓冲区里读取设备数据。(4)write 入口点:向设备写数据,对于有缓冲区的 I/O 操作,一般向缓冲区里写入数据。(5)ioctl 入口点:执行读写之外的操作。USB(Universal Serial Bus)即“通用串行外部总线”,用途广泛,可以外接硬盘、键盘、鼠标、打印机等多种设备,USB 能够使用尽可能少的接口支持尽可能多的外设,尤为适合在嵌入式设备中使用,是嵌入式接口标准的一个很好

58、的选择。东北大学本科毕业设计(论文) 第 4 章 USB 设备驱动程序设计- 18 -USB 总线规范有 1.1 版和 2.0 版。USB1.1 支持两种传输速率:低速1.5Mbit/s、全速 12Mbit/s,这样的速率完全满足鼠标、键盘、CD-ROM 等设备,但是在嵌入式视频监控系统中,这样的速度还是很慢。所以,USB2.0 提供了一种更好的传输速率:高速,它可以达到 480Mbit/s。USB2.0 向下兼容 USB1.1,可以将遵循 USB1.1 规范的设备连接到 USB2.0 控制器上,也可以把 USB2.0 的设备链接到 USB1.1 控制器上。USB 总线的硬件拓扑结构12如图

59、4.1 所示。USB主机控制器USB设备USB设备USB设备USB设备USB设备USB设备USB设备USB设备USB设备根集线器集线器集线器集线器图 4.1 USB 总线硬件拓扑图USB 主机控制器通过根集线器与其他 USB 设备相连。集线器也属于 USB设备,通过它可以在一个 USB 接口上扩展出多个接口。除根集线器外,最多可以层叠 5 个集线器,每条 USB 电缆的最大长度是 5m,所以 USB 总线的最大距离为 30m。一条 USB 总线上可以外接 127 个设备,包括根集线器和其他集线器。整个结构图是一个星状结构,一条 USB 总线上所有设备共享一条通往主机的数据通道,同一时刻只能有一

60、个设备与主机通信。通过 USB 主机控制器来管理外接的 USB 设备,USB 主机控制器共分 3 种:UHCI、OHCI 和 EHCI。在配置 Linux 内核的时候,看到的“HCD”字样表示东北大学本科毕业设计(论文) 第 4 章 USB 设备驱动程序设计- 19 -“Host Controller Drivers”,即主机控制器驱动程序。USB 驱动程序分为两类:USB 主机控制器驱动程序(Host Controller Drivers) 、USB 设备驱动程序(USB device drivers) 。它们在内核中的层次如图4.2 所示。USB Device DriversUSB Host Controlle

温馨提示

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

评论

0/150

提交评论