微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于S3C2440处理器的嵌入式视频采集系统

基于S3C2440处理器的嵌入式视频采集系统

时间:08-29 来源:互联网 点击:

摘要 在研究嵌入式开发技术的基础上,提出了一个基于嵌入式处理器S3C2440的实时视频采集系统解决方案。该方案通过搭建嵌入式Linux开发环境,对T.264编码器进行优化,并修改移植视频驱动以及C/S软件,实现了系统的正常运行。
关键词 S3C2440;Linux;C/S软件;视频采集

随着通信网络技术的迅速发展,基于网络的高质量视频传输已逐步取代传统的文字语音交互模式,成为当今数字通信的主要研究领域之一。而随着嵌入式操作系统和集成电路设计水平的不断提高,嵌入式技术与通信网络以及多媒体技术的融合将成为未来数字视频通信领域的主流发展趋势。
一直以来,针对网络传输实时视频对嵌入式软硬件都有较高要求。本文利用基于ARM920T内核的S3C2440嵌入式微处理器,采用压缩比更高的H.264视频压缩标准和开源嵌入式Linux系统,设计了一款基于嵌入式视频服务器的远程实时视频采集系统。

1 采集系统平台搭建
1.1 系统硬件平台
该采集系统以PC作为客户端,以广东友善之臂计算机科技有限公司研发的ARM9开发板Mini2440作为视频服务器,采用SamsungS3C2440为微处理器,用专业稳定的CPU内核电源芯片和复位芯片保证系统运行时的稳定性。三星公司推出的这款16/32位RISC微处理器S3C2440,采用ARM920T的内核,典型主频400 MHz,最高可达533 MHz,使用5级流水线技术,并采用丰富的控制模块为各种应用提供扩展。该采集系统的结构如图1所示。

1.2 系统软件平台搭建
PC机端使用内核版本为2.6.18的Linux 5红帽子企业版,由于后续需要在Windows平台进行FTP资料传输等工作,所以采取了虚拟机安装Linux的方式,这样方便Linux和Windows的数据网络交互。虚拟机软件版本为Vmware 6.5.1,采用的传输软件为基于SFTP协议的Flash Fxp。而交叉编译工具主要为Binutils、Gcc和Glibc。
一个嵌入式系统软件角度主要分为引导加载程序、Linux内核和文件系统3个层次,其中引导加载程序是系统加电后运行的第一段软件代码。BootLoader就是在操作系统内核运行之前运行的一段程序。在负责引导用的Hash存储器中,通常会按照图2的顺序分布。

因为后期进行摄像头驱动编写移植过程需要大量的调试,基于网络的NFS根文件系统就比较合适。基于这种考虑,选择了网络功能强大的U-boot作为BootLoader。移植U-boot主要做了以下工作:(1)修改编译条件,添加寄存器定义,修改时钟。(2)修改中断禁止部分,添加S3C24 40的中断禁止代码。(3)在board目录创建新开发板目录。(4)以smdk2410.c为模板修改PLL以及UPLL的设置。(5)修改Makefile相应配置行以支持该开发板。
修改完毕后进入工作目录进行板级配置,通过交叉编译工具链对改后代码进行编译。利用H-JTAG软件进行烧写,如图3所示为烧写成功并通过超级终端引导完成。

根文件系统挂载方式主要有ramdisk,NFS和initramfs这3种。制作自启动的嵌入式设备需要用initramfs作为根文件系统的内核进行烧写。先0地址处存放的是U-boot,约为100 kB;然后在0x0000~0x40000存放了约64 kB的环境变量。这两项均固定,所以uImage的大小必须控制在1.75 MB以下,并从0x40000开始存放。uImage包括内核和根文件系统两部分,需要针对其进行裁减,以符合项目要求。
在嵌入式系统中,BusyBox是构造文件系统常用的一个软件工具包。本文采用它来构建根文件系统。本项目使用的目标板内核为Linux 2.6.29,但根据项目自启动需要进行相应裁剪,根据最小系统标准进行裁减,串口、网口、根文件系统可用,并保留本文所要求的摄像头驱动,裁剪后的内核大小为1.3 MB,满足系统需要,如图4所示。

2 视频驱动编写以及C/S软件设计
2.1 T.264编码库优化移植
T.264为中国视频编码自由组织联合开发的开源编码器,它对H.264的特性支持单一,编码器可输出标准264码流,解码器能解T.264编码器生成的码流,它吸收了JM、X264和XVID的优点,适用于网络流媒体的传输。由于本文研究的视频采集系统应用于可视电话视频会议等应用中,对网络传输的要求较高,综合比较后,选用T.264作为本系统的软件编码器。
采用H.264中的基本档次,仅使用CAVLC熵编码方式即可满足应用要求。综合不同平均码率下的编码性能以及网络传输能力的考虑,对于QCIF格式运动平缓的视频序列,编码输出帧率为15 f·s-1时,设置平均码率为128 kb·s-1是比较合适的选择。使用T.264开源编码器,并对T.264进行代码级优化编译。在编译级添加了如下选项:(1)-fomit-frame-pointer选项忽略函数中不必要的帧指针,节省指令开销。(2)-04几乎打开了所有的优化选项,以尽可能提高程序运行效率。(3)-msoft-float:产生基于浮点运算函数库调用的软浮点目标代码。
2.2 视频驱动编写以及C/S软件设计
采用目前国内市场占有率较大的台湾松翰SONIX613a主控芯片的摄像头,该摄像头支持Jpeg格式和4:2:0采样的YUV原始视频数据输出,数据量小,可直接作为H.264等视频压缩编码标准的原始视频数据源,避免了对图像的重采样和色彩空间的变换等复杂的数字运算处理,适合嵌入式的实时视频采集应用。
2.2.1 驱动程序Gspca的修改移植
Gspca/Spca5xx是自由软件基金会发布的通用USB摄像头驱动程序。但由于该解决方案在Linux内核中并无驱动支持,所以必须针对其进行驱动的添加和修改,如图5所示。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top