基于ARM的图像采集系统_第1页
基于ARM的图像采集系统_第2页
基于ARM的图像采集系统_第3页
基于ARM的图像采集系统_第4页
基于ARM的图像采集系统_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1、基于ARM地图像采集系统摘要近年来,随着科学技术地不断发展,人们对于生活地安全、方便、快捷地要求越来越高,图像采集已经越来越多地用于智能家居、图像识别、环境监控等领域.本文通过研究当前数字图像采集系统地研究成果和发展趋势,设计了一种基于ARM地数字图像采集系统,论文重点研究了系统地软件实现为了克服传统图像采集系统地不足,本文采用常见地USB摄像头作为图像采集设备,利用FS_s5pcl00开发板进行操作系统移植,采用s5pcl00芯片直接控制USB摄像头进行图像数据采集,经格式转化后,通过LCD控制器在液晶显示屏上显示.该系统使用主控芯片完成了图像采集和传送,实现地系统贴近于生活,具有一定地实用

2、价值.关键词:嵌入式;图像采集;s5pcl00;USBImageCaptureSystemBasedonARMAbstract:Inrecentyears,withthecontinuousdevelopmentofscienceandtechnology,peoplehaveincreasinglhyigherdemandsforsecurityc,onvenience,speedyoflifeI.mageacquisitiohnasbeenincreasingluysedinsmarthome,imagerecognition,environmentalmonitoringandother

3、fields.Inthispaper,IwilldesignadigitalimageacquisitionsystembasedonARMbystudyingthecurrentresearchresultsanddevelopingtrendofdigitalimageacquisitisystem,andIfocusonthesoftwareimplementationofthesystem.Inordertoovercomethedeficiencyofthetraditioniamlageacquisitiosnystem,IchooseUSBcameraastheimageacqu

4、isitiondevice,andtransplantOSintotheFS_s5pc100boardinthispaper.Themaincontrolchip,s5pc100,controlstheUSBcameratocaptureimagefir,standthenitchangestheimageformatandcontrolstheLCDdisplayertoshowthepicture.Withtheonlymaincontrolchip,thesystemcancaptureanddisplaimages,thismakesthesystemhavepracticalimpl

5、icationsandmoreclosertoourtrulife.Keyword:ARM。ImageAcquisitiois5pclO0USB目录TOC o 1-5 h z第1章前言1.第2章相关器件2.2.1摄像头3.2.2显示器4.第3章总体设计9.3.1功能需求9.3.2工作原理9.3.3软硬件规划硬件规划.2软件规划1.0.第4章硬件设计开发板&主控芯片s5pcl004.1.1s5pcl0芯片介绍4.1.2开发板简介.1.54.2图像数据采集设备4.3显示设备第5章软件设计1.5Linux&开发环境搭建1.6Linu系统及Lin

6、ux内核简介1.6Linu环境搭建步骤概述16Lint交叉编译环境搭建17Bootloacder植19.Linu内核移植与配置20Linu文件系统21linu设备驱动移植235.2.1基础知识5.2.2设备介绍.5.2.3系统驱动5.3图像采集.5.3.1软件流程5.3.2程序设计结论3.2致谢3.3参考文献3.4第1章前言图像采集起源于20世纪80年代中期.在发展初期,现实世界画面地存储通过胶片式高速摄像机记录下来.随着技术地不断进步,图像采集经过了几个发展阶段.早期地采集系统庞大而难以扩展;在上个世纪末期,单片机地问世使数据采集系统发生了翻天覆地地变化,但此时处

7、理数据地速度很慢.后来高速单片机,以及更高速地处理芯片DSP,FPGA以及ARM纷纷问世,这让数据采集速度得到了飞速地发展,同时基于PC地高速数据采集也日趋成熟.现在,图像采集系统广泛应用于可视电话、远程监控以及网络会议等领域,而在各种图像处理,视频压缩与传输系统中,它更是必不可少地组件.对图像进行采集、处理历来都是一个热点,也是一个难点.在众多地图像采集系统中,大多数都针对特定地用途选择专用地摄像头和视频处理芯片,这种传统地方式存在不易购买、可扩展性不强、价格昂贵等问题.近年来,对图像采集系统地设计要求日益提高,在日常生活、科学研究、工业生产中,都迫切需要廉价、易扩展、功能强劲地图像采集系统

8、.随着计算机与网络技术地飞速发展,普通PC所使用地USB摄像头由于价格低廉、容易安装使用等优点得到迅速普及.然而这种利用通用PC机来进行图像采集地方式会随之带来体积大、成本高、无法嵌入对象内部等显著问题.如何将USB摄像头应用于基于单片机地嵌入式系统中,构建出低成本、高性能地图像采集系统越来越引起人们地广泛关注.然而在PC上使用USB摄像头时通常都需要安装由其生产厂商提供地Windows操作系统下地专用驱动程序,想在单片机系统中直接应用非常困难.近年来由于网络、通信、多媒体技术地飞速发展,对高性能嵌入式CPU地需求十分迫切,为顺应这种潮流,各种高速地32位嵌入式微处理器应运而生,使得嵌入式系统

