1 系统结构框图及视频数据采集原理
视频数据采集系统结构如图1所示。
从图1中可以看出。系统由嵌入式微处理器S3C2440、存储器(包括Nand Flash和SDRAM)、以太网接口、CMOS图像传感器0V9650、USB主/从口、SD卡、JTAG接口、电源与复位电路、LCD与触摸屏组成。其中,S3C2440为整个系统的硬件核心,负责采集来自图像传感器的数据,控制给各种外设等。Nand Flash存储器与SDRAM构成了系统的存储器,其中SDRAM具有掉电数据不保存的特点,只用作系统内存,用于运行主程序等,而Nand Flash则具有掉电保存数据的特点,用于存储操作系统内核,引导加载程序(Bootloader)、用户应用程序等。
CMOS图像传感器及其接口电路用于采集视频数据。LCD与触摸屏构成人机交互模块,起到数据交互的作用,相当于PC机的键盘和液晶。J-TAG接口用于系统硬件调试和下载Bootloader程序。USB主口不但可以用于外接U盘和移动硬盘等,还可外接带USB接口的鼠标。在触摸屏校正出现大的偏差无法校正时,用鼠标辅助校正。USB从口用于下载WinCE内核文件NK.bin。电源电路包括为微处理器与相关外设提供电压(如微处理器的1.3 V内核电压、LCD的3.3 V背光电压),以及为摄像头供电。复位电路用于出现故障时系统重启。以太网接口用于扩展系统功能,在视频数据采集的基础上,通过以太网,可以编程实现视频数据的网络传输。
视频数据采集原理如下:应用程序通过文件系统的API调用摄像头驱动程序的流接口函数发送命令。驱动程序将接收到的命令转化为对外部设备的相应操作,实现对处理器的CAMIF单元和图像传感器设备的初始化、I/O控制和电源管理等操作。图像传感器接收由处理器的I2C总线发送的配置数据,正常工作之后将图像数据和VSYNC、HREF、PCLK 3个时钟信号发送到处理器的CAMIF单元中,2条DMA通道将采集到的图像数据通过系统总线保存到内存的帧缓冲区中,帧缓冲区的图像数据能够被流接口驱动函数读取。
2 摄像头接口及其电源电路
摄像头接口电路如图2所示。本系统选用130万像素的CMOS摄像头0V9650,通过串行摄像头控制总线(Serial Camera Control Bus,SCCB)接口实现对其控制。OV9650支持SXGA、VGA、QVGA、CIF等格式,8位数据输出格式,可以是YUV/YCbCr(4:2:2)、GRB(4:2:2)和Raw RGB 3种。
OV9650内部主要包括1 300xl 028的图像传感器阵列、模拟信号处理器、ADC、DSP、数字视频端口、SCCB接口、定时信号发生器和输出格式器。数据输出位YO只在RAW RGB数据时用作LSB,而Y1只在RGB数据时用作MS,这里都不使用,而用到的主要引脚有:RESET为重置位,用于清空所有的寄存器并重置为默认的值,高电平有效:HREF为内部参考电压引脚,为器件提供参考电压:PWDN为关闭电源模式选择位,高电平有效,为0时是正常模式,为1时电源关闭模式;SIO_D为SCCB串行接口数据I/O,SIO_C为串行接口时钟输入引脚;Y[2:9]为数据输出位,共8位;VSYNC为垂直同步输出引脚:PCLK为像素时钟输出引脚,XCLKl为系统时钟输入引脚。
OV9650的核心供电电压为1.8 V.模拟输入的供电电压为2.45~2.8 V,I/O口的供电电压可以为2.5~3.3 V。本系统设计中,摄像头供电电路如图3所示。采用电源转换器ASlll7为摄像头提供1.8 V和2.8 V电压,其中2.8 V电压是通过可调压器件分压得到。
3 系统软件设计
系统的软件设计应当包括两部分:BSP的开发与应用程序的开发。本文分别从这两个方面简单论述,BSP的开发主要介绍Bootloader程序设计及OV9650驱动程序开发。
3.1 Bootloader的开发
BSP的开发一般包括3个方面的内容:Bootloader程序设计、OAL层及驱动程序开发。Bootloader是操作系统内核运行之前运行的一段小程序,用于初始化系统的硬件设备,如初始化MMU、屏蔽所有中断、初始化NandFlash等,建立系统的内存空间映射。从而将系统的软硬件环境带到一个已知的状态,为操作系统内核的最终调用准备正确的环境。最后Bootloader把操作系统内核映像加载到RAM中,并将系统的控制权传递于它,其作用类似于基于X86的PC中的BIOS。
本系统设计的Bootloader,采用Eboot+Nboot的形式,支持USB从机下载通信手段和Nand flash存储介质。NandFlash不支持xip,故必须有一个可执行的程序将烧写在其中的Eboot搬到SDRAM中。Nboot一般配合Eboot一起使用。Eboot与Nboot同样为启动代码,但是Eboot的大小远超过4 KB,故不能直接将Eboot存放在block0中。Nboot的作用是初始化Flash等硬件,将Eboot搬到SDRAM运行。而Eboot则负责内存地址的映射以及其余设备的初始化、加载NK.bin内核文件等。Nboot与Eboot在其中的位置如图4所示。
文章评论(0条评论)
登录后参与讨论