aim32位嵌入式微处理器ARM-Linux嵌入式操作系统,视频图像采集系统。完成高质量图像的采集和辛勤工作介绍其详细信息。关键词嵌入式系统,图像采集,ARM,S3C2410人类通过视觉获取外界信息的70%左右,视觉信息具有直观、可靠等一系列优点。图像携带着大量的信息,用语言文字难以表达的东西,用一张简单的图片就能准确表达出来,一图胜千言,说明了这个事实。视频技术的关键是视频技术。目前,以“信息采集与处理”为核心的视频图像采集处理系统在国内外工业控制、工业检测、通信网络、机器视觉、医学、公安等行业得到广泛应用,而视频通信是3G时代多媒体应用的重要组成部分。实时图像采集是日常生活中见到的数码相机、可视电话、多媒体IP电话、电话会议等产品的核心技术。 图像采集的速度和质量直接影响产品的整体效果。
视频图像采集是视频处理系统的关键部分,也是典型的应用之一,因此视频图像采集将有相当大的市场,对其的研究十分必要。从现有的资料看,嵌入式图像采集系统大多是基于DSP技术的,系统相对复杂,实时图像处理难度大。针对这种情况,本文提出了一种基于32位处理器S3C2410的嵌入式图像采集处理系统的设计方法,旨在用最少的硬件完成高质量的图像采集和实时处理功能。 1 系统硬件 嵌入式系统开发与硬件平台紧密相关,硬件平台犹如整个嵌入式系统的骨架,它的搭建是整个嵌入式设计的基础,嵌入式系统硬件由嵌入式处理器、存储设备和I/1组成。 系统硬件设计 嵌入式图像采集系统的硬件设计包括核心板和扩展板两部分,核心板主要是S3C2410微处理器芯片、必要的电源电路、RESET电路、晶振电路以及FLASH存储器、RAM存储器。 扩展板的外围功能模块有:串口、网口、JTAG、LED、LCD等,本系统硬件组成如图1所示。214)基于ARM 2009微处理器的嵌入式图像采集系统设计鉴于开发多媒体视频终端的需要,考虑系统外设的要求,采用三星公司带ARM920T内核的S3C2410处理器,采用三星公司的K9F1208作为NAND Flash存储。
SDRAM采用海力士公司两片HY57V561620BT存储器。USB主机接口连接USB集线器,可连接外部摄像头和USB存储设备。摄像头采集的图像数据输出到缓冲区,保存为bmp文件,并在LCD上显示。LCD采用夏普5inLCD,分辨率为240×320b。2微处理器S3C2410的选择S3C2410处理器是三星半导体公司推出的一款基于ARM920T内核的16/32位RISC嵌入式微处理器。S3C2410可支持高达203MHz的处理器工作频率,具有MMU(Memor Management Unit)级流水线,内核电压8V,平均功耗7mW/MHz,为手持设备和一般类型应用提供了低成本、低功耗、高性能的微处理器解决方案。S3C2410在ARM920T的基础上增加了丰富的外设资源。 主要片上外围模块包括:支持STNFT LCD显示的LCD控制器;外部存储器管理(SDRAM控制器及片选逻辑)10通道UART;支持存储器与I/O口之间传输的10通道DMA,采用触发方式提高传输速率;带PWM功能的16位定时器/计数器及16位内部定时器,支持外部时钟源;该通道10位ADC,最高速率500kB/10位分辨率;触摸屏接口;IIS总线接口;USB主机接口、USB设备接口;SPI接口;SD口及MMC卡接口;16位看门狗定时器;117位通用I/口及24位外部中断源;该通道10位AD控制器;3YF2410开发板。 结合系统对硬件的要求以及时间、条件的限制,本设计采用了深圳元峰公司的YF2410开发板。

