基于arm的视频图像采集系统摘要:本系统采用了Samsung公司生产的S3C2440芯片作为嵌入式处理器,再结合系统所需的外围硬件构成基本硬件电路。
主要包括二大部分:处理器和存储器部分;电源时钟复位电路部分;外围接口电路部分。
在对各部分硬件进行详细设计后,接下来详细介绍了嵌入式软件平台的构建,包括如何移植Linux操作系统:基于嵌入式Linux下USB接口摄像头视频设备采集;移植H.264视频压缩库和视频传输程序的编写。
1 抓拍系统开发环境的构建本文所设计的采集系统按功能可划分为嵌入式主控模块、视频采集模块、网络传输模块、等三大部分。
图1-1为本系统的系统框架图:1. USB数字摄像头采集图像数据:2.采集传输应用程序通过摄像头驱动从摄像头获取到采集的图像数据:3.采集传输应用程序调用H.264编码库对图像数据进行压缩:4.采集传输应用程序将压缩后的图像数据通过网络传输给windows PC上的显示程序:5. Windows上的显示程序对图像数据进行解码并显示:图1-1软件架构图本系统的嵌入式主控模块是基于Samsung公司生产的S3C2440这款处理器,主要作用是实现对各模块数据的响应、处理以及控制。
在硬件上,主控模块包括电源、时钟、复位电路、存储模块、以太网接口电路等。
在软件上,主控模块上运行Linux操作系统,管理各应用程序模块进程并调度各进程。
1.1采集系统的硬件平台设计本系统的核心处理器为二星公司的S3C2440,外扩64M的SDRAM存储器以及64M 的FLASH存储器,外围接口电路模块:包括USB接口电路,以太网网卡DM9000接口电路以及网眼3000的数字摄像头等。
本系统的硬件结构如图1-2所示。
图1-2系统硬件架构图1.1.1电源、时钟模块设计系统各部分硬件要求提供1.8V和3V的电压。
其中S3C2440处理器内核需要提供1.8V 电源,NandFlash, SDRAM及DM9000等芯片需要提供3V电源,所以本系统采用了LM1117-3.3和LM1117-1.8电压转换芯片设计稳压电源,得到1.8V和3.3V的所需电压。
USB 控制器需要提供5V的电源。
本文采用了5V直流电压供电。
LM1117是一个低压差电压调节器系列。
其压差在1.2V输出,负载电流为800mA时为1.2V 。
LM1117有5个固定电压输出(1.8V, 2.5V, 2.85V, 3.3V和5V)的型号。
根据本系统的需要,这里选用了电压输出为1.8V 和3.3V两型号。
时钟电路为CPU和其它外围电路提供精准的工作时钟,按照电路中设计使用的器件特性分为有源和无源晶振,在本系统的设计电路中采用的是无源晶振。
ARM芯片均提供时钟发生电路,结合一定的辅助电路的配合就可以得到所需要的时钟信号。
基十ARMS的这款S3C2440芯片的时钟控制逻辑可以产生为CPU核供给时钟信号的FCLK、为AHB总线供给时钟信号的HCLK、为APB总线供给时钟信号的PCLK。
1.1.2外部存储器的扩展S3C2440微处理器存储空间仅有32M,应用于本系统,需要外扩存储器。
本设计采用两片二星公司的HY57V561620来扩展64M的SDRAM。
它们均4M* 16bit*4bank的SDRAM 芯片,这样,两片SDRAM实现了位扩展,数据总线达到了32bit,构成64M寻址空间。
图1-3为S3C2440与NandFlash的接口图。
图1-3 S3C2440的存储器扩展框图1.1.3外围接口电路设计S3C2440内部集成了2个USB host和一个USB device接口。
USB的分时处理机制实现了外设的即插即用。
在USB接口电路中的D+, D-均为数据输入端。
USB接口中其它两根线接电源和地,设计电路中用到的电感、电阻、电容主要起滤波作用。
其中还用到了起限流作用的电阻,主要是在短路时防止烧毁供电电路。
抓拍系统将抓拍到的图像数据通过以太网传输到PC机客户端。
由于微处理器S3C2440内部没有集成网络控制器,应本系统网络的需求,这里使用DM9000网卡芯片进行扩展。
DM9000快速以太网控制处理器是DA VICOM公司推出的,合成了NINIU, MAC和PHY。
图1-4为DM9000与S3C2440的连接示意图。
图1-4以太网接口电路本设计采用了16位的连接模式。
因为DM9000没有专用的地址线,是通过地址线与数据线复用来实现。
其中的CMD是命令类型控制信号,如果CMD为高,传送的为数据:如果CMD为低,传送就是地址。
其中AEN是地址使能信号线,即DM9000的片选信号线,通过把LnGCS4设置为低电平控制选通DM9000。
中断信号线INT占用S3C2440的7号中断,使得S3C2440可以响应DM9000的中断。
DM9000与网络之间的连接由发送信号线TX+, TX-和I接受信号线RX+, RX一通过隔离变压器E-2023与以太网水晶接口RJ45相连。
其中隔离变压器的最主要的作用是将嵌入式系统和外部线路相隔离,防止干扰以及烧坏元器件,并实现带电插拔功能。
1.2终端系统软件平台的构建1.2.1交叉编译环境的建立因为在嵌入式系统开发时,不可能有足够的资源提供给开发系统直接运行开发工具以及调试工具等。
通常,嵌入式系统软件开发是采用一种交叉编译调试的方式进行开发。
开发时,先使用宿主机上的一些交叉编译、汇编和链接工具等形成只能在目标板上执行的可执行代码。
1.2.2 Bootloader的移植在交叉工具安装完成以后,需要移植嵌入式操作系统,它为应用程序的开发提供良好的软件平台。
嵌入式linux系统从上电到运行用户的应用程序,一般要经历三个过程:一是加载Bootloader;二是启动linux;三是挂载根文件系统,为了使整个系统顺利运行,接下来做下面三方面的工作:Bootloader移植;制作根文件系统;裁剪内核。
下面详细介绍Bootloade 移植。
在基于ARM的嵌入式系统中,当进行上电或复位操作时,执行的第一段程序就是Bootloader。
它主要是初始化硬件、建立内存地址映射表,建立合适的系统硬件环境,也为最后调用操作系统的内核做好充分的准备。
在嵌入式开发中,没有一个标准的Bootloader,因为它是依赖于实际的硬件和应用环境。
下面根据本系统的硬件修改通用的U-Boot。
1.选择移植参考开发板:首先选择MCU相同的开发板,在uboot-2008.10中不支持MCU 为S3C2440芯片的开发板,如果MCU没有找到参考开发板,则选择MPU相同的作为参考,S3C2440的MPU为arm920T, uboot-2008.10中smdk2410开发板其MPU也为arm920T,故选择smdk2410作为参考开发板。
2.在顶层Makefile中添加新的配置选项,使用smdk2410已有的配置项目为起点。
3.修改CPU/arm920t/start.s,修改编译条件使其支持S3C2440、添加寄存器的定义、修改中断禁止和对时钟的设置(S3C2440主频设置为405MHZ)。
4.在cpu/arm920t/s3c24x0目录下的文件interrupts. c , speed. c等添加对S3C2440的支持及对分频的设置做些修改。
5.选择板级配置:#make Mzy2440_ config,即选择的board是Mzy2440o6.编译uboot,#make CROSS COMPILE=arm-linux-,编译成功后会产生u-boot.bin文件,它将被自动复制到当前主目录。
1.2.3系统内核移植解压内核到/home/meizhaoyun/zhuapai,清理内核中间文件、配置文件,选择参考配置文件,#cp config-zhupai.config。
下面对内核的配置进行简单的介绍:这里使用了网眼3000的USB摄像头来采集视频图像,linux对该摄像头使用的芯片为OV511芯片提供了很好的支持。
Linux操作系统下实现视频图像采集,必须在内核中加载二个模块:USB设备驱动、OV511模块和video4linux模块。
在内核源码目录下运行命令make menuconfig,具体步骤如下:1.在配置菜单中选择“multimedia devices->Video for linux”选项,这样在内核中加载了Video4 Linux驱动,为视频采集设备提供了编程接口。
2.在配置菜单中选择“USB Support->USB Multimedia devices->USB OV511 camera support”选项,这样就在内核中加入了对采用OV511接口芯片的USB数字摄像头的驱动支持。
1.2.4根文件系统移植linux文件系统体系对复杂系统进行抽象化,是linux系统的核心组成部分,可以做为linux系统文件和数据的存储,也可以作为系统的配置文件或者应用程序调用所需的库文件。
没有根文件系统的linux系统不能正确启动,所以为了存储引导程序、内核以及应用程序,需要创建合适的根文件系统。
mzy2440根义件系统的制作:1.创建根文件系统主目录//nfsroot/rootfs:#make -p /nfsroot/rootfs#cd /nfsroot/rootfs#mkdir bin dev etc lib proc sbin sys usr mnt tmp var#mkdir usr/bin usr/lib usr/sbin lib/modules2.创建设备文件内核在引导时,设备节点console、null必须存在#cd /nfsroot/rootfs/dev/#mknod -m 666 console c 5 1#mknod -m 666 null c 1 33.编译内核模块:#make module ARCH=arm CROSS COMPILE=arm-linux一安装内核模块到根文件系统#make modules install ARCH=arm INSTALL MOD PATH=/nfsroot/rootfsbusybox为一个工具集合,根文件系统的许多命令均可以通过busybox编译来获得,像cd, ls等。
实际上,busybox是把许多工具集合到一个非常小可执行文件中,用户只要使用命令就可以运行其中相应的服务。
解压busybox,配置busybox。
进入busybox setting->build options->选中"Build busybox asa static binary"静态链接,本系统中目标板没有这些库,故采用静态链接的方式。
2 系统应用程序设计该系统由USB视频采集模块,数据处理模块,图像显示模块3大部分组成,其中USB 视频采集模块由USB摄像头,USB摄像头驱动程序两部分构成。