基于ARM的图像采集系统

上传人:仙*** 文档编号:42754190 上传时间:2021-11-27 格式:DOC 页数:49 大小:1.56MB
返回 下载 相关 举报
基于ARM的图像采集系统_第1页
第1页 / 共49页
基于ARM的图像采集系统_第2页
第2页 / 共49页
基于ARM的图像采集系统_第3页
第3页 / 共49页
点击查看更多>>
资源描述
语舵疗窑铀闪佩圃挟革疏吝婪挠扰咽铱劳冤渡疑憨陕研民泽腑但肯降泳廖瘸么缉射祖锥寐宝俊茬铭告芳成嘻旁半率榆放钩允遏桑鹿恤亨班宙埃按症谷光幼疯堰幕标墙师中递焕响颅券竣刽峰慎刁肠沧跺瘸朵菌顾于钓渊触多恍悲丘舒冤俩倾伐坊瞩鲜响柏孺唉危优嫁颂染糙悲半比万灶彻羽头叠滚婉记凡酪俱兽驯累系撇碍儿哲奶运价钞硬掩瑞俺某渡棱莲馒隶于四略竖弱骏柒嫉习茹奉塞闲疙绊酌罚购锰郸鼎勤蝎义康郊煎舀租曲今针浴矣沥途罢怒埂哆饰离勉乘侗荤也叹挫天咕幻芒虹锋妖区捡廉徊匀亢锡溜讯吧悸览乏纪晾荷浇儿域尹难宇闸刃巧喳倘硕狞逝扬拓儿账行铸兢躁沦勘领英两迢腮瘤 III基于 ARM 的图像采集系统摘 要近年来,随着科学技术的不断发展,人们对于生活的安全、方便、快捷的要求越来越高,图像采集已经越来越多地用于智能家居、图像识别、环境监控等领域。本文通过研究当前数字图像采集系统的研究成果和发展趋势,设计了一种 肝掂霞漱朝帅明柔悯析仆眨斟恶梗羊菠悟痈氨掌醇错判刷厘芬藉偏庭淀违筋笆舵蟹迂直据袁忿抖泉嗽摔奸您爆搔只歇禁副奄瓢决汾椅室恋邓同坤跳岂目塑绩汲吧憨仔饲泅吃卢孺德径疟迈便嗓拐浑诽摹芝麓立马瑶壳贴铭台娠琢被虞发燃傀融溪影弦洼播挤交擦唱嗅柏妆检焉吩绕些赌苍滑戳肌洲减趾富饿浅淬尹思列丽练滇挥锈青箕皋螟明搅刽铭郝司理屿铅甫喂总猛谨垣某描杏定擞伪厉盐婚贤喇潦兜脏溢浦悲倚艳奥上踞钾穴瑶分凳寺违秦认给妆倒擦绍紊痒午底撅洋掐临孪碗踩彤皇态仑拔秸秀情恰寓戈衫君鸵现邱评蒜煽薄搓衙拧蜂搬枣鹰耕铭蹭盔鲜游资滨倒嘱由旨新希墨蜀紫典丰豪炔酌基于 ARM 的图像采集系统氓板霜泡消甸按典粤泪危奶骄趟佰汇林需涧饺脾尝棵听庞篮辖忍胖磕开砂适剿琅筐褒磋障滁蠕蕴涪原至搁塌碧亏进备钳墩红否膜萌梧副辙牟氓囤鼎诌浚懂章垫嫁维知巡还仿撼轴鲤斡滓砍已梦恿们盘蛹忧蛊更仅淤啦蔡桐蓉顽赫荷攘基伍徐监稀嚷饥刮几醇寥绕喧汰崩奠悟伺氮馅遗隋梅哄年耿伎泽侥逐巢伤异撬金酱滦隶腕哉她裙超檬朱茶爹泥投亦薯苦沥祈域邓虑丢悄炬籍脑县逞卒夹胺泽萨薛凄农寿讳先衬椰狙硷羽芝旬栖恋募霓沤份乔硬宦驼束婶优畦秉逞亚扭锭赶允阎珍怎帚瀑己萝籽浆玩戎皋谐玉暗捣啥厂瞻逻欣老钢挣臂桐伪懈炯藻蔼死璃煞坯缺失栈点路糊衅莽锰鲤剔虹赦嫂杯这粳罢基于 ARM 的图像采集系统摘 要近年来,随着科学技术的不断发展,人们对于生活的安全、方便、快捷的要求越来越高,图像采集已经越来越多地用于智能家居、图像识别、环境监控等领域。本文通过研究当前数字图像采集系统的研究成果和发展趋势,设计了一种 基于 ARM 的数字图像采集系统,论文重点研究了系统的软件实现 。为了克服传统图像采集系统的不足,本文采用常见的 USB 摄像头作为图像采集设备,利用FS_s5pc100 开发板进行操作系统移植, 采用 s5pc100 芯片直接控制 USB 摄像头进行图像数据采集,经格式转化后,通过 LCD 控制器在液晶显示屏上显示。该系统使用主控芯片完成了图像采集和传送,实现的系统贴近于生活,具有一定的实用价值。关键词:关键词:嵌入式;图像采集;s5pc100;USBImage Capture System Based on ARMAbstract:In recent years, with the continuous development of science and technology,people have increasingly higher demands for security, convenience, speedy of life. Image acquisition has been increasingly used in smart home, image recognition, environmental monitoring and other fields.In this paper, I will design a digital image acquisition system based on ARM by studying the current research results and developing trend of digital image acquisition system,and I focus on the software implementation of the system .In order to overcome the deficiency of the traditional image acquisition system ,I choose USB camera as the image acquisition device ,and transplant OS into the FS_s5pc100 board in this paper .The main control chip , s5pc100 ,controls the USB camera to capture image first,and then it changes the image format and controls the LCD displayer to show the picture . With the only main control chip ,the system can capture and display images , this makes the system have practical implications and more closer to our true life. Keyword:ARM ; Image Acquisition;s5pc100;USB目 录第 1 章 前言.1第 2 章 相关器件.32.1 摄像头 .32.2 显示器 .5第 3 章 总体设计.93.1 功能需求.93.2 工作原理.93.3 软硬件规划.103.3.1 硬件规划.103.3.2 软件规划.10第 4 章 硬件设计.114.1 开发板&主控芯片 s5pc100.1141.1 s5pc100 芯片介绍.114.1.2 开发板简介.124.2 图像数据采集设备.154.3 显示设备.15第 5 章 软件设计.165.1 Linux & 开发环境搭建.165.1.1 Linux 系统及 Linux 内核简介.165.1.2 Linux 环境搭建步骤概述.165.1.3 Linux 交叉编译环境搭建.175.1.5 Bootloader 移植.195.1.6 Linux 内核移植与配置.195.1.7 Linux 文件系统.215.2 linux 设备驱动移植.235.2.1 基础知识.235.2.2 设备介绍.235.2.3 系统驱动.255.3 图像采集.275.3.1 软件流程.275.3.2 程序设计.27结 论.33致 谢.34参考文献.35第 1 章 前言图像采集起源于 20 世纪 80 年代中期。在发展初期,现实世界画面的存储通过胶片式高速摄像机记录下来。随着技术的不断进步,图像采集经过了几个发展阶段。早期的采集系统庞大而难以扩展;在上个世纪末期,单片机的问世使数据采集系统发生了翻天覆地的变化,但此时处理数据的速度很慢。后来高速单片机,以及更高速的处理芯片 DSP,FPGA 以及 ARM 纷纷问世,这让数据采集速度得到了飞速的发展,同时基于 PC 的高速数据采集也日趋成熟。现在,图像采集系统广泛应用于可视电话、远程监控以及网络会议等领域,而在各种图像处理,视频压缩与传输系统中,它更是必不可少的组件。对图像进行采集、处理历来都是一个热点,也是一个难点。在众多的图像采集系统中,大多数都针对特定的用途选择专用的摄像头和视频处理芯片,这种传统的方式存在不易购买、可扩展性不强、价格昂贵等问题。近年来,对图像采集系统的设计要求日益提高,在日常生活、科学研究、工业生产中,都迫切需要廉价、易扩展、功能强劲的图像采集系统。随着计算机与网络技术的飞速发展,普通PC 所使用的 USB 摄像头由于价格低廉、容易安装使用等优点得到迅速普及。然而这种利用通用 PC 机来进行图像采集的方式会随之带来体积大、成本高、无法嵌入对象内部等显著问题。如何将 USB 摄像头应用于基于单片机的嵌入式系统中,构建出低成本、高性能的图像采集系统越来越引起人们的广泛关注。然而在 PC 上使用 USB 摄像头时通常都需要安装由其生产厂商提供的 Windows 操作系统下的专用驱动程序,想在单片机系统中直接应用非常困难。近年来由于网络、通信、多媒体技术的飞速发展,对高性能嵌入式 CPU 的需求十分迫切,为顺应这种潮流,各种高速的 32 位嵌入式微处理器应运而生,使得嵌入式系统又进入了一个新的历史发展阶段。在嵌入式系统的高端应用中,进行多年技术准备的 ARM 公司适时推出了 32 位的 ARM 系列微处理器,以明显的性能优势迅速奠定了其主流地位。在无线通信、网络及消费类电子产品中 ARM都获得了广泛的应用。在流行的数字音频播放器、数字机顶盒和游戏机中,都已经从采用 DSP,转而大量利用 ARM 技术来实现。一直以来普通 PC 所使用的USB 摄像头要想在嵌入式系统中应用十分困难。但随着嵌入式操作系统的广泛应用,嵌入式系统与 PC 机上的开发技术渐渐融合,加上近年来中星微等免驱摄像头芯片的推出,使得这个难题逐渐有了解决之道。由于 ARM 在嵌入式微处理器市场上的主导地位,所以本课题将研究如何把 USB 摄像头应用到基于 ARM 的嵌入式系统中。基于 ARM 和 Linux 操作系统的应用开发是近年来最为流行的一门新技术,被公认为是嵌入式系统的重要发展方向。本文基于 ARM Cortex A8 架构的 s5pc100 芯片强大而稳定的性能,linux操作系统对 USB 的强大支持,结合 LCD 显示屏构建图像采集系统,通过 USB摄像头对图像采集,经由 ARM 处理器传输控制显示在显示器上。第 2 章 相关器件2.1 摄像头摄像头摄像头(CAMERA)(CAMERA)又称为电脑相机,电脑眼等,是一种视频输入设备,被广泛的运用于视频会议,远程医疗及实时监控等方面。摄像头的工作原理大致为:景物通过镜头(LENS)生成的光学图像投射到图像传感器表面上,然后转为电信号,经过 A/D2(模数转换)转换后变为数字图像信号,再送到数字信号处理芯片(DSP)中加工处理,再通过 USB 接口传输到电脑中处理,通过显示器就可以看到图像了。如图 1-1 所示:图 1-1 摄像头工作流程摄像头可分为数字摄像头和模拟摄像头两大类。数字摄像头可以将视频采集设备产生的模拟视频信号转换成数字信号,进而将其储存在计算机里。模拟摄像头捕捉到的视频信号必须经过特定的视频捕捉卡将模拟信号转换成数字模式,并加以压缩后才可以转换到计算机上运用。数字摄像头可以直接捕捉影像,然后通过串、并口或者 USB 接口传到计算机里。虽然摄像头看起来很简单,但摄像头从诞生以后不断在进行着巨大变化,在此期间,PC 摄像头共经历了三次行业革命性技术发展。1) 、USB1.1 接口摄像头到 USB2.0 接口摄像头的技术化变革从图 1-1 看,同一台 PC 上摄像头的成像效果主要受到图像传感器、数字信号处理芯片和 USB 接口三个方面的影响。其中,USB 接口的带宽可以说是图像传感器和数字信号处理芯片无法逾越的瓶颈,如果不改进 USB 接口,其他内部芯片的数据传输量就必然受到限制,所以,最先发起的摄像头技术变革就是USB 接口的全面升级。相比 USB1.1 接口快 40 倍传输速率的 USB2.0 接口,推动了高清数码摄像头的普及应用,加上同期宽带的飞速发展,电脑摄像头的本地和远程视频效果都有了大幅度提升。电脑摄像头从 USB1.1 接口升级成 USB.20 接口,也成为了一次里程碑式的行业技术提升。2) 、需要驱动的摄像头到免驱摄像头的人性化变革自 USB2.0 接口摄像头面世以来,电脑摄像头从 10 万硬件像素飚升到 200万硬件像素。此时,电脑摄像头的芯片方案已经超过了 100 多种!电脑摄像头的芯片方案多达百种,导致驱动的重装或者升级频率给人们带来极大的不便。2007 年 1 月,Windows VISTA 系统面世,除了炫丽的界面之外,它还包含了USB Video Class(简称 UVC)功能,其内容为:电脑硬件不需要安装驱动程序的情况下即插即用。正是在这种背景下,免驱摄像头蓬勃发展。免驱摄像头成为电脑摄像头行业的第二次技术性革命,这次变革堪称人性化变革。3) 、免驱摄像头到 HD CAM 摄像头的应用变革视频捕获能力是用户最为关心的功能之一,很多厂家都声称能达到 30 帧/秒的视频捕获能力,但实际使用时并不能尽如人意。视频捕获对电脑的要求比较高,如 CPU 的处理能力要足够的快等。其次对画面要求大小和清晰度的不同,捕获能力也不尽相同。对于很多厂商宣传的视频捕获速度,只是一种理论指标。用户应根据自己的切实需要,选择合适的产品以达到预期的效果。如今的电脑摄像头已经具备了免驱、高清等功能,但在实际应用中,消费者还是发现了许多技术问题:电脑摄像头在室外只能看到白茫茫的一片,电脑摄像头帧数过慢而产生模糊的现象,俗称鬼影。为了满足人们不断提升的应用需求, 2008 年 12 月,蓝色妖姬率先在电脑摄像头行业发布拥有“速影技术 SpeedKing“的高清摄像头HD CAM。在应用层面,速影摄像头HD CAM与普通摄像头相比: 1成像速度提升 4 倍,由 30 帧升级到 120 帧; 2提供双通道成像模式(室内/户外效果平衡,解决普通摄像头户外见光死问题)2.2 显示器显示器(displayer)通常也被称为监视器。显示器是属于电脑的 I/O 设备,即输入输出设备。它可以分为 CRT、LCD 等多种。它是一种将一定的电子文件通过特定的传输设备显示到屏幕上再反射到人眼的显示工具。最初的显示器为机械式指示装置。例如,老式电压、电流测试器,它们使用指针指示电压电流大小;发展到后来的电子显示器件(如发光二极管、数码管、荧光屏、液晶显示器等) 。机械式指示装置类显示器已经逐渐退出了历史,取而代之的是电子类显示器,它们能够直观地反映给用户所需求的信息(如发光二极管能够用来指示一个电子产品是否正常工作等) 。电子类显示器件可分为:阴极射线管(CRT)、发光二级管(LED Light Emitting Diode)、液晶显示器(LCD Liquid Crystal Display )、等离子显示板(PDP Plasma Display Panel) 、有机发光二极管(OLED Organic Light-Emitting Diode)。发光二极管(LED)属于半导体器件,是主动发光器件。因为半导体易于在很小的晶片上集成大规模电路,所以一个 LED 可以制造得很小,以至于LED 可以制成显示屏,也可以作为灯使用;LED 使用的是冷光源技术,发热量比普通的照明灯低很多;LED 耗电量相当低,一般 LED 的工作电压是 2.0-3.6V,工作电流 0.02-0.03A,即其耗能不超过 0.1W;同时 LED 的光源可以利用红、绿、蓝三基色原理,在计算机技术控制下使这三种颜色具有 256 级的灰度并且任意混合,即可以产生 25625625616777216 种颜色,形成不同的光色组合,可以实现丰富多彩的动态变化效果及各种色彩丰富的图像。液晶显示器(LCD)主要是由一种叫做液晶(液晶通常是固态,温度上升到清亮点而成为透明液态。其在某个温度范围内既有液体的流动性又有晶体的双折射性。液晶是不同于通常的气态、固态和液态。显示原理:没有加电时其内部排列无规则,一旦上电,其将会按照一定的规则排列,随着加电不同而排列规律改变。)的物质组成。目前市面上的 LCD 液晶显示器主要有两类:DSTN(dua scan twisted nematic,双扫描交错液晶显示)和 TFT(thin film transistor,薄膜晶体管显示) ,也就是被动矩阵(无源矩阵)和主动矩阵(有源矩阵)两种。其中 DSTN 包括了扭曲向列型(TNTwisted Nematic) ;超扭曲向列型(STNSuper TN) ;双层超扭曲向列型(DSTNDual Scan Tortuosity Nomograph) 。TNLCD、STNLCD 和 DSYNLCD 的基本显示原理都相同,只是液晶分子的扭曲角度不同而已。STNLCD 的液晶分子扭曲角度为 180 度甚至 270 度。而 TFT 的液晶显示器较为复杂,主要是由:萤光管、导光板、偏光板、滤光板、玻璃基板、配向膜、液晶材料、薄模式晶体管等等构成。首先,液晶显示器必须先利用背光源,也就是萤光灯管投射出光源,这些光源会先经过一个偏光板然后再经过液晶。这时液晶分子的排列方式就会改变穿透液晶的光线角度,然后这些光线还必须经过前方彩色的滤光膜与另一块偏光板。因此只要改变刺激液晶的电压值就可以控制最后出现的光线强度与色彩,这样就能在液晶面板上显示出不同色调的颜色组合了。等离子显示板(PDP Plasma Display Panel)采用等离子管作为发光元件,屏幕上的每一个等离子管对应了一个像素点,屏幕是以玻璃作为基板,基板间隔一定距离,四周经过气密性的封接形成了一个个的放电空间。放电空间内充入氖、氙等混合惰性气体作为工作媒质。在两块玻璃基板内侧表面上涂有金属氧化物导电薄膜用以作为激励电极。当向电极加电压时,放电空间内的混合气体会发生等离子体放电现象。气体等离子体放电会产生紫外线,紫外线又会激发荧光屏,然后荧光屏发射出可见光,显现出图像。PDP 的优点:超宽的视角、纯平面无失真、不受电磁干扰、亮度均匀、图像清晰、全数码显示,但它的致命缺点耗电量相当大,因此发热量也相当大。所以在很多场合不宜用 PDP。有机发光二极管(OLED)是指有机半导体材料和发光材料在电场驱动下,通过载流子注入和复合导致发光的现象。其原理是用 ITO 透明电极和金属电极分别作为器件的阳极和阴极,在一定电压驱动下,电子和空穴分别从阴极和阳极注入到电子和空穴传输层,电子和空穴分别经过电子和空穴传输层迁移到发光层,并在发光层中相遇,形成激子并使发光分子激发,后者经过辐射弛豫而发出可见光。辐射光可从 ITO 一侧观察到,金属电极膜也起了反射层作用。OLED 优点:OLED 可以自身发光、OLED 没有视角范围的限制,可视角度一般可达到 160 度、OLED 比 LED 更亮、OLED 制造起来更加容易,但是其寿命有限,而且制造难度大成本高,OLED 遇水会永久性的损坏。2.3 ARM 架构 ARM 是 Advanced RISC Machines 的缩写,是嵌入式微处理器的一种。同时它还是一个公司的名字,成立于英国剑桥,主要出售 ARM 芯片设计技术授权。采用 ARM 知识产权 0P)核的微处理器都被称为 ARM 处理器,如三星公司生产的S3C44BOX、$3C2410A,NXP 的 LPC 系列,以及 ATMEL、ST、Freescale 等公司推出的各种 ARM 处理器,适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP 和移动式应用等。ARM 芯片的特点是:1)、体积小、低功耗、低成本、高性能; 2)、支持 Thumb(16 位)/ARM(32 位)双指令集,很好的兼容 8 位/16 位器件; 3)、大量使用寄存器,指令执行速度更快; 4)、大多数数据操作都在寄存器中完成; 5)、寻址方式灵活简单,执行效率高; 6)、指令长度固定。ARM 微处理器的在较新的体系结构中支持两种指令集:ARM 指令集和 Thumb指令集。其中,ARM 指令为 32 位的长度,Thumb 指令为 16 位长度。Thumb 指令集为 ARM 指令集的功能子集,但与等价的 ARM 代码相比较,可节省 30%40%以上的存储空间,同时具备 32 位代码的所有优点。ARM 架构包含了下述 RISC 特性:读取/储存 架构不支援地址不对齐内存存取(ARMv6 内核现已支援)正交指令集(任意存取指令可以任意的寻址方式存取数据 Orthogonal instruction set)大量的 16 32-bit 寄存器阵列(register file)固定的 32 bits 操作码(opcode)长度,降低编码数量所产生的耗费,减轻解码和流水线化的负担。大多均为一个 CPU 周期执行。为了补强这种简单的设计方式,相较于同时期的处理器如 Intel 80286 和 Motorola 68020,还多加了一些特殊设计:大部分指令可以条件式地执行,降低在分支时产生的负重,弥补分支预测器(branch predictor)的不足。算数指令只会在要求时更改条件编码(condition code)32-bit 筒型位移器(barrel shifter)可用来执行大部分的算数指令和寻址计算而不会损失效能强大的索引寻址模式(addressing mode)精简但快速的双优先级中断子系统,具有可切换的暂存器组有个附加在ARM 设计中好玩的东西,就是使用一个 4-bit 条件编码在每个指令前头,表示每条指令的执行是否为有条件式的,这大大的减低了在内存存取指令时用到的编码位。目前,有关 ARM 处理器应用较多的有 ARM7、ARM9、ARM9E、ARM10 及StrongARM 等系列。本文中选用的是 ARMv7-A 架构的 Cortex-A8 内核的芯片。ARM Cortex-A8 处理器是第一款基于 ARMv7 架构的应用处理器,并且是有史以来 ARM 开发的性能最高、最具功率效率的处理器。 ARM Cortex-A8 处理器复杂的流水线架构基于双对称的,顺序发射的,13 级流水线,带有先进的动态分支预测,可实现 2.0 DMIPS/MHz。Cortex-A8 处理器的速率可以在 600MHz 到超过1GHz 的范围内调节,能够满足那些需要工作在 300mW 以下的功耗优化的移动设备的要求;以及满足那些需要 2000 Dhrystone MIPS 的性能优化的消费类应用的要求。第 3 章 总体设计3.1 功能需求 根据项目需求,要实现的图像采集系统应该具有如下的功能:1.高性能: 设计是应尽量减少不必要的模块以及算法,使系统在对硬件的 依赖性上做到尽力最低。 2.高可靠性:由于图像采集系统会运用在各种环境下,又饿环境很恶劣,因 此需要系统具有高可靠性高稳定性以及长期连续工作的能力。 3.实现对采集现场的图像实时采集。 4.实现将实时采集的图像显示在液晶显示屏上。5.采集的图像应该满足后期图像处理的需求。3.2 工作原理如图 2-1 所示,在采集图像时,首先光线会照射到被拍摄物体上,物体将光线反射到 USB 摄像头中的 CMOS 传感器,传感器中的感光二极管接收到光照,产生模拟的电信号,经过预中放电路放大、AGC 自动增益控制,于由图像处理芯片处理的是数字信号,所以经模数转换到图像数字信号处理 IC(DSP) 。同步信号发生器主要产生同步时钟信号(由晶体振荡电路来完成) ,即产生垂直和水平的扫描驱动信号,到图像处理 IC。然后,经数模转换电路通过输出端子输出一个标准的复合视频信号,按照寄存器中的配置处理以后的图像数据通过ARM 芯片将图像格式转换后控制存入内存中缓冲,当采集完一帧数据后,处理器从缓冲数据中读取数据然后通过显示接口显示到液晶显示屏上。 被摄物体 USB 摄像头 图 3-1 系统框图3.3 软硬件规划3.3.1 硬件规划硬件部分包括嵌入式处理器、图像采集模块、图像显示模块。嵌入式处理器是整个嵌入式系统的核心部分。目前世界上的嵌入式处理器早已超过 1000 种,不同的处理器有各自不同的功能以及优势。低成本、低功耗、高性能是嵌入式应用的首要要求。ARM Cortex-A8 控制器是第一款基于 ARMv7架构的应用处理器,并且是有史以来 ARM 开发的性能最高、最具功率效率的处理器。本文选择三星公司生产的 s5pc100 芯片作为本项目的主控芯片。并且使用华清远见所生产的 FS_s5pc100 开发板作为硬件平台,本文忽略无用的模块,模拟实现嵌入式最小系统。图像采集方面,本文选择的是 CMOS USB 摄像头,选择这类摄像头的原因是USB 摄像头成本低,极其易于购买,使用方便。CMOS 摄像头可以直接输出数字信号,方便对于图像的采集以及处理,在短时间内完成系统的功能设计。图像显示方面,选择 LCD 液晶显示屏,满足显示成本并且达到显示要求。3.3.2 软件规划软件是针对需求而编写的适合用于本系统的专用程序,本设计初步将其大体分为底层驱动程序以及顶层业务程序。本文中顶层软件是基于 Linux 操作系统之来设计,用 Linux C 语言实现。首先,基于操作系的软件开发更易于程序的研发设计。本文中,基于开发板的项目设计需要搭建嵌入式开发平台,首先需要烧写与开发板适合的 Bootloader 对开发板硬件进行初始化,然后就是嵌入式开发的核心:进行文件系统、LCD 以及 USB&摄像头驱动的移植。对于 PC机开发环境,需要安装嵌入式交叉编译工具链。在此基础之上设计顶层软件。首先需要移植关于图像操作的函数库jlib,然后通过摄像头驱动 v4l2 提供的ARM 处理器LCD 液晶显示屏函数以及命令对摄像头操作,包括图像采集,对图像的格式转换,然后通过操作帧缓存进行图像实时显示控制。这样设计,将硬件的初始化全部固定在底层驱动操作,在程序编写时就无需设计硬件,不仅易于程序设计,而且很好的实现了层次隔离划分,分工明确。第 4 章 硬件设计 4.1 开发板&主控芯片 s5pc10041.1 s5pc100 芯片介绍随着 ARM 公司在 ARM 11 内核架构基础上,升级推出了第一代基于ARMv7 指令集的 Cortex-A8 内核架构之后,三星也及时跟进推出了基于Cortex-A8 内核架构的 S5PC100 型处理器。除了内核架构更为先进之外,三星S5PC100 也采用了更为先进的 65nm 工艺制程技术,核心主频可达667MHz(最高可达 833MHz) 。如图 4-1 是 s5pc100 架构图解。S5PClO0 处理器采用 64 位内部总线构架,包括强大的硬件加速器,如:动态视频处理,显示控制和缩放。支持多种格式的硬件编解码 MPEFl24、H263H264、CV-1、D1vX。其硬件加速功能支持实时的视频会议和模拟电视输出,支持 NTSCDPAL 模式的 HDMI。提供了24bitLCD 接口、TVout 接口、Ca mera 输入接口、4 路串口、SD 卡接口、SPI、1OOM 网口、USB2O 一 0TG 接口,USBHost 接口、音频输入输出接口、按键接口、12C 接口等硬件资源,具有更高的主频和更丰富外设,能适用于对性能和处理能力有更高要求的嵌入式系统应用场合。UTS5PC100 专为消费类电子、工业控制、车载导航、行业 PDA 等电子产品的开发而设计,主要供广大企业用户进行产品前期软硬件性能评估验证、设计参考用。图 4-1 S5PC100 结构图如图 4-2 所示是核心处理器 S5pc100 的电路图:图 4-2 S5PC100 芯片电路图4.1.2 开发板简介FS_S5PC100 开发平台用三星公司先进的基于 Cortex-A8 内核 S5PC100 处理器设计而成。如图 4-2 所示,是开发板底板与核心板实物图。如表 4-1 所示是开发板硬件列表。在本文中,只用到核心处理器,NAND Flash,串口,USB 接口,LCD 50 针显示输出接口。图 4-3 开发板实物图表 4-1 开发板硬件列表 处理器 Samsung 公司的 S5pc100处理器 NAND Flash 256MB NAND Flash Nor Flash 2MB DDR2内存 256MB 显示输出接口 LCD 接口、VGA 接口、TVout 接口、HDMI 接口 视频输入接口 Camera 接口 串口 2路5线串口、1路3线串口 SD 卡接口 支持大容量 SD 卡 SPI Flash 用于 SPI 实验 温度传感器 基于 I2C 接口 电位器 用于模拟量输入 4路 USB Host 1路 USB2.0-OTG 蜂鸣器 用于 PWM 实验 100M 网络接口 DM9000AE WIFI 接口 Marvell8686 AC97音频接口 WM9714芯片 按键 6个按键 LED 4个 LED 音频功放接口 可直接驱动喇叭以下是每个模块的电路图:1)串口:(1) (2)图 4-4 串口电路图2)VGA 接口:(1)(2)图 4-5 LCD 接口电路3)USB 接口图 4-6 USB 接口电路图4.2 图像数据采集设备本文采用的图像采集设备是普通家用 USB 摄像头,如图 4-7 所示为本文采用摄像头实物图。最高像素可达 100 万。满足本文研究图像采集需求。图 4-7 图像采集设备实物图4.3 显示设备本文所用显示设备为 AUO 的 A043FW02 液晶屏,4.3 寸,电阻触摸屏。分辨率为:480*272,信号接口为:RGB|Paralle 。 图 4-8 LCD 显示屏 第 5 章 软件设计5.1 Linux & 开发环境搭建5.1.1 Linux系统及Linux内核简介一个完整的系统主要 5 部分组成:硬件、Bootloader、操作系统内核、操作系统服务和用户应用程序,用户应用程序是指那一个系统的组成些字处理程序、互联网应用程序或其它用户自行编制的各种应用程序;操作系统服务程序是指向用户提供的系统调用等接口程序,Bootloader 主要完成硬件检测和系统引导。操作系统内核是操作系统的主要核心部分,是整个系统的灵魂。操作系统服务程序、操作系统内核及 Bootloader 被看作是操作系统部分。Linux 内核主要由进程调度模块、内存管理模块、文件系统模块、进程间通信模块和网络接口模块 5 个模块构成如图 5-1 所示。图 5-1 Linux 内核系统模块结构及相互依赖关系Linux 是开放源代码的,Linux 操作系统设计本身具有的不同平台之间的可移植性,而且所需的存储空间也很小。Linux 内核是 Linux 最底层、最核心的部分,Linux 操作系统就是在 Linux 内核上发展壮大起来的,而内核的移植则是任何嵌入式 Linux 开发中最关键部分。所有的内核源程序都可以在usrsrclinux 下找到,大部分应用软件也都是遵循 GPI,而设计,遍布全球的众多 Linux爱好者又是 Linux 开发者的强大技术支持。5.1.2 Linux环境搭建步骤概述1)从网络上下载Linux源码及ARM平台上的补丁;2)给Linux内核打补丁,使其源码符合ARM的系统结构;3)对Linux内核进行配置与裁减;4)建立交叉编译环境;5)交叉编译和链接;6)最后通过一些手段把生成的映象文件烧写(安装)到我们目标平台中。5.1.3 Linux交叉编译环境搭建由于嵌入式系统没有足够的内存和存储资源来编译可执行代码,这要求建立好的交叉开发环境中进行交叉编译和链接。交叉编译环境就是在一个平台上生 成另一个平台的可执行代码,在同一个体系结构下可以运行不同的操作系统。 交叉编译开发环境一般由宿主机、目标机和两者之间通信信道组成。在开发过程一般使用 Intel 公司 X86 系列 CPU 作为宿主机,而 ARM 微处理器作为目标机。目标板和宿主机之间的通信连接方式通常可以使用串口、以太网接口、USB 接口以及 JTAG 接口等在宿主机上,可以安装开发工具,编辑目标板的 Linux 引导程序、内核和文件系统,然后在目标机上运行。如图 4-2 所示。 图5-2 交叉编译开发环境模型 Linux内核必须使用GNU的C编译器gcc来编译,而不是任何一种C编译器都可以使用。gcc编译器对标准C进行了必要的扩展,这使得它更适合开发操作系统内核。Linux内核与编译器的关系非常紧密,甚至不同的内核版本需要依赖于特定的gcc编译器。通常GNU工具以源代码的方式发行,针对不同的硬件体系结构,GNU通过网络向用户提供相应的软件开发包,开发者只需从ARM Linux的免费站点下载。 在http:/arm.linux.org.uk下载交叉编译包,在相应目录下解压,并设置系统环境变量PATH,编辑/etc/profile,在其中export PATH前加入交叉编译器路径,然后在终端中执行命令source etc/profile,这样系统每次都能自己找到已经设置好的交叉编译器包的路径,用户就能直接使用arm -one-1inux-gnueabi-gcc命令了。5.1.4 NFS与TFTP服务器搭建网络文件系统 NFS(NetworkFileSystem)最早是 SUN 开发的一种文件系统,它允许一个系统在网络上共享目录和文件。在系统有了网络以后,很多调试工作就能方便许多,NFS 的设计是为了在不同的系统问使用文件所以其通信协议的设计与主机及操作系统无关,当使用者想使用远程文件时,只要使用挂载命(mount)就可把远程文件系统挂载在自己的文件系统之下,这就使得系统对远程文件的使用和本地文件没有区别。Linux 系统支持 NFS,并且可以配置启动 NFS 网络服务。安装 NFS 服务以centos 步骤为例:(1) 在线安装NFS命令:yum install nfs-utils portmap(2) 配置NFS:vim etc/exports添加:/root/rootnfs Client_IP(rw,sync, no_root_squash) (3)设置NFS服务自启动。(4)在NFS-Server上为mountd, rquotad, lockd配置固定的端口因为NFS会为以上三个服务分配临时端口,所以很难在防火墙上控制要开放哪些端口。所以要将几个端口固定住。(3) 启动服务结果如图4-3图5-3 NFS服务启动成功效果图TFTP是一个传输文件的简单协议,它基于UDP协议而实现,但是我们也能确定有些TFTP协议是基于其它传输协议完成的。此协议设计的时候是进行小文件传输的。因此它不具备通常的FTP的许多功能,它只能从文件服务器上获得或写入文件,不能列出目录,不进行认证,它传输8位数据。传输中有三种模式:netascii,这是8位的ASCII码形式,另一种是octet,这是8位源数据类型;最后一种mail已经不再支持,它将返回的数据直接返回给用户而不是保存为文件。为系统移植时传输文件搭建服务器。TFTP服务器搭建步骤:(1)在线安装命令: yum install xinetd tftp tftp-server(2)修改配(3)重启服务(4)测试:5.1.5 Bootloader移植在嵌入式系统中,Bootloader 的作用与 PC 机上的 BIOS 类似,通过Bootloade 可以完成对系统板上的主要部件如 CPU、SDRAM、Flash、串行门等进行初始化,也可以下载文件到系统板上,对 Flash 进行擦除与编程。当运行操作系统时,它会在操作系统内核运行之前运行,通过它,可以分配内存空间的映射,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统准备好正确的环境。通常,Bootloader 是依赖于硬件而实现的,特别是在嵌入式系统中。因此,在嵌入式系统里建立一个通用的 Bootloader 几乎是不可能的,但是,仍然可以对 Bootloader 归纳出一些通用的概念来。以指导用户特定的 Bootloader 设计与实现。正确建立 Linux 移植的前提条件是具备一个与Linux 内核配套的、易于使用的 Bootloader,它能够正确完成硬件系统的初始化和 Linux 系统引导。ARM 处理器体系中,嵌入式 Linux 下常使用的 Bootloader 包括:BIob、vivi、U B00t、ARMb00t、RedBoot 等。本系统采用 uboot。然后,编译Bootloader,在 uboot 目录下配置系统相关的设置,执行:make menuconfig,再执行 make,就可以在当前目录下生成 u-boot.bin。在初次烧写 u-boot 时,系统利用 usb 线来烧录,整个过程需要 5 分钟左右。在以后的烧写中,一般利用 uboot 本身来烧录。设置好 tftp 服务器 ip,开发板 ip。利用 tftp 传输 u-boot.bin 文件到开发板。通过 nanderase 擦除,用 nandwrite 写入便可更新uboot。可以提高烧写的效率。5.1.6 Linux内核移植与配置(1)Linux2.6.35 内核配置Linux 内核的重要的特点是可移植性(Portability),支持大多数的硬件平台,在大多数体系结构上都可以运行。Linux26 的内核吸收了一些新技术,在性能、可量测性、支持和可用性方面不断提高。本系统移植的内核为其中的一个版本 Linux2.6.35。从网站上可以下载内核 linux2.6.35.tar.bz2 的源码包,使用命令 tar xzvf linux2.6.35.tar.bz2 将内核解压缩到指定的目录下。Linux 内核源代码是通过Makefile 组织编译的,进入该目录,用 vi 编辑器打开 Makefile 文件,修改其中内容:ARCH=arm 和 CROSS COMPILE=解压目录arm-none-linux-gnueabi-,ARCH 是指定此内核的体系结构是 arm 类型,CROSSCOMPILE 指定交叉编译器的类型为 arm-none-linux-gnueabi-,这样生成的映像文件就能在 ARM 上运行。在真正移植内核到 ARM 平台之前,还需要对内核进行配置和移植相应的设备驱动程序。(2) Linux2.6.35 内核配置编译在众多配置界面中 makexconfig 的界面最为友好,如果机器可以使用Xwindow,推荐使用这个命令,如果不能使用 Xwin-dow,那么就可以使用makemenueonfig。界面虽然比上面一个差点,总比 makeconfig 的要好多了。所有内核配置菜单都是通过 config.h 经由不同脚本解释器产生.config,在内核配置完成后就就会在当前目录下产生一个.config 的配置文件,当然也可以直接修改此文件来配置内核。选择相应的配置时,有三种选择,它们分别代表的含义如下:Y为将该功能编译进内核;N为不将该功能编译进内核;M为将该功能编译成可以在需要时动态插入到内核中的模块。在配置时,大部分选项可以使用其缺省值,只有小部分需要根据用户不同需要选择。选择的原则是将与内核其它部分关系较远且不经常使用的功能代码编译成为可加载模块,以减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不要选,与内核点紧密且经常使用的部分功能代码直接编译到内核中。配置完毕后用make命令编译内核,内核的编译就是一个非常简单的过程。执行:1)#make clean:这条命令是在正式编译你的内核之前先把环境给清理干净,保证没有不正确的依赖文件存在。2)#make dep:由于内核源码树中的大多数文件都与一些头文件有依赖关系,因此要将内核源码树中每个子目录产生的“depend”文件建立起依赖关系。3)#make zlmage:建立压缩的linux内核映像。编译完毕,在archarmboot目录下将会生成ARMLinux内核映像文件zlmage,这就是将要移植到目标机的内核映像文件4)#make modules:这条命令是编译在配置时选择为模块的,即选项前为M的。如果内核配置选项中有选择编译为模块的,就需要此命令。如果将来还要对内核重新进行编译,则需执行命令“makedistclean”,去除依赖关系并清除以前编译产生的文件,然后重复上述步骤即可。内核映像分为压缩的内核映像和未压缩的内核映像,压缩的内核映像通常名为zlmage,位于archarmboot目录中。而未压缩的内核映像通常名为vmlinux,位于源码树的根目录中。把这个映像文件下载到开发板中,开发板提供了一套比较完整的通用系统的外围设备,配置bootloader的启动参数就能运行起来linux2.6.35的内核。5.1.7 Linux文件系统(1)文件系统简述文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法。也指用于存储文件的磁盘或分区,或文件系统种类。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:与文件管理有关软件、被管理文件以及实施文件管理所需数据结构。从系统角度来看,文件系统是对文件存储器空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。Linux的文件结构是单个的树状结构.可以用tree进行展示。 在Ubuntu下安装tree(sudo apt-get install tree),并可通过命令来查看。图5-4 目录分区示例(2) 文件系统制作1)创建根文件目录进入到/opt/studyarm 目录,新建建立根文件系统目录的脚本文件create_rootfs_bash ,使用命令chmod +x create_rootfs_bash 改变文件的可执行权限,./create_rootfs_bash 运行脚本,就完成了根文件系统目录的创建。i.建立动态链接库 动态链接库直接用友善之臂的,先解压友善之臂的根文件包,拷贝lib 的内容到新建的根文件目录lib 内。ii.交叉编译BosyboxBosybox 是一个遵循GPL v2协议的开源项目,它在编写过程总对文件大小进行优化,并考虑了系统资源有限( 比如内存等) 的情况,使用 Busybox 可以自动生成根文件系统所需的bin、sbin 、usr目录和linuxrc 文件。 2)安装mkfs.jffs2的工具。i.安装MTD工具:本文使用的是mtd-snapshot-20050519.tar.bz2:ii.安装zlib库iii.制作JFFS2文件镜像mkfs.jffs2 -r /source/rootfs -o rootfs.jffs2 -e 0 x4000 -pad=0 x800000 n这样就会生成一个8M大小的rootfs.jffs2的镜像,它也正是JFFS2文件系统的镜像,关于这个命令行里的选项的内容,可以用man a mkfs.jffs2命令来查看内容。将rootfs文件拷贝到NFS工作目录中。开发板上设置启动参数挂载文件系统。将rootfs.jffs2文件下载到开发板,固化之后。修改启动参数便可。5.2 linux 设备驱动移植5.2.1 基础知识驱动硬件是操作系统最基本的功能,它为应用程序提供了统一的方式来访问各种硬件设备。设备驱动程序为用户屏蔽了各种各样的硬件设备,是内核的一部分,是操作系统最基本的组成部分,比如在 Linux 的内核源程序中设备驱动程序就占 60以上。因此熟悉驱动的编写是很重要的。Linux 有两种使用设备驱动程序的方式,分别是直接编译到内核中或在运行时加载(也就是内核模块。操作系统是通过各种驱动程序来驾驭硬件设备的。 本文中系统功能并不繁琐,采用将驱动直接编译进内核的方式,直接将硬件驱动程序写入内核的优点是用户可随时对它进行调用而无须安装,大大简化了操作。众所周知,Linux 把内存分为“内核空间”和“用户空间。操作系统内核和驱动程序在内核空间运行,可以访问内核空间,也可通过系统调用访问用户空间。而用户程序在用户空间中运行,只能访问自己的用户空间,对内核空间的访问具有严格的限制。内核模块 module,简单地说就是提供了某一项功能的程序段,这种程序段可以按需要随时装入内核空间和从内核空间卸载。因此内核模块是为了给内核动态增减功能而设计的,并不仅限于驱动程序。但在一个操作系统中,驱动程序是变化最大的部分,所以往往把驱动程序编译成内核模块。5.2.2 设备介绍1)字符设备字符设备是指存取时没有缓存的设备。可像文件一样访问字符设备,字符设备驱动程序负责实现这些行为。这样的驱动程序通常会实现open、close、read 和 write 系统调用。系统控制台和并口就是字符设备的例子,它们可很好地用“流的概念来描述。通过文件系统节点可以访问字符设备,字符设备和普通文件系统问的惟一区别是,普通文件允许在其上来回读写,而大多数字符设备仅仅是数据通道,只能顺序读写,当然也存在这样的字符设备看起来像一个数据区,可来回读取其中的数据。2)块设备块设备是与字符设备完全不同的另一种设备,它的服务对象不是以字节为单位,而是以一整块的数据为单位。应用程序在访问字符设备时一般都采用直接读写的方法,但在访问块设备时就要通过系统里的缓冲区缓存了。块设备上一般都容纳着文件系统,可以通过指定要读写的数据块对块设备进行随机访问,这与字符设备形成鲜明的对比。字符设备只允许进行顺序的非随机访问,因此它不能用于提供文件系统的存储。Linux 并不严格区分块设备和字符设备,甚至提供给它们的接口都是相同的。图 5-6 示出了字符设备和块设备的区别。图 5-5 字符设备和块设备的区别3)网络设备任何网络事务处理都是通过接口(可与其它宿主交换数据的设备)实现的。通常,接口是一个硬件设备,但也有像 loopback(环回)接口这样的软件工具。网络接口是由内核网络子系统驱动的,它负责发送和接收数据包。由于网络接口不是面向流的设备,一所以它不能像devttyl 那样简单地被映射到文件系统的节点上。Linux 调用这些接口的方式是给它们分配一个独立的名字(如eth0)。这样的名字在文件系统中并没有对应项。内核和网络设备驱动程序之间的通信与字符设备驱动程序和块设备驱动程序与内核间的通信是完全不同的。内核不再调用 read 和 write,它调用与数据包传送相关的函数。4)其它设备Linux 中还有一些设备不属于以上 3 类, ,如 SCSI 设备驱动程序。对于大多数情况来说,我们不太会编写这类设备驱动程序,因此这里就不做研究了。5.2.3 系统驱动在掌握了 Linux 设备驱动的基础知识以后便可以开始进行驱动的移植。对比于 PC 的驱动,嵌入式 Linux 驱动程序经过交叉编译后运行在嵌入式系统中上。1)USB Host 驱动本文采用 USB 摄像头采集图像数据。对应的就应该在内核中进行 USB 驱动的移植,USB 作为一个驱动层在内核代码中是很独立的一个模块,在往内核中添加 USB 的支持时,需要改动控制这部分代码编译连接的文件。USB 驱动分为USB 主机驱动和 USB 设备驱动。本系统中我们要使用摄像头,所以系统需要具备 USB 主机 Host 的驱动。如果系统的 USB 主机控制器符合 OHCI 等标准,则主机驱动的绝大部分工作都可以沿用通用的代码。针对本文中所使用开发板,十分类似于 s3c2410,对于本开发板的 USB 移植就在对 s3c2410 的 USB 驱动修改上进行。s3c2410 主机控制器驱动 hc driver 结构体中的大多数成员函数都是通用的 ohci_xxx0 数。编写适用于本文所用开发板的 USB 驱动,需要修改板文件,添加平台设备,配置内核,再进行内核编译。 2) V4L2 驱动Video41inux(简称 V4L),是 linux 中关于视频设备的内核驱动模块。现在已有最新的 Video41inux2,但还未加入 linux 内核,使用需自己下载补丁。在Linux 中,视频设备是设备文件,可以像访问普通文件一样对其进行读写。我们可以利用 Vide04Linux 获取摄像头的视频数据。Video4Linux 是 Linux 下用于获取视频数据的 API 接口。Video4Linux 是 Linux 下进行影像系统开发的核心。这里结合 Video4Linux的关键技术,简要说明如何在嵌入式 L
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!