1、摘要随着计算机、电子技术的迅猛发展,计算机己迈入了另一个充满机遇的后PC时代。人们开始越来越多地接触到一个新的概念一嵌入式系统。本文讨论了基于ARM为核心的嵌入式处理器和嵌入式实时操作系统对图像信息的采集、存储及处理方法。硬件部分,我们建立了以ARM处理器为核心的开发板,通过CMOs摄像头实时采集图像信息并通过液晶显示器显示。操作系统部分实现了实时嵌入式操作系统的开发和移植,并在系统上扩展了文件系统模块,使之支持图像信息的存储和更为广泛的应用开发。图像算法部分实现了图像采集、BMP编码、图像存储,以及对所生成的数字图像进行数字处理等功能。本系统经过测试运行稳定,即可以作为基础平台研究数字图像处
2、理领域的复杂算法,也可适用于更为广泛的嵌入式操作系统方面的研究。关键词:嵌入式系统驱动开发图像处理ABSTRACTWi由血development of the computer and electric technology, Thecomputer has stepped into a post-PC era firll of opportunities. More and morepeople has画d attention to a new concept Embedded System. This contextdiscusses about the Images collection
3、, storage and images processing比吨subject to Embedded Operation System and Embedded processor which arebased on ARM core.In the part of hardware, we build an embedded board. We use CMOS。.”。.lens collecting images and display images by LCD device. In the partof operation system, we develop and repot a
4、 real time operation system, andextend出。file management system, to support image storage and sustainextensive application and development.玩the part of image arithmetic, Irealize the function of images collection, BMP Unicode, images storage andthe processing of digital image which has been produced.
5、This system has been tested running stably, which are applied not onlyin basic platform to research complicated arithmetic of digital images.operation, but also in research for more extensive embedded operation叮川翔吐Key word.二Embedded System Driver Development Image Process长春理工大学硕士学位论文原创性声明本人郑重声明:所呈交的
6、硕士学位论文,基于ARM的嵌入式图像处理系统设计是本人在指导教师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。作者签名:主A -L 2or全年立月笠日长春理工大学学位论文版权使用授权书本学位论文作者及指导教师完全了解“长春理工大学硕士、博士学位论文版权使用规定”,同意长春理工大学保留并向国家有关部门或机构送交学位论文的复印件和电子版,允许论文被查阅和借阅。本人授权长春理工大学可以将本学位论文的全部或部分内容编入
7、有关数据库进行检索,也可采用影印、缩印或扫描等复制手段保存和汇编学位论文。作者签名:指导导师签名车年单月毕日又年立月L日第一章绪论当今计算机的发展进入了后PC时代,越来越多的嵌入式设备渗透到了我们的日常生活,嵌入式系统涵盖了智能家电、消费电子、通讯设备、军事等各个领域,发挥着其它计算机不可替代的作用。基于嵌入式技术的图像处理系统可用于工业控制、智能交通、小区监控等领域。互1.1论文应用背景及目的本论文基于汽车车轮轮毅识别项目,目前在车轮轮毅生产过程中,由于生产过程的复杂,单个车轮往往要经过几十道工序才能完成,在这个过程中无法实时准确的统计每个流水线单位时间内处理的工件数目,其次,对生产过程中产
8、生的不合格产品也大多利用人眼进行检测,产品质量不容易控制。本论文的目的是:基于嵌入式处理器和嵌入式系统,建立车轮轮毅图像处理系统,对各个流水线上车轮图像进行采集、显示并存储,进而完成图像的统计、识别等功能。目前对图像信息采集和处理方式主要有两种:1)利用CCD摄像机和图像采集卡,将模拟信号转换成数字信号,经PCI或其它总线由上位机进行图像处理。这种方法虽然利用了PC机硬件资源丰富、软件易于开发的特点,但会导致整个系统硬件连接复杂,不利于小型化,而且系统稳定性不高,需要专业人员定期维护。2)采用CCD或CMOs摄像机采集图像,利用DSP+FPGA进行处理,这种方法利用DSP的高速数字信号处理能力
9、和FPGA支持外设的能力,实现数字图像的采集和处理。这种方式确实可以实现高速视频采集和处理的要求,它的弊端就是软硬件往往针对于专用型号处理器和项目而开发,应用软件不容易移植,并且研发周期较长,软硬件成本都很高,不利于对图像处理速度、功能要求相对较低的项目采用。针对这两种情况,我们利用嵌入式处理器和实时操作系统,构建了图像处理系统,实现了图像的采集、显示、处理等功能。圣1.2俄入式系统的特点1)专用性强,面向特定应用。这是嵌入式系统与通用型系统的最大区别。嵌入式系统的个性化很强,软、硬件结合非常紧密,一般要针对硬件进行系统的移植。2)系统精简。嵌入式系统的软件代码要求高质量,高可靠性,由于嵌入式
10、系统设备所处的环境往往是长期无人值守或条件恶劣的情况,因此,其代码有很高的要求.3)嵌入式系统大多采用实时操作系统,而且软件要求固态存储,以提高速度。4)嵌入式系统需要专用的开发工具和环境,由于其本身不具备自主开发能力,即使设计完成以后,用户通常也不能对其中的程序功能进行修改,必须有一套开发工具和环境才能进行开发。嵌入式系统开发时有主机和目标机的概念,主机用于程序的开发,目标机作为最后的执行机,采用交叉编译的方式开发应用程序。5)嵌入式系统的硬件驱动程序必须定制,并且和嵌入式操作系统以及应用程序完全绑定在一起构成一个不可分割的整体。因此,不同的嵌入式产品在开发时必须设计符合自己系统的设备驱动程
11、序。互1.3嵌入式开发与传统式开发的区别首先,嵌入式处理器与其它处理器相比集成了丰富的硬件控制器,既不需要像DSP一样扩展众多的硬件控制芯片,也不需要FPGA自主设计门电路,嵌入式处理器通过内部集成的硬件控制器可以轻易扩展多种类型的存储设备、图像声音采集设备、显示设备等,简化了硬件之间的连接,这样就降低了开发成本,有助于提高系统的整体稳定性。并且随着嵌入式系统的普及,嵌入式处理器价格已经非常便宜,以我们采用的ARM940T核心的嵌入式处理器来说,单颗成本低于5美金。其次,它不需要像传统系统开发一样让设计者关注系统运行的每个细节,在操作系统稳定运行后,设计人员就可以更多的关注应用功能的实现,系统
12、硬件由操作系统自行管理,此外,操作系统还管理内存资源的分配回收、多任务的协同运行、任务的建立删除、系统的异常处理等。再次,在嵌入式开发中除了与系统启动相关的一部分代码采用汇编语言编写外,大部分的操作系统代码和应用程序代码由高级语言C或C+编写,高级语言可以实现更复杂的算法和控制。本论文讨论的Nucleus操作系统Fn.%的代码都用C语言编写,非常容易进行移植和剪裁,这样也提高了软件代码的重用性。而且嵌入式开发中的编译、调试环境成熟稳定,有利于模块化设计和团队协作开发。典型嵌入式系统开发的流程可以描述如下:图1.1嵌入式系统的开发流程互1.4本论文主要工作及研究意义本论文完成了系统硬件平台的搭建
13、和大部分的软件设计。硬件方面的主要工作是:建立了ARM处理器为核心的嵌入式开发板,设计图像采集模块、显示模块和存储模块。软件部分完成了:引导装载程序的编写、嵌入式操作系统的移植和配置、以及对轮毅图像的采集、显示、存储、及简单数字图像处理等功能。基于本论文构建的嵌入式图像处理系统运行稳定,可以满足车轮轮毅图像采集、显示、存储的要求,并且硬件体积小巧、成本低廉,软件可重用性高。本系统除了在本项目中应用外,软件稍做改动即可用在智能小区监控,智能交通等需要对图像信息进行采集、处理的应用领域,也可作为基础平台研究图象压缩算法或数字图象处理的相关算法。第二章系统的工作原理及总体设计方案荟2.1功能需求根据
14、项目需求,我们要实现的图像处理系统应具有如下功能:1.高可靠性,由于工厂的生产环境比较恶劣,因此要求系统具有高可靠性和连续工作能力。2.高性能,设计时应尽量减少操作系统中不必要的模块、优化图像算法,使系统在对硬件的依赖性上做到最低。3,实现对车轮轮毅图像的实时采集。4.实现对轮毅图像的显示功能,便于实时监控。5.将图像以BMP编码格式保存成文件形式,以便于对图像的后期处理及查看,此功能计划采用大容量的Flash存储芯片和文件系统实现。5.采集图像的质量应该满足后期数字图像处理的要求。鑫2.2系统工作原理如图2.1所示,本系统主要由硬件平台、嵌入式操作系统、图像处理算法三个部分组成。硬件部分以A
15、RM核的嵌入式处理器为核心并扩展了大容量SDRAM存储器,系统通过图像采集模块实时采集车轮轮毅图像,在采集图像的同时使用显示模块实现图像信息的显示,并以大容量的FLASH存储器作为轮毅图像的存储设备。嵌入式操作系统为底层硬件提供驱动支持、内存管理、中断管理以及图像处理任务管理等,系统启动后首先通过引导程序启动操作系统完成硬件的初始化,然后通过操作系统提供的任务管理模块建立图像采集任务,分配内存、将图像采集模块采集到的图像信息存储在存储器的视频缓冲区中,再通过软件算法将显示缓冲区的图像信息写入LCD缓冲区中,完成对图像的实时显示,最后通过数字图像处理算法将缓冲区中的指定图像进行编码、存储及数字图
16、像处理功能。9)v软件匕一图像处理算法-.-,.-.-.,-.:一1一,1.weesesJ,1.J一文件系统图形用户接口嵌入式操作系统嵌入式操作系统内核(if务管理、内存管理、时钟管理等)底层驱动模块11 -。-1。;-1-.一匣亚片井瓜vSDRAMWAA;I)E#一仁耀 iA一万(ARM940T)图2.1嵌入式图像处理系统的组成互2.3系统软硬件规划互2.3.1硬件部分硬件部分包括嵌入式处理器、图像存储模块、模块等。嵌入式处理器是整个嵌入式系统的核心部分。图像采集模块、显示目前,世界上的嵌入式处理器己经超过了1000种,30多个系列。不同的处理器有其不同的功能和优势。低成本、低功耗、高性能是
17、嵌入式应用的首要要求。ARM公司是专门从事RISC技术芯片设计开发的公司,作为知识产权核(IP)供应商,再心公司本身不直接从事芯片生产,靠转让设计许可由合作公司生产各具特色的芯片,世界各大半导体生产商都从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。ARM9系列处理器是ARM公司近年来主推的系列,采用ARM v4T指令集,5级流水线结构的哈佛结构,主频200MHz,处理功能强大,性价比极高,已经广泛用于消费电子,工业监控等各个方面。我们选择以ARM940T处理器为核心的TOC761处理器作为嵌入式处理器。在图像采集
18、方面,我们选择了CMOS摄像头作为图像采集模块,选择CMOS摄像头的原因是CMOS摄像头可以直接输出数字信号,方便我们对图像的采集和处理,在短时间内完成系统功能设计。其次,CMOS摄像头成本低廉,并且采集速度和效果可以达到要求,降低了硬件成本。外围设备是嵌入式系统中完成存储、通信、调试、显示等辅助功能的部件。ARM9系列处理器已经集成了丰富的硬件控制器,这样我们就可以在其之上直接扩展硬件设备。根据需求我们扩展了大容量Flash存储器作为图像信息存储介质及程序固化设备、SDRAM芯片作为系统内存及显示缓冲、并扩展了液晶显示器作为显示设备。互2.3.2嵌入式操作系统嵌入式操作系统不仅具有通用操作系
19、统的功能,如向下提供与硬件交互的接口,管理复杂的硬件资源,向上提供对用户的接口(如图形界面、库函数API等),同时还在系统实时性、硬件依赖性、软件固化性及应用专用性等方面具有自己的特点。常见的嵌入式操作系统有Linux, WinCE, VxWorks等。Linux是源码完全开放的操作系统,可以支持x86,ARM,MIPS等二十几种平台,Linux的源代码由全世界的Linux爱好者共同研究开发并维护,Linux系统的优点是内核稳定、驱动支持广泛,缺点是内核系统结构复杂,目前最新的2.6.20核心已经超过了七百万行代码,庞大的内核不便于我们的项目应用。WinCE是微软开发的嵌入式操作系统,它继承了
20、,indoors友好的图像界面和开发环境,但是使用WinCE系统要交纳高昂的版权费用,并且,WinCE对硬件要求很高,至少需要64MB的程序存储器和64MB内存才能顺利运行。VxWorks是一款高实时性的嵌入式操作系统,它是源码不开放的,多用于航空航天等对实时性要求较高的环境。典型的嵌入式操作系统由以下几部分组成:1。底层驱动模块底层驱动程序提供对硬件的直接管理以及为操作系统和硬件的连接提供接口,复杂的嵌入式操作系统己经提供了对大多数硬件的有效支持,如Linux, WinCE可以容易的扩展大多数的硬件设备。驱动的编写包括对寄存器的管理,中断管理、时钟设置、配置地址映射空间等等。2.任务管理模块
21、任务也称为线程,是一个简单的程序,该程序可以认为CPU完全只属于该程序自己,在操作系统中的任何操作都要申请任务,执行完后要释放任务所占内存,任务通常有五种状态,即运行态、睡眠态、就绪态、等待态、中断态。下图表示了任务在这几种状态之间的变化过程:等特状态s, “ C R:一 “ ifil#R -“ Mr#Rs火/一一/一/一火一/图2.2任务状态图任务管理包括任务的建立、删除、挂起、恢复以及任务切换、改变任务的优先级等,任务管理是操作系统提供的最基本的功能之一。任务管理模块是否成熟完善也直接决定了操作系统的实时性、稳定性,以及操作系统的应用范围。3.任务通信模块此模块提供了任务与任务之间通信的方
22、式,任务之间传递信息的方式通常有两种,一种是通过全局变量传递,另一种是发消息给另一个任务,在使用全局变量时,必须保证每个任务或中断服务子程序独享该变盆,中断服务中保证独享的唯一办法就是开关中断,嵌入式操作系统大多使用消息邮箱和消息队列的手段来保证任务之间的同步。4.内存管理模块此模块提供对系统内存资源的管理和配置,包括内存资源的分配,收回等。嵌入式操作系统为了保证内存在使用中不产生碎片、滋出,通常提供一个内存控制块结构体对内存进行管理。结构体一般包括内存的起始地址指针、指向下一个空余块的指针、内存大小、分区内内存块的数量等。有些嵌入式处理器内部集成了内存管理单元(MMU),利用内存管理单元可以
23、对程序存储器及系统资源提供更有效的保护。对内存的有效利用直接决定了操作系统是否能够稳定长期的运行。5.时钟管理操作系统需要周期性的信号源来实现时间延时和确认超时、以及给操作系统的各个任务提供定时中断。时钟节拍的实际频率是根据应用程序的需要指定的,时钟节拍的频率越高,系统负荷越重。6.文件系统文件系统完成对用户数据的管理,文件系统可以在存储设备上完成对各种不同格式数据的存储,如图像文件、文本文件、视频文件等,也可以实现对文件的管理,如:新建文件、删除、重命名等。此部分对于我们图像处理系统中图像信息的保存、编码及后期处理是十分必要的,我们按照FAT文件系统的思想构建系统的图像存储方式。我们最终选择
24、的是开放源码的Nucleus操作系统,此系统具有高实时性、多任务、内核代码量小、易于移植等特点,我们在此系统的基础上进行扩展和移植,满足了图像处理系统的需要。第四章将深入讨论Nucleus系统各个组成部分及实现方式.万2.3.3应用程序应用程序是针对需求编写的只适用于本操作系统的专用程序,由于有操作系统的支持,在应用程序的开发过程中开发者只需要关注软件功能的实现,而不用注意具体的硬件细节。如果操作系统相同,应用程序可以很容易移植到其它硬件环境。根据需求,本系统的应用程序开发主要是对图像采集任务和图像处理算法的研究,包括两部分:首先是利用建立的嵌入式平台和操作系统实现对图像信息的采集、显示、编码
25、、存储以生成数字图像文件,其次,对生成的数字图像文件进行处理,包括灰度化、二值化、边缘检测等。鉴3.1嵌入式处理器组3.1.1 TCC761的体系结构我们选用的嵌入式处理器是基于ARK940T核心的TCC761处理器。TCC761处理器除了集成ARM9核心外,还集成了常用的硬件控制器,它的体系结构如下图:图3.3 TOC761功能框图主要包括以下部分:1) 32/16位结构体系和ARMv4T指令集体系2)独立4KB指令和4KB数据缓存的哈佛结构,主频可达200MHz3) 4K Bytes的BOOT ROM空间和64K bytes的内部SRAM存储器4)丰富的片上设备,包括:存储器控制器、USB
26、控制器、LCD控制器、IT总线控制器、2通道DMA, JTAG调试等。5) ARM高速系统总线(AHB)和外设总线(APB)6)中断控制器提供两种模式,通用中断模式(IRQ)和快速中断模式(FIQ). FIQ可以中断IRQ以保证系统的实时性,共19级中断源包括:4个定时器中断,1个看门狗中断、2个DMA中断、1个It中断等。互3.1.2 TCC761的运行模式和大多数的ARM9核处理器一样,TCC761支持7种运行模式,如表3.1,大部分的应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源不能被访问。除了用户模式外,其余的所有六种模式成为非用户模式,或特权模式:其中除去
27、用户模式和系统模式以外的5种模式又称为异常模式,常用于处理中断或异常以及需要访问受保护的系统资源等情况。系统产生异常后,会跳到相应的异常中断向量表的相应处理程序。可以通过修改状态寄存器(PSR)的低5位来改变处理器的运行模式,也可以通过外部中断或异常处理改变。表3.1处理器的运行模式名称功能用户模式(USR)ARM处理器正常的程序执行状态快速中断模式(FIQ)用于高速数据传输的中断处理请求通用中断模式(IRQ)通用的中断处理请求管理模式(SVC)操作系统使用的保护模式数据访问终止模式(ABT)当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护系统模式(SYS)运行具有特权的操作系统任务
28、未定义模式(UND)当未定义的指令执行时进入该模式,用于支持硬件协处理器的软件仿真互3.1.3 TCC761的工作状态从编程的角度看,TCC761处理器的工作状态有两种,并可以在两种状态之间切换:1.第一种为ARM状态,此时处理器执行32位的字对齐的ARM指令。2.第二种为Thumb,此时处理器执行16位的、半字对齐的Thumb指令。在程序的执行过程中,微处理器可以随时在两种工作状态之间切换,并且状态的转变并不影响处理器的运行模式和相应寄存器中的内容。芬3.1.4 TCC761的地址分配在ARM体系结构中,系统上电或复位后,处理器将从地址0x0处取得第一条指令。因此上电时,0x0地址处必须是非
29、易失性的ROM。但是为了加快操作系统内核运行速度,我们需要把中断向量表及系统内核复制到SDRAM中去,然后把SDRAM的地址基址重新映射到0x0处,这就是地址重映射过程(Remap)。在处理器的存储器控制器中有专门的控制器来进行地址重映射的切换。TCC761处理器采用存储空间和控制器统一编址的方式,其地址分配如下,0x00000000一OxOFFFFFFF如果Remap位为0,由ROM占用,如果Remap为1,分配给其它存储设备,如果任何设备都不占用此区域,则分配给内部SRAM占用0x20000000一Ox2FFFFFFF SDRAM存储器占用0x30000000一Ox3FFFFFFF内部S占
30、用0x40000000一Ox4FFFFFFF外部SRAM占用,由片选ncSO决定0x50000000一。x5FFFFFFF IDE设备占用,由片选ncsi决定.0x60000000一Ox6FFFFFFF Flash设备占用,由片选nCS2决定0x70000000一Ox7FFFFFFF ROM占用,由片选nCS3决定0x80000000一Ox8FFFFFFF硬件控制器使用OxE000000C一OxEFFFFFFF Boot ROM占用OxF0000000一OxFFFFFFFF SDRAM控制器占用硬件控制器的寻址基址是0x80000000,表3.2显示了我们用到的硬件控制器偏移地址分配,其它申口
31、、USB, ECC等控制器由于本系统未使用,在本论文中暂不讨论。表3.2外设硬件控制器地址分配地址偏移设备名称0x100一OxlFF中断控制器0x200一Ox2FF计数器0x300一Ox3FFI/00x400一Ox4FF时钟和电源控制器0x800一Ox8FF12C控制器OxB00一OxBFF摄像头控制器OxE00一OxEFFDMA控制器OxF00一OxFFFLCD控制器互3.1.5 TCC761的启动处理器的启动模式分为五种,通过外部跳线选择,分别是:USB模式、NAND Flash启动模式、NOR Flash启动模式、刀AG模式、NOR Flash不加密启动模式。我们在调试时使用JTAG模式
32、进行操作系统的远程下载调试及仿真。使用这种模式时,处理器关闭指令缓存(I-Cache )、数据缓存(D-Cache)和BUFFER,用户可以对处理器内的保护区域享有访问和修改权限。在用JTAG调试完操作系统内核后,需要将目标程序固化到Flash中以实现系统的独立运行,这时候可以将跳线设置为NAND Flash启动模式或NOR启动模式完成系统的独立运行。图3.4描述了TCC761启动时需要的时序。nRESET拉高后,启动的模式由GPIO B 24, 22, 21选择。_D0000(工00000(一汉不,一04 .1l,画1尸B卜q一xtadg b the appfcattmtBB启动需要保持的时
33、间。最小lOnstBS设置启动模式需要保持的时间。最小IonstRST电派重启动需要保持的时间。根据晶振,典型的是10 Ps图3.4处理器的启动时序奋3.1.6 TCC761的内部存储器TCC761内部有64K bytes的SRAM存储器,可作为通用内存使用,SRAM的空间被映射在Bank3(Ox30000000-Ox3FFFFFFF)地址段,如果Remap后没有任何存储设备占用BankO (0x0-OxOFFFFFFF)段地址空间,则将SR映射在BankO段。处理器还集成了4K bytes的ROM存储器,可用来引导操作系统初始化。Boot ROM被映射在BankE (OxEOOOO000-O
34、xEFFFFFFF)地址段,系统复位后,MCFG寄存器的Remap标志位将清0,此时,处理器将ROM映射在BankO地址段,地址重映射过程后,处理器会将BankO地址段分配给其它存储器,完成操作系统的引导。系统所有的存储器资源都由处理器的存储器控制器控制。互3.1.7 TCC761的存储器控制器TOC761处理器通过存储器控制器来管理不同类型的存储设备,可以支持的外部存储器类型包括Flash(NAND, NOR)、ROM, SRAM等。存储器控制器的地址基址是OxF00000000系统通过MCFG寄存器完成对外部存储器的配置,MdiG的地址是,OxF0000008。如表3. 3, MCFG用低
35、16位来完成对存储设备的初始配置。表3. 3 MCFG控制器311”,1281 271 261 252423L22 -1211 2o”18 117116盖书沉x网网幼121110,I。7II国冈团2m团画网X日WEH刃W劝了1公圃劝SSRF冈n在操作系统启动前,就要配置此寄存器,包括:配置SDRAM使能标志位(SDEN)和内存总线宽度(BM)位为16位、配置数据总线模式为输入模式,在系统调式时要打开JTAG标志位等,可以通过改变此寄存器的重映射标志位(RM)来完成地址重映射过程。此外,处理器还提供了专用的寄存器组,完成对相关存储器控制器的配置,这些寄存器在下面部分详细讨论.石3. 2 SDRA
36、.存储器扩展络3.2.1动态随机存储器概述动态随机存储器(DRAM)是易失性存储器,掉电后数据消失,不能长久保存,但与ROM不同的是,它的随机读写速度非常快,写入数据之前也不需要进行擦除。我们采用的SDRAM芯片是K4S281632F,具有16M Bytes的存储空间,空间组织结构是2M X l66it X2Bank,所有的输入和输出操作和时钟上升沿同步。在嵌入式系统中,系统启动后会将系统内核放在SDRAM中运行,也包括数据区、堆栈区、显示缓冲区、图像缓冲区等,以供快速读写的儒要。调试时为了调试方便,我们将编译好的二进制内核文件直接下载到SDRAM中进行仿真调试,调试成功后再烧录在ROM中。在
37、芯片连接方面,如图3.5, SDRAM数据线DQ0:15分别和处理器的XD 0:15相连;地址线A0:1幻分别和处理器的地址线XA0:1幻相连;BAO, BAl分别接XA22和XA23来选择2个Bank地址:时钟和时钟使能分别连接SD CLK和SD CS;通过LDQM和UDQM在读模式中控制输出缓冲器和在写模式下输入数据。通过行地址选通RAS、列地址选通CAS和写允许信号死,来选择内存单元阵列中的某个具体地址进行读写操作。尽管DDRAM以16位为存储单元,由于L阅M和UDQM信号的作用,系统仍可以按字节的方式访问。图3.5 %4S281632F与TCC761的连接图互3.2.2 DDRAM控制
38、器TCC761处理器内部集成了DDRAM内存控制器,可以提供SDRAM的定时刷新逻辑,DDRAM控制器通过SDCFG, SDCMD, CLKCFG等寄存管理,控制器可以支持16M到512M容量的DDRAM存储芯片。SDCFG控制器的地址是OxF0000000,系统调式阶段,由于要把目标文件(操作系统内核)直接下载到DDRAM中完成系统启动,因此在BootLoader启动完成后手动将SDBASE位的地址映射在BankO地址段内,也就是修改SDBASE位。在设置此寄存器的任何控制位之前,要注意DRAM使能位MEN,在改变参数的时候应该先禁止SDEN,然后改变寄存器的值,再打开SDEN位。SDCFG
39、寄存器的标志位如表3.4.表3.4 SDCFG寄存器冈冈四湘刀邓!乃124刀!刀1u加”场17:同冈汉义肚今5E犷获印叫s11s网13121110,I.75冈团团10丽即研.J石阴网,在实际系统中,我们将SDRAM的参数配置成以下值:CAS Latency二2 cyclesCAS Width二9 bit以S Width二12 bitBus Width=16 bitSDBASE=0x00000000t即二7 cyclestRCD = 2 cyclestRD=2 cyclestRP = 7 cyclesRefresh = (512+15) cyclesSDCMD是SDRAM指令控制器,地址OxF0
40、000024,这个寄存器实现对SDRAM命令的存储,当这寄存器被写入时SDRAM的输出引脚也会同步输出。这个寄存器只提供对其写入的功能,并且所有写入的数据要保证是一个合法的SDRAM命令。CLKCFG寄存器是内存时钟控制器,地址OxF0000020,这个寄存器的功能是设置SDRAM的时钟频率。本系统中设置SDRAM的频率为IOOMHz.SDRAM存储器要在系统启动前的Boot Loader阶段进行初始化,即系统在每次启动未进入操作系统C语言入口之前,就配置好SDRAM的相关参数,而且必须在中断使能或使用堆栈的操作之前完成,这个过程通常用汇编语言编写。在Remap位为被置1后,BankO地址段变
41、由SDRAM设备映射,Boot ROM的地址被映射在OxEOOOOOOO.互3.3图像采集模块设计在本系统在调试过程中采用CMOS摄像头作为图像信息的采集设备,CMOS摄像头可以直接输出数字信号,方便系统集成和功能调式。如果产品改用CCD摄像机,软件只需要修改对传感器控制器的初始化代码就可以直接支持。表35引脚定义及处理器接口引脚名处理器接口功能DATA0:15数据信号GPIO A31:16数据信号,实现16位颜色的显示HSYNC线同步信号GPIO B17高电平表示新的一行的开始VSYNC帧同步信号GPIO B18高电平表示新的一帧的开始LCLK时钟信号GPIO B19时钟上升沿有效VDD数字
42、电源Vcc5V电源VDEN片选控制GPIO B20表示是否开启TFf输出圣3. 4. 2 LCDC控制器处理器通过液晶控制器(LCDC)支持液晶显示,可以支持的显示方式主要有16位TFP显示方式,4/8位STN显示,1/2/4位单色STN显示,8/16位STN彩色显示等,分辨率最高可以支持1024x1024,我们采用的是TFP 16位RGB565显示,即每个像素用l66it表示,由从低位到高位的分别代表红色R0:4,绿色G5:10,蓝色B11:15. LCD控制器的结构如图3.10.rl.1.,.图3. 10 LCD控制器结构框图显示图像时,控制器通过帧缓冲结构实现对图像信息的显示,帧缓冲结构
43、就是在系统内存中划分出一段内存空间作为显示缓冲区,ARM处理器可以直接读/写该段显示缓冲区,此段空间由LCD控制器以每隔25ms的周期定时刷新,刷新时LCD控制器通过Db1A中断请求占用系统总线,把待显数据从显示缓冲区传送到LCD内部控制器,数据经过LCD内部的控制器转换成液晶扫描数据的格式,完成一帧信息的显示。也可以手动刷新LCD控制器完成信息显示。使用帧缓冲结构前,要对控制器的缓冲地址寄存器BAO进行设置。本系统设置的显示缓冲区设置在0x100地址开始的230K内存中,空间建立后,将要填充的16Bit的点颜色数据写到内存区域的相应地址,写完后再通过刷新LCD指令刷新或等待控制器自动刷新,L
44、CD就会显示下一帧的数据。在配置LCD控制器时应注意,液晶频率(LCLK)应该比系统主时钟(HCLK)频率低,否则液晶不能正常工作或者由于FIFO速度的问题产生数据传输错误。13.4.3 LCD驱动编写在LCD底层驱动方面我们要编写液晶初始化函数InitLCD O。部分程序代码如下:void InitLcd(void)IRSelectIRQ(INT_LCD);/设置中断方式为IRQ方式IRDisableLCD O;/禁止LCD中断LcDisable();/关闭LCD控制器Init Lcd IO ();刀初始化控制器的各项参数LcdClearAl10:/清除显示缓冲区LeSetBASE(LCD
45、BUF ADDR):刀设置缓冲区地址CkEnablePXCLK O;刀打开LCD时钟使能LcEnable();刀启动LCDLCD控制器初始化函数Init Lcd_IO()的部分代码如下:void Init Lcd IO(void)GSEL A二GSEL AOxffff0000;/8位GPIOA初始化GIOCON一 A=GIOCON_A!Oxffff0000;/设置1/0为输出模式GSELes B = GSEL BOxOOIE000O; /8位GPIOB初始化GIOCON_B=GIOCON_B I Ox001E0000; /设I输出模式PXCLK=(1)+ 8)(6*64)/PLL_MHZ);刀
46、设置LCD时钟频率LcSetHTIME(10),(240), (20), (10):刀设置线同步LcSetVTIME(2), (320), (2), (2);/设置帧同步互3.生4点填充函数点填充是LCD显示驱动中最重要的构造函数,任何在液晶上输出的图形或者文字都是由点构成的,将摄像头将采集到的图像信息通过LCD显示也通过此函数完成,我们构造的点填充函数的部分代码如下:void LcdFillPixel(S32 Dx,S32 Dy, U8 Red, U8 Green, U8 Blue)验证显示范围不超过屏幕大小(Dx=32011 Dy=240)return刀if./计算要填充的点位置Index
47、=Py*320+Dx;ptr=W6 *)(U32)LCDes BUF ADDR+(Index3) +1l)!(Green2) +5)(Blue3);在点填充函数的基础上,我们可以扩展更复杂的图形构造函数,如:画线段,画圆、及复杂的弹出菜单、复选框等,此部分与我们项目需求关系不大,所以暂不详细讨论。互3.5图像存储模块设计图像存储模块完成对图像流的保存任务,根据系统需求,我们采用大容量的NAND Flash存储芯片作为存储介质,并在上面构建文件系统,以实现对图像文件的管理功能.蚕3.5.1 NAND Flash概述Flash闪存是非易失存储器,可以对存储器单元块进行擦写和再编程。任何Flash器
48、件的写入操作只能在空或已擦除的单元内进行,所以在进行写入操作之前必须先擦除。NOR和NAND是目前两种主要的非易失闪存技术。NOR Flash存储器的容量小,写入擦除速度较慢,但其随机读取速度较快,程序可以在芯片内执行,因此在嵌入式系统中,多用在程序代码的存储。NAND Flash存储结构可以提供很高的存储单元密度,可以达到很大的存储容量。写入擦除速度也很快。但NAND Flash的缺点是必须要特殊的接口时序来操作,而且HAND Flash还要采用F,CC算法来保证数据的完整性。我们采用的是Samsung公司的K9K8GO8UOA存储芯片,它的特点如下:供电电源:2. 7-3. 6v存储器空间组织1GX8 Bit数据寄存器(2K+64 Bytes) X 8 Bit页编程每页(2K+64 Bytes) Byte块擦除每块(128K+4K Bytes) Byte写入时间200P s,块擦除1. 5 ms命令/地址/数据复用1/0口K9K8G08UOA与处理器连接如图3.11所示。