基于AT91RM9200的图像采集系统设计
引言:
近年来高性能、低功耗的ARM处理器成为嵌入式应用的主流;开源的嵌入式Linux操作系统由于系统稳定、兼容性和移植性好、网络功能强等优点也成为首选嵌入式操作系统之一,但目前嵌入式Linux支持的USB摄像头(如OV511)市场上已淘汰,使用现有USB摄像头需开发相关驱动程序,由于采用中芯微公司的USB摄像头在市场中的占有率很高,可高效压缩后输出JPEG图像,所以本文针对这类USB摄像头设计了基于 AT91RM9200处理器的图像采集处理平台,实现了JPEG图像的采集和网络传输。
1.硬件系统设计
(1) AT91RM9200简介
AT91RM9200是ATMEL公司生产的基于ARM920T的工业级SOC芯片,不仅有丰富的片上资源和标准接口,而且有低功耗、低成本、高性能、支持多种主要的嵌入式操作系统等特点,其采用5级整数流水线结构性能高达200 MIPS, 具有标准的ARMv4存储器管理单元(MMU),内部集成有两个USB 2.0 全速(12 M比特/秒) 主机端口和10/100 Base-T 型以太网接口,该芯片具有多种工作模式,其低功耗待机模式下电流仅3.1 mA[1]。
(2)AT91RM9200的USB主机端口(UHP)
AT91RM9200集成有一个USB器件端口(UDP)和一个USB主机端口(UHP),均符合USB V2.0 全速及低速规范。UHP内部集成一个根集线器和2个收发器,可连接127个USB 器件,UHP控制器与OHCI Rev 1.0规范完全兼容,标准分类驱动可以自动检测并在用户程序中使用[1]。
(3)硬件系统结构
图像采集平台的硬件系统结构设计如图1所示,主要包括AT91RM9200处理器、JTAG接口、网络模块、32M SDRAM、16M FLASH、串口、USB主从口等部分。其中网络模块通过外接DM9161实现10M/100M自适应网络连接,通过处理器内置的4个通用同步(异步)收发器(USART) 可实现4路数据传输与控制。另外,处理器内置的双主机收发器可连接USB摄像头和USB存储设备,也可经USB集线器连接更多USB设备,提高了系统的扩展性。
图1.硬件系统结构
2.软件系统设计
(1)嵌入式Linux软件架构
Linux工作模式分为内核模式和用户模式,其软件系统架构由硬件控制器、Linux内核、系统调用接口和用户进程4层组成。一个用户进程就是一个用户程序,操作系统支持多进程并发;内核是操作系统的中心组件,有进程管理、内存管理、文件系统管理、设备控制、网络控制等功能,它通过底层接口层以一致的方式管理硬件,通过高层抽象层为用户进程提供与硬件无关的API控制硬件资源;系统调用接口负责为应用程序调用内核中特定的过程,从而实现特定服务,一般认为这些调用和服务也是操作系统内核的一部分。
(2)USB驱动程序系统框架
图2.USB驱动程序系统框架
USB驱动程序的系统框架如图2所示,包括客户驱动程序、通用总线驱动程序、主机控制器驱动程序几部分。其中,客户驱动程序是特定USB设备的驱动程序,提供了USB设备的功能操作及特定子类协议封装[6];通用总线驱动程序(USBD)拥有特定操作系统上抽象出的主机控制器驱动程序的共有特性,是整个USB驱动程序的核心,主要实现USB总线管理、URB管理、为客户驱动程序提供相关接口等功能,它还负责维护设备的加载和卸载、设备配置、客户端驱动程序的安装和卸载等工作[2];主机控制器驱动程序是直接与硬件交互的软件模块,主要实现主机控制器硬件初始化、负责总线的注册、为USBD层提供相应的接口函数、完成4种类型的数据传输等功能[2]。
Linux通过定义了统一的URB(Universal Request Block)结构,在客户驱动程序和USBD之间,以及USBD和HCD之间进行消息传递,为USB驱动程序的开发带来了很大方便[3]。我们开发USB驱动程序主要是编写USB客户软件层的程序,即如何将数据封装成URB和如何从URB中得到数据。
评论