该开发板是基于S3C2410的高性能开发平台,适用于高性能手持设备和便携智能终端的开发。YF2410开发板的系统框图如图2所示,开发板的系统时钟先经过外部12MHz再经CPU内部PLL倍频到200MHz,NandFlashBOOTROM为64M,SDRAM为64Mbyte。开发板上还有TFTLCD及触摸屏控制器、两通道USB控制器、备份控制器、SDMMC卡主控制器、EmbeddedICE调试接口、RTC实时时钟(带备份锂电池)图2 YF2410开发板系统框图频率输入/输出接口、IIS接口、EINT外部中断接口、10M以太网接口、多功能总线扩展接口、接IDE/ATA硬盘的两个发光二极管指示灯。 2 系统软件设计 上述硬件平台上运行的操作系统为arm-linux。启动后系统使能MMU并进入保护模式,用户应用程序不能直接读写外设的I/O,此时需要借助外设驱动进入内核完成工作[3-6]。本系统的视频采集分为两部分:1、内核中USB摄像头的驱动;2、USB摄像头的驱动实现。设备驱动是Linux内核与外部设备的接口,设备驱动给应用程序屏蔽了硬件实现的细节,让应用程序可以像操作普通文件一样操作外部设备。
操作文件中的标准系统调用接口函数可用来完成硬件设备的打开、关闭、读写及I/O控制操作,驱动程序的主要任务就是实现这些系统调用函数。Video4Linux是Linux下针对视频设备的内核驱动程序,它为应用程序编程提供了针对视频设备的接口函数。Linux下视频采集设备的正常使用依赖于v4l标准的支持,在编译内核时选择Multimedia Devices下的Video Linux选项,生成的内核支持v4Ll。Linux下的摄像头驱动以81为主设备号,在编写应用程序时,需要通过打开以此设备号为标识的设备文件来与设备驱动程序建立通信。USB摄像头的驱动程序需要实现操作接口函数open、read、write和close,还需要实现中断处理、内存映射函数和I/O通道控制函数ioctl。这些函数定义在struct file operation中。 当应用程序对设备文件进行读、写、打开、关闭等系统调用操作时,Linux内核会通过struct file operation结构体来访问驱动提供的函数。系统对USB摄像头的驱动,是先把USB控制器驱动模块静态编译到内核中,使得内核一启动就支持USB接口。
当需要使用摄像头采集图像时,使用insmod动态加载其驱动模块,即可正常启动USB摄像头。2 上层应用程序嵌入式应用程序的开发全部采用交叉编译的方式,首先在宿主机上编写应用程序,然后使用交叉编译器进行交叉编译链接,在目标平台上生成可执行文件。宿主机与目标板之间通过打印终端进行通信,调试成功后进行交叉编译、移植到目标平台。本设计的上层应用程序是在宿主机上进行的。视频部分以Linux为标准,该标准定义了一套接口,内核、驱动、应用程序以此接口为标准进行通信,所有数据结构和函数均可在内核头文件中定义。图像采集过程流程图如图3所示。硬件平台首先检测视频采集设备,若发现相应的硬件设备,则打开该设备,获取设备信息和图像信息,初始化设备后进行图像采集。 3 程序调试在系统调试阶段,根文件系统是挂载在NFS上的,挂载成功后,视频接口要编译进内核,摄像头驱动在编译内核时要编译成模块,所以用lsmod命令查看系统已经加载的模块,没有ov511,摄像头灯也不亮,说明没有驱动摄像头。
使用insmod命令加载ov511。然后使用lsmod查看模块,摄像头灯亮,驱动成功!
进入应用程序所在文件夹,执行程序。minicom v41capVideo dev/v41/video0 caput ur 320x240frame buffer 320x240,16bpp,0x25800byt显示的信息包括:视频采集设备video0、采集图像大小320240、帧缓冲区大小320240、颜色深度16、帧缓冲区大小0x25800B。3实验结果程序调试成功后,将编译好的根文件系统下载到开发板上,启动开发板即可正常运行。系统首先驱动摄像头,然后从摄像头缓冲区读取图像编号显示在液晶屏上。实验结果表明,本系统视频图像采集速度快,图像显示流畅。 图 4 显示了这一点