9、又进入了一个新地历史发展阶段.在嵌入式系统地高端应用中,进行多年技术准备地ARM公司适时推出了32位地ARM系列微处理器,以明显地性能优势迅速奠定了其主流地位.在无线通信、网络及消费类电子产品中ARM都获得了广泛地应用.在流行地数字音频播放器、数字机顶盒和游戏机中,都已经从采用DSP,转而大量利用ARM技术来实现.一直以来普通PC所使用地USB摄像头要想在嵌入式系统中应用十分困难.但随着嵌入式操作系统地广泛应用,嵌入式系统与PC机上地开发技术渐渐融合,加上近年来中星微等免驱摄像头芯片地推出,使得这个难题逐渐有了解决之道.由于ARM在嵌入式微处理器市场上地主导地位,所以本课题将研究如何把USB摄

10、像头应用到基于ARM地嵌入式系统中基于ARM和Linux操作系统地应用开发是近年来最为流行地一门新技术,被公认为是嵌入式系统地重要发展方向.本文基于ARMCortexA8架构地s5pcl00芯片强大而稳定地性能,linuX操作系统对USB地强大支持,结合LCD显示屏构建图像采集系统,通过USB摄像头对图像采集,经由ARM处理器传输控制显示在显示器上.第2章相关器件2.1摄像头摄像头(CAMERA)又称为电脑相机,电脑眼等,是一种视频输入设备,被广泛地运用于视频会议,远程医疗及实时监控等方面.摄像头地工作原理大致为:景物通过镜头(LENS)生成地光学图像投射到图像传感器表面上,然后转为电信号,经

11、过A/D2(模数转换)转换后变为数字图像信号,再送到数字信号处理芯片(DSP)中加工处理,再通过USB接传输到电脑中处理,通过显示器就可以看到图像了.如图1-1所示:执慷头工件流怪图:毙AVD冋崔口显示器景物團像传爾一数字信号拠理若m图1-1摄像头工作流程摄像头可分为数字摄像头和模拟摄像头两大类.数字摄像头可以将视频采集设备产生地模拟视频信号转换成数字信号,进而将其储存在计算机里.模拟摄像头捕捉到地视频信号必须经过特定地视频捕捉卡将模拟信号转换成数字模式,并加以压缩后才可以转换到计算机上运用.数字摄像头可以直接捕捉影像,然后通过串、并或者USB接传到计算机里.虽然摄像头看起来很简单,但摄像头从

12、诞生以后不断在进行着巨大变化,在此期间,PC摄像头共经历了三次行业革命性技术发展.1)、USB1.1接摄像头到USB2.0接摄像头地技术化变革从图1-1看,同一台PC上摄像头地成像效果主要受到图像传感器、数字信号处理芯片和USB接三个方面地影响.其中,USB接地带宽可以说是图像传感器和数字信号处理芯片无法逾越地瓶颈,如果不改进USB接,其他内部芯片地数据传输量就必然受到限制,所以,最先发起地摄像头技术变革就是USB接地全面升级.相比USB1.1接快40倍传输速率地USB2.0接,推动了高清数码摄像头地普及应用,加上同期宽带地飞速发展,电脑摄像头地本地和远程视频效果都有了大幅度提升电脑摄像头从U

13、SB1.1接升级成USB.20接,也成为了一次里程碑式地行业技术提升.2)、需要驱动地摄像头到免驱摄像头地人性化变革自USB2.0接摄像头面世以来,电脑摄像头从10万硬件像素飚升到200万硬件像素.此时,电脑摄像头地芯片方案已经超过了100多种!电脑摄像头地芯片方案多达百种,导致驱动地重装或者升级频率给人们带来极大地不便.2007年1月,WindowsVISTA系统面世,除了炫丽地界面之外,它还包含了USBVideoClass(简称UVC)功能,其内容为:电脑硬件不需要安装驱动程序地情况下即插即用.正是在这种背景下,免驱摄像头蓬勃发展.免驱摄像头成为电脑摄像头行业地第二次技术性革命,这次变革堪

14、称人性化变革.3)、免驱摄像头到HDCAM摄像头地应用变革视频捕获能力是用户最为关心地功能之一,很多厂家都声称能达到30帧/秒地视频捕获能力,但实际使用时并不能尽如人意.视频捕获对电脑地要求比较高,如CPU地处理能力要足够地快等.其次对画面要求大小和清晰度地不同,捕获能力也不尽相同.对于很多厂商宣传地视频捕获速度,只是一种理论指标.用户应根据自己地切实需要,选择合适地产品以达到预期地效果.如今地电脑摄像头已经具备了免驱、高清等功能,但在实际应用中,消费者还是发现了许多技术问题:电脑摄像头在室外只能看到白茫茫地一片,电脑摄像头帧数过慢而产生模糊地现象,俗称鬼影.为了满足人们不断提升地应用需求,2

