关闭

关闭

关闭

封号提示

内容

首页 基于S3C2440+OV9650的嵌入式视频系统设计.pdf

基于S3C2440+OV9650的嵌入式视频系统设计.pdf

基于S3C2440+OV9650的嵌入式视频系统设计.pdf

上传者: 没文化的老者 2012-05-18 评分 0 0 0 0 0 0 暂无简介 简介 举报

简介:本文档为《基于S3C2440+OV9650的嵌入式视频系统设计pdf》,可适用于IT/计算机领域,主题内容包含嵌入式技术  电 子 测 量 技 术  ELECTRONICMEASUREMENTTECHNOLOGY第卷第期年月 基于SCA的嵌入式视频系统设计周符等。

嵌入式技术  电 子 测 量 技 术  ELECTRONICMEASUREMENTTECHNOLOGY第卷第期年月 基于SCA的嵌入式视频系统设计周晓光 潘延涛(北京邮电大学自动化学院北京)摘 要:文中介绍基于嵌入式处理器SCA构建的视频系统,包括硬件体系结构和软件系统及其Linux驱动程序的设计流程。提出嵌入式视频系统的一般设计方法,满足目前嵌入式系统中对视频系统的多方面需求。关键词:视频系统驱动程序摄像头液晶显示屏DesignofembeddedvideosystembasedonSCAZhouXiaoguang PanYantao(BeijingUniversityofPostTelecommunication,SchoolofAutomation,Beijing)Abstract:ThispaperintroducedthedesigningflowofembeddedvideosystemwhichincludedhardwareandsoftwaresystembasedonembeddedprocessorSCAandconcerneddevicedriversonLinuxplatformItbringsforwardacommonlydesigningmethodforembeddedvideosystemthatsatisfiedwithvariousrequirementsofvideosysteminembeddedsystemKeywords:videosystemdriverprogramcameraLCD 基金项目:公安部年重点科技项目“基于移动终端的可视化警力布控追逃系统”资助项目 引 言嵌入式视频系统广泛应用于掌上终端、PDA、GPS自动导航、G手机等嵌入式领域,因此视频信息的采集和处理技术成为嵌入式系统的关键技术。由于视频信息的数据量大,加之人们对视频信息的实时性、图像质量的要求越来越高,而数字化视频系统可以充分利用计算机的快速处理能力,对图像信息进行压缩、分析、存储和显示,因此基于ARM或DSP的数字化视频处理系统正逐步取代传统的图像处理系统,并呈现强劲的发展趋势。本文针对三星公司的SCAARM处理器构建的嵌入式视频系统就是作为多功能警用手持终端机的组成部分实现的,文中将详细介绍该嵌入式视频系统的设计方法。 系统硬件设计利用SCA丰富的外部接口和ARMT出色的内核性能可以很方便地构建一个嵌入式视频系统的硬件平台,用于掌上终端等嵌入式设备。图是应用与多功能警用掌上终端的视频系统的硬件框图。该系统硬件工作流程为:SCA从NANDFlash芯片装载并执行引导程序,引导程序将NANDFlash中的内容拷贝到SDRAM中,拷贝完成后在SDRAM中执行软件系统主程序。其中SCA为了支持从NANDFlash装载引导程序,在NANDFlash控制器接口中装备了一个被称作“Setppingstone”的内部SRAM缓冲区,每当系统启动时,NANDFlash存储器中起始K字节的内容会被装入“Setppingstone”中并被执行。当启动视频系统工作后,CMOS摄像头采集到的图像数据经过Camera接口的个DMA通道,以不同的编码格式缓存在各自的pingpong存储器中,需要保存的图像被编码后保存到Flash中,用于显示的图像数据由LCD控制器通过专用的DMA通道将图像数据从pingpong存储器输出到LCD驱动器,这一过程是自动完成的,不需要CPU的参与,然后LCD驱动器根据特定的时序将图像完整地显示在液晶屏上。在实际的操作中可以通过IC总线接口对CMOS摄像头的工作参数进行设置。在这个嵌入式硬件平台中,主CPU是韩国三星公司的SCA。作为存储引导程序和嵌入式操作系统内核的NANDFlash是MSystems公司的MDD,容量是MB,还有足够的空间存储应用程序和重要的数据。SDRAM被用来运行操作系统、应用程序,以及作为各类数据的缓存,基于成本、图像数据量大、图像处理过程复杂等原因,本系统采用片SAMSUNG公司的KSE作为系统的SDRAM,实现位扩展,使数据总线宽度为bit,总容量为MB。Alex矩形        周晓光等:基于SCA的嵌入式视频系统设计第期CMOS摄像头配合SCA的CAMIF接口实现了视频原始数据的采集以及前期的一些处理工作。CMOS摄像头以其低廉的价格、实用的图像质量、高集成度和相对较少的功耗,在嵌入式视频系统中得到了广泛的应用。本系统采用的CMOS摄像头是OVFSL,该芯片具有的像素阵列大小。通过串行SCCB接口与SCA的IC总线接口相连,其曝光时间、白平衡、增益、饱和度、伽马校正等参数均可通过对芯片内部寄存器的读写进行设置。图 视频系统硬件平台在图像显示部分,本系统采用SHARP公司的寸TFT有源彩色液晶显示器LQQDB配合SCA的LCD控制器接口和触摸屏接口工作。由于在本设计中采用位方式,即RGB,因此无需对帧缓冲中的数据进行解码,所以LCD控制器不处理而直接把数据送到输出FIFO,输出FIFO再将数据通过引脚送到LZFC以驱动液晶显示。 系统软件设计软件系统建立在Linux平台上。 底层软件设计底层软件设计也就是设备驱动程序的编写,设备驱动程序需要完成的任务包括:对设备及对应资源的初始化和释放读取应用程序传送给设备文件的数据并回送应用程序请求的数据。这需要在用户空间、内核空间、总线及外设之间传输数据。 摄像头驱动CMOS摄像头驱动以MODULES的形式编写,因为MODULES形式的驱动可动态加载到Linux内核。程序的设计围绕下面的fileoperations数据结构体展开,主要编码工作就是具体实现结构体中相应的各个函数的功能。通过这些系统调用,应用程序就可实现对CMOS摄像头的打开、关闭、视频数据的读取、内部寄存器的设置等操作。staticstructfileoperationscamfops={     owner : THISMODULE,     llseek : nollseek,     open : camopen,     read : camread,     write : camwrite,     ioctl  : camioctl,     release: camrelease,}另外有个很重要的宏为:()moduleinit(initscov)它是驱动程序的入口点,相当于应用程序的main函数,用户进程加载该驱动程序时就会自动调用initscov函数,主要实现的功能有:产生下降沿脉冲,使OV复位初始化SCA的摄像头接口,主要是配置相关的寄存器,包括配置端口J的引脚功能,作为摄像头的控制和数据线将端口J的数据寄存器清零配置UPLL时钟频率及摄像头的输入时钟频率等配置端口E的控制寄存器,设置IC总线的控制功能,主要是设置IC总线的数据位、停止位、摄像头从地址、时钟频率等通过requestirq()系统调用向Linux系统申请注册中断,以便随时响应用户对摄像头设备文件的调用。()moduleexit(exitscov)用户进程卸载该驱动程序时,自动调用exitscov函数,主要完成进程地址空间、存储缓冲区的释放,关闭中断请求等工作。 LCD驱动本文将LCD作为字符设备加以访问和管理。Linux把显示驱动看作字符设备,把要显示的数据一字节一字节地送往LCD驱动器。在LCD驱动设计的过程中首要的是配置LCD控制器,而在配置LCD控制器中最重要的一步则是帧缓冲区(FrameBuffer)的指定。用户所要显示的内容皆是从缓冲区中读出,从而显示到屏幕上的。帧缓冲区的大小由屏幕的分辨率和显示色彩数决定。驱动帧缓冲的实现是整个驱动开发过程的重点。帧缓冲设备也属于字符设备,采用“文件层驱动层”的接口方式。在文件层为之定义的数据结构与第节介绍的摄像头驱动中使用的数据结构相同。其中的函数对具体的硬件进行操作、对寄存器进行设置、对显示缓冲进行映射。驱动程序中的主要结构体还有:()structfbfixscreeninfo:记录帧缓冲设备和指定显示模式的不可修改信息。它包含了屏幕缓冲区的物理地址和长度()structfbvarscreeninfo:记录帧缓冲设备和指定显示模式的可修改信息。它包括显示屏幕的分辨率、每个像素的比特数和一些时序变量。其中变量xres定义了屏幕一行所占的像素数,yres定义了屏幕一列所占的像素 第卷电 子 测 量 技 术数,bitsperpixel定义了每个像素用多少个位来表示()structfbinfo:Linux为帧缓冲设备定义的驱动层接口。它不仅包含了底层函数,而且还有记录设备状态的数据。每个帧缓冲设备都与一个fbinfo结构相对应。其中成员变量modename为设备名称,fontname为显示字体,fbops为指向底层操作的函数的指针。程序设计的主要工作是:()初始化SCA的LCD控制器通过写寄存器,设置显示模式和颜色数,然后分配LCD显示缓冲区。缓冲区大小为:点阵行数点阵列数用于表示一个像素的比特数。缓冲区通常分配在大容量的片外SDRAM中,起始地址保存在LCD控制寄存器中。本文采用的LCD显示方式为,位彩色,因此需要分配的显示缓冲区为KB。最后是初始化一个fbinfo结构,填充其中的成员变量,并调用registerframebuffer(fbinfo),将fbinfo登记入内核。()编写成员函数编写结构体fbops中对应的成员函数,以及实现下面个函数。staticintscfbgetfix(structfbfixscreeninfofix,intcon,structfbinfoinfo)staticintscfbgetvar(structfbvarscreeninfovar,intcon,structfbinfoinfo)staticintscfbsetvar(structfbvarscreeninfovar,intcon,structfbinfoinfo)对于scfbgetfix(),应用程序传入的是fbfixscreeninfo结构,在函数中对其成员变量赋值,主要是smemstart(缓冲区起始地址)和smemlen(缓冲区长度),最终返回给应用程序。而scfbsetvar()函数需要传入的参数是fbvarscreeninfo,函数中需要对xres、yres和bitsperpixel分别赋值为、、。 应用程序设计软件系统还包括上层的应用程序。本文使用的MiniGUI是一个轻量级的图形用户支持系统,它完全支持中文、提供了完备的多窗口机制、实现了窗口消息的传递机制、支持多种图形文件格式等,特别适合于作为嵌入式Linux系统的图形平台。在应用程序中,主要实现对摄像头数据的读取并在LCD上显示,以及对摄像头、LCD参数的配置,对图形数据的保存等。程序设计的流程如下:打开devscfb或devsccamera设备文件用structfileoperations结构体中定义的系统调用实现各种操作关闭设备文件。整个软件系统的层次结构如图所示。图 软件系统的层次结构 结 论基于SCA的嵌入式视频系统可作为一个模块被广泛应用到PDA、移动手持终端、支持多媒体应用的G手机、宽带可视电话、视频会议等系统中实现图像采集、处理和显示。在本文中介绍的设计系统的基础上,在SCA的UART接口上链接中兴公司的CDMAx模块以及适当的外围器件和应用程序,即可实现具有通讯、数据传输、照相功能的智能手机。参考文献SCAUserpismanualZSUMSUNGCoLtd:, OVFSLUserpismanualZOmniVisionCoLtd: 孙天泽,袁文菊嵌入式设计及Linux驱动开发指南M北京:电子工业出版社, 魏永明,骆刚,姜君Linux设备驱动程序M北京:中国电力出版社,

用户评论(0)

0/200

精彩专题

上传我的资料

每篇奖励 +2积分

资料评价:

/3
0下载券 下载 加入VIP, 送下载券

意见
反馈

立即扫码关注

爱问共享资料微信公众号

返回
顶部