新闻中心

EEPW首页>嵌入式系统>设计应用> 基于ARM的远程视频监控系统的设计

基于ARM的远程视频监控系统的设计

作者: 时间:2012-08-07 来源:网络 收藏

1.2 USB 主设备模块

AT91RM9200 片内集成的USB 主机端口集成一个跟集线器,并在下游端口集成收发器,它提供几个半双工高速串行通信端口,速率为12Mbit/s,最多可连接127 个USB 器件。本系统外扩一个USB 主机端口来支持USB 摄像头的访问。

系统采用的是应用广泛的选用罗技快看酷讯版摄像头进行数据采集,这种摄像头可以实现硬件JPEG 编码,数据由摄像头采集,一旦主控制器获得数据请求,则通过USB接口读取其缓存的数据,并对图像数据进行压缩编码,然后socket 编程来发送这些压缩后的数据到服务器。

1.3 以太网接口模块

AT91RM9200 的在片以太网卡端口和网络物理层芯片DM9161E 的MII 接口通信。片内以太网卡通过DMA 通道进行数据的发送,不影响AT91RM9200 的正常运行。首先正确设置传送控制寄存器和传送地址寄存器的传送数据块字节数、数据块存储首地址等参数,随后依次从指定数据存储区地址读取1024b 数据,送入内部发送缓冲器中,由MAC 对数据进行封装发送,同时记录已传送字节数,直到数据块发送完毕。当发送完一组数据后,发出DMA中断请求,由AT91RM9200 进行相应的处理。整个网络子系统电路由AT91RM9200 控制和调度。

2 嵌入式Linux 开发环境的建立

2.1 交叉编译链的建立

嵌入式开发与普通开发有个显着的不同是,普通开发是在本机开发、调试,本机运行,而嵌入式由于资源有限,不能直接在嵌入式目标机上运行开发工具,因此嵌入式开发一般采用交叉编译方式,即在开发主机上编译目标机上运行的程序。交叉编译链可以自己制作,也可以通过网络下载别人已制作好的交叉编译链直接使用。本系统所用交叉编译链版本是3.4.3。

2.2 配置并编译内核

系统选用开源的 Linux 2.6.14 版内核作为操作系统,以交叉编译方式编译,即在普通PC机上运行Fedora 8 环境下,用交叉编译链编译在9 机器上运行的Linux 内核。内核用tftp 方式下载到开发板,然后解压自引导。具体操作如下:

(1) 给内核补丁,下载Linux2.6.14 内核源码linux-2.6.14.tar.bz2 和AT91RM9200 补丁2.6.14-at91.patch.gz,然后:

3采集的实现

3.1 USB 摄像头驱动

Linux 对于视频采集设备的支持,是通过Video4Linux(V4L)实现的,V4L 为视频应用程序提供了一套统一的API 函数,视频应用程序通过标准的API 接口实现与内核和驱动的通信,实现视频设备的各种功能。对于USB 接口摄像头,驱动程序实现了基本的I/O 接口函数open、close、read、write,实现了内存映射功能函数mmap 和控制函数ioctl,并对于中断进行了处理。

Linux 中视频采集的实现,可以用read()函数直接读取数据,也可以用mmap()函数通过内存映射工作。内存映射方式直接将设备地址映射到内存地址空间,使用方便,效率更高,因此本系统采用内存方式获取视频数据。

本系统的设备控制函数ioctl 实现的主要设备控制命令有获得摄像头信息VEDIOCGCAP,判断获取图片是否成功VEDIOSYNC,读取图片相关信息VEDIOCGPIC,以及获取图片VEDIOGETPIC。

3.2 视频数据采集

本系统数据采集程序也是V4l 编写应用程序,其基本流程首先通过open 系统调用打开摄像头设备,如果成功则继续通过ioctl 函数命令(参数VEDIOCGCAP)获取摄像头相关信息,ioctl 函数命令(VEDIOGETPIC)获取图像数据。



评论


相关推荐

技术专区

关闭