15、008年12月,蓝色妖姬率先在电脑摄像头行业发布拥有速影技术SpeedKing地高清摄像头HDCAM.在应用层面,速影摄像头HDCAM与普通摄像头相比:1.成像速度提升4倍,由30帧升级到120帧;2提供双通道成像模式(室内/户外效果平衡,解决普通摄像头户外见光死问题)2.2显示器显示器(display)通常也被称为监视器.显示器是属于电脑地I/O设备,即输入输出设备.它可以分为CRT、LCD等多种.它是一种将一定地电子文件通过特定地传输设备显示到屏幕上再反射到人眼地显示工具.最初地显示器为机械式指示装置.例如,老式电压、电流测试器,它们使用指针指示电压电流大小;发展到后来地电子显示器件(如发

16、光二极管、数码管、荧光屏、液晶显示器等).机械式指示装置类显示器已经逐渐退出了历史,取而代之地是电子类显示器,它们能够直观地反映给用户所需求地信息(如发光二极管能够用来指示一个电子产品是否正常工作等).电子类显示器件可分为:阴极射线管(CRT)、发光二级管(LEDLightEmittingDiode)、液晶显示器(LCDLiquidCrystalDisplay)、等离子显示板(PDPPlasmaDisplayPanel、有机发光二极管(OLEDOrganicLight-EmittingDiode).发光二极管(LED)属于半导体器件,是主动发光器件.因为半导体易于在很小地晶片上集成大规模电路,

17、所以一个LED可以制造得很小,以至于LED可以制成显示屏,也可以作为灯使用;LED使用地是冷光源技术,发热量比普通地照明灯低很多;LED耗电量相当低,一般LED地工作电压是2.0-3.6V工作电流0.02-0.03A即其耗能不超过0.1W;同时LED地光源可以利用红、绿、蓝三基色原理,在计算机技术控制下使这三种颜色具有256级地灰度并且任意混合,即可以产生256乂56乂56=16777216种颜色,形成不同地光色组合,可以实现丰富多彩地动态变化效果及各种色彩丰富地图像.液晶显示器(LCD)主要是由一种叫做液晶(液晶通常是固态,温度上升到清亮点而成为透明液态.其在某个温度范围内既有液体地流动性又

18、有晶体地双折射性.液晶是不同于通常地气态、固态和液态.显示原理:没有加电时其内部排列无规则,一旦上电,其将会按照一定地规则排列,随着加电不同而排列规律改变地物质组成目前市面上地LCD液晶显示器主要有两类:DSTN(duascantwistechematiq双扫描交错液晶显示)和TFT(thinfilmtransistor薄膜晶体管显示),也就是被动矩阵(无源矩阵)和主动矩阵(有源矩阵)两种.其中DSTN包括了扭曲向列型(TN-TwistedNematic);超扭曲向列型(STN-SuperTN);双层超扭曲向列型(DSTN-DualScanTortuosityNomographTN-LCD、S

19、TN-LCD和DSYN-LCD地基本显示原理都相同,只是液晶分子地扭曲角度不同而已.STN-LCD地液晶分子扭曲角度为180度甚至270度.而TFT地液晶显示器较为复杂,主要是由:萤光管、导光板、偏光板、滤光板、玻璃基板、配向膜、液晶材料、薄模式晶体管等等构成.首先,液晶显示器必须先利用背光源,也就是萤光灯管投射出光源,这些光源会先经过一个偏光板然后再经过液晶.这时液晶分子地排列方式就会改变穿透液晶地光线角度,然后这些光线还必须经过前方彩色地滤光膜与另一块偏光板.因此只要改变刺激液晶地电压值就可以控制最后出现地光线强度与色彩,这样就能在液晶面板上显示出不同色调地颜色组合了.等离子显示板(PDP

20、PlasmaDisplayPanel)采用等离子管作为发光元件,屏幕上地每一个等离子管对应了一个像素点,屏幕是以玻璃作为基板,基板间隔一定距离,四周经过气密性地封接形成了一个个地放电空间.放电空间内充入氖、氙等混合惰性气体作为工作媒质.在两块玻璃基板内侧表面上涂有金属氧化物导电薄膜用以作为激励电极.当向电极加电压时,放电空间内地混合气体会发生等离子体放电现象.气体等离子体放电会产生紫外线,紫外线又会激发荧光屏,然后荧光屏发射出可见光,显现出图像.PDP地优点:超宽地视角、纯平面无失真、不受电磁干扰、亮度均匀、图像清晰、全数码显示,但它地致命缺点耗电量相当大,因此发热量也相当大.所以在很多场合不

21、宜用PDP.有机发光二极管(OLED)是指有机半导体材料和发光材料在电场驱动下,通过载流子注入和复合导致发光地现象其原理是用ITO透明电极和金属电极分别作为器件地阳极和阴极,在一定电压驱动下,电子和空穴分别从阴极和阳极注入到电子和空穴传输层,电子和空穴分别经过电子和空穴传输层迁移到发光层,并在发光层中相遇,形成激子并使发光分子激发,后者经过辐射弛豫而发出可见光.辐射光可从ITO一侧观察到,金属电极膜也起了反射层作用.OLED优点:OLED可以自身发光、OLED没有视角范围地限制,可视角度般可达到160度、OLED比LED更亮、OLED制造起来更加容易,但是其寿命有限,而且制造难度大成本高,OL

22、ED遇水会永久性地损坏.2.3ARM架构ARM是AdvancedRISCMachines地缩写,是嵌入式微处理器地一种.同时它还是一个公司地名字,成立于英国剑桥,主要出售ARM芯片设计技术授权采用ARM知识产权0P)核地微处理器都被称为ARM处理器,如三星公司生产地S3C44B0X、$3C2410A,NXP地LPC系列,以及ATMEL、ST、Freescale等公司推出地各种ARM处理器,适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等.ARM芯片地特点是:1)、体积小、低功耗、低成本、高性能;2)支持Thumb(16位)/ARM(32位)双指令集,很好地兼容8位/16位

23、器件;3)、大量使用寄存器,指令执行速度更快;4)、大多数数据操作都在寄存器中完成;5)、寻址方式灵活简单,执行效率高;6)、指令长度固定.ARM微处理器地在较新地体系结构中支持两种指令集:ARM指令集和Thumb指令集.其中,ARM指令为32位地长度,Thumb指令为16位长度.Thumb指令集为ARM指令集地功能子集,但与等价地ARM代码相比较,可节省30%一40%以上地存储空间,同时具备32位代码地所有优点.ARM架构包含了下述RISC特性:读取/储存架构不支援地址不对齐内存存取(ARMv6内核现已支援)正交指令集(任意存取指令可以任意地寻址方式存取数据Orthogonalinstruc

24、tionset)大量地16x32-bit寄存器阵列(registefi固定地32bits操作码(opcode)长度,降低编码数量所产生地耗费,减轻解码和流水线化地负担大多均为一个CPU周期执行.为了补强这种简单地设计方式,相较于同时期地处理器如Intel8028和Motorola68020还多加了一些特殊设计:大部分指令可以条件式地执行,降低在分支时产生地负重,弥补分支预测器(branchpredictc)地不足.算数指令只会在要求时更改条件编码(conditioncode)32-bit筒型位移器(barrelshift)可用来执行大部分地算数指令和寻址计算而不会损失效能强大地索引寻址模式(a

25、ddressingmode)精简但快速地双优先级中断子系统,具有可切换地暂存器组有个附加在ARM设计中好玩地东西,就是使用一个4-bit条件编码在每个指令前头,表示每条指令地执行是否为有条件式地,这大大地减低了在内存存取指令时用到地编码位.目前,有关ARM处理器应用较多地有ARM7、ARM9、ARM9E、ARM10及StrongARM等系列本文中选用地是ARMv7-A架构地Cortex-A8内核地芯片.ARMCortex-A8处理器是第一款基于ARMv7架构地应用处理器,并且是有史以来ARM开发地性能最高、最具功率效率地处理器.ARMCortex-A8处理器复杂地流水线架构基于双对称地,顺序发

26、射地,13级流水线,带有先进地动态分支预测,可实现2.0DMIPS/MHz.Cortex-A8处理器地速率可以在600MHz到超过1GHz地范围内调节,能够满足那些需要工作在300mW以下地功耗优化地移动设备地要求;以及满足那些需要2000DhrystoneMIPS地性能优化地消费类应用地要求.第3章总体设计3.1功能需求根据工程需求,要实现地图像采集系统应该具有如下地功能:1.高性能:设计是应尽量减少不必要地模块以及算法,使系统在对硬件地依赖性上做到尽力最低.高2.可靠性:由于图像采集系统会运用在各种环境下,又饿环境很恶劣,因此需要系统具有高可靠性高稳定性以及长期连续工作地能力.实3.现对采

27、集现场地图像实时采集.实4.现将实时采集地图像显示在液晶显示屏上.5.采集地图像应该满足后期图像处理地需求.3.2工作原理如图2-1所示,在采集图像时,首先光线会照射到被拍摄物体上,物体将光线反射到USB摄像头中地CMOS传感器,传感器中地感光二极管接收到光照,产生模拟地电信号,经过预中放电路放大、AGC自动增益控制,于由图像处理芯片处理地是数字信号,所以经模数转换到图像数字信号处理IC(DSP).同步信号发生器主要产生同步时钟信号(由晶体振荡电路来完成),即产生垂直和水平地扫描驱动信号,到图像处理IC然后,经数模转换电路通过输出端子输出一个标准地复合视频信号,按照寄存器中地配置处理以后地图像

28、数据通过ARM芯片将图像格式转换后控制存入内存中缓冲,当采集完一帧数据后,处理器从缓冲数据中读取数据然后通过显示接显示到液晶显示屏上.被摄物体USB摄像头ARM处理器LCD液晶显示屏图3-1系统框图3.3软硬件规划3.3.1硬件规划硬件部分包括嵌入式处理器、图像采集模块、图像显示模块.嵌入式处理器是整个嵌入式系统地核心部分.目前世界上地嵌入式处理器早已超过1000种,不同地处理器有各自不同地功能以及优势.低成本、低功耗、高性能是嵌入式应用地首要要求.ARMCortex-A8控制器是第一款基于ARMv7架构地应用处理器,并且是有史以来ARM开发地性能最高、最具功率效率地处理器本文选择三星公司生产

29、地s5pcl00芯片作为本工程地主控芯片.并且使用华清远见所生产地FS_s5pcl00开发板作为硬件平台,本文忽略无用地模块,模拟实现嵌入式最小系统.图像采集方面,本文选择地是CMOSUSB摄像头,选择这类摄像头地原因是USB摄像头成本低,极其易于购买,使用方便.CMOS摄像头可以直接输出数字信号,方便对于图像地采集以及处理,在短时间内完成系统地功能设计.图像显示方面,选择LCD液晶显示屏,满足显示成本并且达到显示要求.3.3.2软件规划软件是针对需求而编写地适合用于本系统地专用程序,本设计初步将其大体分为底层驱动程序以及顶层业务程序本文中顶层软件是基于Linux操作系统之来设计,用Linux

30、C语言实现.首先,基于操作系地软件开发更易于程序地研发设计.本文中,基于开发板地工程设计需要搭建嵌入式开发平台,首先需要烧写与开发板适合地Bootloader对开发板硬件进行初始化,然后就是嵌入式开发地核心:进行文件系统、LCD以及USB&摄像头驱动地移植.对于PC机开发环境,需要安装嵌入式交叉编译工具链.在此基础之上设计顶层软件.首先需要移植关于图像操作地函数库一jli,然后通过摄像头驱动v4l2提供地函数以及命令对摄像头操作,包括图像采集,对图像地格式转换,然后通过操作帧缓存进行图像实时显示控制.这样设计,将硬件地初始化全部固定在底层驱动操作,在程序编写时就无需设计硬件,不仅易于程序设计,

31、而且很好地实现了层次隔离划分,分工明确.第4章硬件设计4.1开发板&主控芯片s5pcl004.1.1s5pc10芯片介纟召随着ARM公司在ARM11内核架构基础上,升级推出了第一代基于ARMv7指令集地Cortex-A8内核架构之后,三星也及时跟进推出了基于Cortex-A8内核架构地S5PC100型处理器除了内核架构更为先进之外,三星S5PC100也采用了更为先进地65nm工艺制程技术,核心主频可达667MHz(最高可达833MHz).如图4-1是s5pc100架构图解.S5PC1OO处理器采用64位内部总线构架,包括强大地硬件加速器,如:动态视频处理,显示控制和缩放.支持多种格式地硬件编解

32、码MPEF1/2/4、H263/H264、CV-1、D1vX.其硬件加速功能支持实时地视频会议和模拟电视输出,支持NTSCDPAL模式地HDMI.提供了24bitLCD接口、TVout接口、Camera输入接口、4路串口、SD卡接口、SPI、1OOM网口、USB2.00TG接口,USBHost接、音频输入输出接、按键接口、12C接等硬件资源,具有更高地主频和更丰富外设,能适用于对性能和处理能力有更高要求地嵌入式系统应用场合.UTS5PC100专为消费类电子、工业控制、车载导航、行业PDA等电子产品地开发而设计,主要供广大企业用户进行产品前期软硬件性能评估验证、设计参考用.SystemPerip

33、heralHTCPLLjc#TimerwkthPWM(4-ch)WatchdogTimeiDMA(24-chIILrXV_r_rItrootOM-1iuelitservicenfsrestarthuttingdounMFSdaemon:OKhuttingdounNFSmountd:OKShuttingdounMFSquotas:OKhuttingdounMFSservices:OKStartingNFSservices:OKStartingMFSquotas:OKStartingMFSmountd:OKtoppingRPCidmapd:OKStartingRPCidmapd:OKStartin

34、gMFSdaemon:OK|root(?M-1iuelit图5-3NFS服务启动成功效果图TFTP是一个传输文件地简单协议,它基于UDP协议而实现,但是我们也能确定有些TFTP协议是基于其它传输协议完成地.此协议设计地时候是进行小文件传输地因此它不具备通常地FTP地许多功能,它只能从文件服务器上获得或写入文件,不能列出目录,不进行认证,它传输8位数据.传输中有三种模式:netasci,i这是8位地ASCII码形式,另一种是octet这是8位源数据类型;最后一种mail已经不再支持,它将返回地数据直接返回给用户而不是保存为文件.为系统移植时传输文件搭建服务器.TFTP服务器搭建步骤:(1)在线安

35、装命令:yuminstallxinetdtftptftp-server(2)修改配(3)重启服务(4)测试:Bootload移植在嵌入式系统中,Bootloader地作用与PC机上地BIOS类似,通过Bootloade可以完成对系统板上地主要部件如CPU、SDRAM、Flash串行门等进行初始化,也可以下载文件到系统板上,对Flash进行擦除与编程.当运行操作系统时,它会在操作系统内核运行之前运行,通过它,可以分配内存空间地映射,从而将系统地软硬件环境带到一个合适地状态,以便为最终调用操作系统准备好正确地环境通常,Bootloader是依赖于硬件而实现地,特别是在嵌入式系统中因此,在嵌入式系统

36、里建立一个通用地Bootloader几乎是不可能地,但是,仍然可以对Bootloader归纳出一些通用地概念来以指导用户特定地Bootloade设计与实现正确建立Linux移植地前提条件是具备一个与Linux内核配套地、易于使用地Bootloader它能够正确完成硬件系统地初始化和Linux系统引导.ARM处理器体系中,嵌入式Linux下常使用地Bootloader包括:Blob、vivi、UBOOt、ARMbOOt、RedBoot等.本系统采用uboot.然后,编译Bootloader在uboot目录下配置系统相关地设置,执行:makemenuconfig再执行make,就可以在当前目录下生

37、成u-boot.bi在初次烧写u-boot时,系统利用usb线来烧录,整个过程需要5分钟左右.在以后地烧写中,一般利用uboot本身来烧录设置好tftp|服务器ip开发板ip利用tft传输u-boot.bi文件到开发板通过nanderase擦除,用nandwrite写入便可更新uboot可以提高烧写地效率.LinU内核移植与配置Linux2.6.3内核配置Linux内核地重要地特点是可移植性(Portabili,y支持大多数地硬件平台,在大多数体系结构上都可以运行.Linux26地内核吸收了一些新技术,在性能、可量测性、支持和可用性方面不断提高.本系统移植地内核为其中地一个版本Linux2.6

38、.35从网站上可以下载内核linux2.6.35.tar.地Z源码包,使用命令tar-zvflinux2.6.35.ta将b内2亥解压缩到指定地目录下.Linux内核源代码是通过Makefile组织编译地,进入该目录,用vi编辑器打开Makefile文件,修改其中内容:ARCH二arm和CROSSCOMPILE二解压目录/arm-none-linux-gnuea,ARCH是指定此内核地体系结构是arm类型,CROSSCOMPILE指定交叉编译器地类型为arm-none-linux-gnueabi-这样生成地映像文件就能在ARM上运行.在真正移植内核到ARM平台之前,还需要对内核进行配置和移植相

39、应地设备驱动程序.Linux2.6.3内核配置编译在众多配置界面中makexconfig地界面最为友好,如果机器可以使用Xwindow,推荐使用这个命令,如果不能使用Xwin-dow,那么就可以使用makemenueonfig.界面虽然比上面一个差点,总比makeconfig地要好多了.所有内核配置菜单都是通过config.经由不同脚本解释器产生.config在内核配置完成后就就会在当前目录下产生一个.config*配置文件,当然也可以直接修改此文件来配置内核.选择相应地配置时,有三种选择,它们分别代表地含义如下:Y为将该功能编译进内核;N为不将该功能编译进内核;M为将该功能编译成可以在需要时

40、动态插入到内核中地模块.在配置时,大部分选项可以使用其缺省值,只有小部分需要根据用户不同需要选择.选择地原则是将与内核其它部分关系较远且不经常使用地功能代码编译成为可加载模块,以减小内核地长度,减小内核消耗地内存,简化该功能相应地环境改变时对内核地影响;不需要地功能就不要选,与内核点紧密且经常使用地部分功能代码直接编译到内核中.配置完毕后用make命令编译内核,内核地编译就是一个非常简单地过程.执行:1)#makeclean这条命令是在正式编译你地内核之前先把环境给清理干净,保证没有不正确地依赖文件存在.#makedep:由于内核源码树中地大多数文件都与一些头文件有依赖关系,因此要将内核源码树

41、中每个子目录产生地“depend件建立起依赖关系.#makezlmage:建立压缩地linu内核映像编译完毕,在arch/arm/boot目录下将会生成ARMLinux内核映像文件zlmage,这就是将要移植到目标机地内核映像文件#makemodules:这条命令是编译在配置时选择为模块地,即选项前为M地.如果内核配置选项中有选择编译为模块地,就需要此命令.如果将来还要对内核重新进行编译,则需执行命令“makedistclean去除依赖关系并清除以前编译产生地文件,然后重复上述步骤即可.内核映像分为压缩地内核映像和未压缩地内核映像,压缩地内核映像通常名为zlmage,位于arch/arm/bo

42、ot目录中.而未压缩地内核映像通常名为vmlinux位于源码树地根目录中把这个映像文件下载到开发板中,开发板提供了一套比较完整地通用系统地外围设备,配置bootloadete启动参数就能运行起来linux2.6地内核.LinUX件系统(1)文件系统简述文件系统是操作系统用于明确磁盘或分区上地文件地方法和数据结构;即在磁盘上组织文件地方法.也指用于存储文件地磁盘或分区,或文件系统种类.操作系统中负责管理和存储文件信息地软件机构称为文件管理系统,简称文件系统.文件系统由三部分组成:与文件管理有关软件、被管理文件以及实施文件管理所需数据结构.从系统角度来看,文件系统是对文件存储器空间进行组织和分配,

43、负责文件存储并对存入地文件进行保护和检索地系统.具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件地存取,当用户不再使用时撤销文件等.Linux地文件结构是单个地树状结构.可以用tre进行展示.在Ubuntu下安装tree(sudoapt-getinstall,并可通过命令来查看.图5-4目录分区示例(2)文件系统制作1)创建根文件目录进入到/opt/studyari目录,新建建立根文件系统目录地脚本文件create_rootfs_ba,sh使用命令chmod+xcreate_rootfs_b改!sS文件地可执行权限,./create_rootfs_b运行脚本,就完成了根文件

44、系统目录地创建.i建立动态链接库动态链接库直接用友善之臂地,先解压友善之臂地根文件包,拷贝lib地内容到新建地根文件目录lib内.ii交叉编译BosyboxBosybox是一个遵循GPLv2协议地开源工程,它在编写过程总对文件大小进行优化,并考虑了系统资源有限(比如内存等)地情况,使用Busybox可以自动生成根文件系统所需地bin,sbin、usig录和linuxr文件.2)安装mkfs.jff地工具.i安装MTD工具:本文使用地是mtd-snapshot-20050519.tar.:bz2ii安装zli库ii制作JFFS2文件镜像mkfs.jffs2-r/source/rootfs-oro

45、otfs.jffs2-e0 x4000-ad=0 x800000这样就会生成一个8M大小地rootfs.jf地镜像,它也正是JFFS2文件系统地镜像,关于这个命令行里地选项地内容,可以用manamkfs.jff命令来查看内容.将rootf文件拷贝到NFS工作目录中.开发板上设置启动参数挂载文件系统.将rootfs.jf文件下载到开发板,固化之后修改启动参数便可.5.2lint设备驱动移植5.2.1基础知识驱动硬件是操作系统最基本地功能,它为应用程序提供了统一地方式来访问各种硬件设备.设备驱动程序为用户屏蔽了各种各样地硬件设备,是内核地一部分,是操作系统最基本地组成部分,比如在Linux地内核源

46、程序中设备驱动程序就占60%以上因此熟悉驱动地编写是很重要地.Linux有两种使用设备驱动程序地方式,分别是直接编译到内核中或在运行时加载(也就是内核模块.操作系统是通过各种驱动程序来驾驭硬件设备地.本文中系统功能并不繁琐,采用将驱动直接编译进内核地方式,直接将硬件驱动程序写入内核地优点是用户可随时对它进行调用而无须安装,大大简化了操作.众所周知,Linux把内存分为内核空间”和用户空间操作系统内核和驱动程序在内核空间运行,可以访问内核空间,也可通过系统调用访问用户空间.而用户程序在用户空间中运行,只能访问自己地用户空间,对内核空间地访问具有严格地限制内核模块module,简单地说就是提供了某

47、一项功能地程序段,这种程序段可以按需要随时装入内核空间和从内核空间卸载.因此内核模块是为了给内核动态增减功能而设计地,并不仅限于驱动程序.但在一个操作系统中,驱动程序是变化最大地部分,所以往往把驱动程序编译成内核模块.5.2.2设备介绍1)字符设备字符设备是指存取时没有缓存地设备.可像文件一样访问字符设备,字符设备驱动程序负责实现这些行为这样地驱动程序通常会实现open、closeread和write系统调用.系统控制台和并就是字符设备地例子,它们可很好地用流地概念来描述通过文件系统节点可以访问字符设备,字符设备和普通文件系统问地惟一区别是,普通文件允许在其上来回读写,而大多数字符设备仅仅是数

48、据通道,只能顺序读写,当然也存在这样地字符设备看起来像一个数据区,可来回读取其中地数据.2)块设备块设备是与字符设备完全不同地另一种设备,它地服务对象不是以字节为单位,而是以一整块地数据为单位应用程序在访问字符设备时一般都采用直接读写地方法,但在访问块设备时就要通过系统里地缓冲区缓存了块设备上一般都容纳着文件系统,可以通过指定要读写地数据块对块设备进行随机访问,这与字符设备形成鲜明地对比字符设备只允许进行顺序地非随机访问,因此它不能用于提供文件系统地存储.Linux并不严格区分块设备和字符设备,甚至提供应甬程序应用程序给它们地接都是相同地图5-6示出了字符设备和块设备地区别.3)网络设备任何网

49、络事务处理都是通过接口可与其它宿主交换数据地设备)实现地通常,接是一个硬件设备,但也有像loopback环回)接这样地软件工具.网络接是由内核网络子系统驱动地,它负责发送和接收数据包由于网络接不是面向流地设备,一所以它不能像/dev/tty那样简单地被映射到文件系统地节点上.Linux调用这些接地方式是给它们分配一个独立地名字如ethO)这样地名字在文件系统中并没有对应项内核和网络设备驱动程序之间地通信与字符设备驱动程序和块设备驱动程序与内核间地通信是完全不同地内核不再调用read和write它调用与数据包传送相关地函数.4)其它设备Linux中还有一些设备不属于以上3类,如SCSI设备驱动程

50、序.对于大多数情况来说,我们不太会编写这类设备驱动程序,因此这里就不做研究了.5.2.3系统驱动在掌握了Linux设备驱动地基础知识以后便可以开始进行驱动地移植对比于PC地驱动,嵌入式Linux驱动程序经过交叉编译后运行在嵌入式系统中上.1)USBHost驱动本文采用USB摄像头采集图像数据对应地就应该在内核中进行USB驱动地移植,USB作为一个驱动层在内核代码中是很独立地一个模块,在往内核中添加USB地支持时,需要改动控制这部分代码编译连接地文件.USB驱动分为USB主机驱动和USB设备驱动本系统中我们要使用摄像头,所以系统需要具备USB主机Host地驱动.如果系统地USB主机控制器符合OH

51、CI等标准,则主机驱动地绝大部分工作都可以沿用通用地代码.针对本文中所使用开发板,十分类似于s3c2410,对于本开发板地USB移植就在对s3c2410地USB驱动修改上进行.s3c241(主机控制器驱动hcdrive结构体中地大多数成员函数都是通用地ohci_xxx0数.编写适用于本文所用开发板地USB驱动,需要修改板文件,添加平台设备,配置内核,再进行内核编译.2)V4L2驱动Video41inux简称V4L),是linux中关于视频设备地内核驱动模块.现在已有最新地Video41inux2但还未加入linux内核,使用需自己下载补丁在Linux中,视频设备是设备文件,可以像访问普通文件一

52、样对其进行读写.我们可以利用Vide04Linux获取摄像头地视频数据.Video4Linux是Linux下用于获取视频数据地API接口.Video4Linux是Linux下进行影像系统开发地核心.这里结合Video4Linux地关键技术,简要说明如何在嵌入式Linux环境下使用USB摄像头进行视频图像采集程序中用到地主要系统调用函数有:open(”dev/voideOO,intflags)close(fd、)mmap(voidstar,tsize_tlength,intprot,intflags,intfd,off_toffset)munmap(voidstar,size_tlength和i

53、octl(iftdintcmd,),利用提供地函数接口,我们就可以打开视频设备文件,将其映射到用户空间进行数据采集,从而实现图像地采集如图5-7是V4L2针对免驱USB地框架图解;5-6V4L2针对免驱USB摄像头图解LCD驱动在linux中将显示器抽象为一个标准地字符型设备-帧缓冲设备,在Linux中主设备号29,定义在/include/linux/majc中地FB_MAJ0R,次设备号定义帧缓冲地个数,最大允许有32个FrameBuffer定义在/include/linux/f中地FB_MAX,对应于文件系统下/dev/fb殳备文件.如图5-6为帧缓冲设备在内核地结构图:图5-7帧缓冲殳备

54、结构图在本文中,LCD驱动地移植涉及到修改屏幕参数,使其适合本文所用50针地TFT显示屏.修改参数时需要修改arch/arm/mach-s5pcl00/mach-smdkcl00.中地smdkclOO_fb_winO结构体,将.xres.yre分别设置为480、272,以适应本文所用屏幕地大小;将.maxbpp、.default_bp分别设置为32、16来设置适应于本问所用屏幕所支持地像素深度.最后,与USB驱动一样,修改Kconfig文件后进行内核配置将其直接编译进内核即可.5.3图像采集5.3.1软件流程如图5-7所示为软件流程图.珞境上电+糕临图片科毎云CPU展外股图5-8软件流程图5.

55、3.2程序设计系统初始化开发板启动参数设置好以后在系统上电时,Bootloader自动初始化各模块,然后开发板主控芯片自动加载内核模块.在前一章中已讲过,将驱动模块直接编译进内核模块,在加载内核模块时就会直接初始化USB设备以及显示设备.而无需进行模块安装以及在程序中调用驱动中地进行设备地初始化.对于功能简化地系统,这样地处理模式更简单更节约时间.摄像头程序内核中已经加载了USB驱动,对于本文使用地免驱地USB摄像头,将使用内核中对视频操作地驱动V4L2(video4linux2)控制摄像头来采集图像信息,在V4L2中提供了ioct接函数以及一系列地命令来操作摄像头进行图像地采集本文在摄像头程

56、序video.c中还进行了图像地格式转换以便LCD屏幕地显示.在V4L2下进行编程地流程大致如下:i)打开视ii)读取iii)更改设iv)进行视频采内存映射(本文b.直接从v)对采集地vi)关闭视频设备设频设备息备信备当前设置集两种方法:中即采用本方法)设备读取视频进行处理具体编程细节如下(详细代码见附录)i)初始化函数:intinit_video_device(void)在video(中提供函数intinit_video_device(来初始化视频设备,包括:打开视频,获取当前设备信息,更改当前设置,内存映射.详细解读如下:在linux中,视频设备被当作文件来直接操作,camerafd=op

57、en(/dev/videoO,O_RDWR),返回值camerafd为视频设备地文件描述符,在后续地操作中,对文件描述符进行操作即可.V4L2提供函数接口对视频采集设备地现有信息进行查询,例如获取当前支持地视频格式:ioctl(camerafV,DIOC_ENUM_FMT,&fmtdesc),其中fmdesc结构体用于存储所获取地信息.V4L2还提供查询其他地功能,VIDIOC_QUERYCAP用于查询视频所支持地功能,执行完VIDIOC_QUERYCAP命令后,capability量中包含了该视频设备地能力信息,然后通过检查capability地设备能力信息来判断设备是否支持某项功能;然后进

58、行本文所需要地视频设备信息地设置,首先设置好所需要地信息在structv4l2_forma类型地结构体fmt中,如下:memset(&fmt,0,sizeof(f。t)/结构体清零,去除脏数据fmt.type=V4L2_BUF_TYPE_VIDEO_CAPTURE。/设置支持地视频捕获功能fmt.fmt.pix.pixelformat二V4L2_PIX_FMT_YUYV/殳置视频采集数据格式fmt.fmt.pix.height二video_height设置列分辨率fmt.fmt.pix.width=video_width设置行分辨率fmt.fmt.pix.field=V4L2_FIELD_IN

59、TERLACED设置视频包含top和bottomfield!行交替,fields地瞬间序依赖于当前video地标准.然后利用命令VIDIOC_S_FMT进行设置:ioctl(camerafd,VIDIOC_S_FMT,&fmt).进行视频采集时本文中采用地是内存映射(mmap)地方式,mmap通过把设备文件映射到内存中,绕过了内核缓冲区.在计算机系统中最快地磁盘访问往往还是慢于最慢地内存访问,所用mmap地方式可以加速I/O地访问,mmap方式进行视频采集地具体操作是首先利用命令VIDIOC_REQBUFS初始化内存映射指针进行内存分配地请求:ioctl(camerafVIDIOC_REQBU

60、FS,&v4l2_reqbuf)然后利用内存映射API进行内存地映射,实现设备文件到内存空间地映射操作.Mmap函数地原型为:void*mmap(void*start,size_tlength,intprot,intflags,intfd,off_toffset)star:映射区地开始地址,设置为0时表示由系统决定映射区地起始地址.length映射区地长度.prot期望地内存保护标志,不能与文件地打开模式冲突.flags指定映射对象地类型,映射选项和映射页是否可以共享.offset被映射对象内容地起点.fd:有效地文件描述词.初始化函数地最后利用命令VIDIOC_DQBUF将数据缓冲重新列入队

温馨提示

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

最新文档

评论

0/150

提交评论