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

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

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

a.jpg


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的顺序分布。

b.jpg


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

d.jpg


    根文件系统挂载方式主要有ramdisk,NFS和initramfs这3种。制作自启动的嵌入式设备需要用initramfs作为根文件系统的内核进行烧写。先0地址处存放的是U-boot,约为100 kB;然后在0x0000~0x40000存放了约64 kB的环境变量。这两项均固定,所以uImage的大小必须控制在1.75 MB以下,并从0x40000开始存放。uImage包括内核和根文件系统两部分,需要针对其进行裁减,以符合项目要求。[page]

    在嵌入式系统中,BusyBox是构造文件系统常用的一个软件工具包。本文采用它来构建根文件系统。本项目使用的目标板内核为Linux 2.6.29,但根据项目自启动需要进行相应裁剪,根据最小系统标准进行裁减,串口、网口、根文件系统可用,并保留本文所要求的摄像头驱动,裁剪后的内核大小为1.3 MB,满足系统需要,如图4所示。

c.jpg



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所示。

e.jpg

[page]

2.2.2 C/S软件设计
    出于对特定的应用对象以及成本的考虑,本文采用基于有线以太网络流媒体传输H.264视频的解决方案。采用开源软件VLC作为流媒体服务器与客户端播放器,进行单向点对点实时视频通信。图6为视频采集系统工作流程图。

f.jpg

[page]

    (1)服务器端软件设计。
    视频采集系统的服务器端采用后台控制程序video_server受理客户端video_client对VLC视频服务器的远程管理与设置,通过同一端口(3490)和同一套消息码进行通信。并在系统初始化脚本/etc/init.d/rcS中激活网卡后添加后台运行服务器控制程序Video Server的命令,使开发板启动后在后台自动运行video_server,它首先创建服务器端的套接口描述符,并与服务器端口地址及与client端统一的通信端口绑定,接着进入服务响应的主循环体,侦听套接口数据及连接,根据来自客户端的消息请求提供不同服务。video_server软件流程如图7所示。

g.jpg


    (2)客户端软件设计。
    客户机端程序Video Client的运行于PC机平台,用来向Server端发送远程控制命令。通过远程控制命令,可以配置服务器端的视频格式码率和传输协议、启停服务器端VLC进程、调本地VLC播放器接收并播放来自服务器端的视频图像等。
    针对此程序利用跨平台界面库QT设计了GUI操作界面,有助于用户的交互。
    由于服务器端对CIF格式图像采集及压缩编码速度较慢,因此程序仅支持这两个档次QCIF64 kb·s-1、QCIF-128 kb·s-1。设置完毕,点Connect按钮,Client向Server发送附带服务器设置参数的连接请求,若从Server接收到OK消息,表明server端接受了本地的连接请求并启动了Server端的VLC服务器,这时客户端将Connect按钮置为Disconnect按钮,同叫调用本地VLC播放器,接收并播放服务器发送的视频数据:若从服务器接收到NOK消息,则出错。服务器在正常接收和播放服务器发送的视频数据时,若点Disconnect按钮,则向Server发送SRV_QUIT请求,同时关闭本地的VLC播放器,Server接收到SRV_QUIT消息后,关闭Server端的VLC服务器。
    整个系统PC机是客户端,基于S3C2440处理器的Mini2440开发平台是嵌入式视频服务器,Client程序通过以太网连接服务器,服务器响应请求后启动VLC进行视频采集并将视频数据传输到客户端,而后Client程序调用VLC播放器窗口对接收到的码流进行实时播放,正常工作情况如图8所示。

    从视频图像帧率上看,经过优化的T.264编码器对QCIF视频平均码率在128 kbit·s-1时,编码速度能够达到16 f·s-1,但由于USB摄像头采集QCIF格式图像在约13 f·s-1,因此需要在服务器端设置压缩帧率为13 f·s-1,这样可以保证客户端以原有帧率解码视频流,从系统的整体性能考虑,这个码率能够满足远程教育和视频监控等应用。

3 结束语
    研究了嵌入式Linux的开发技术,建立起基于Mini2440开发板的Linux开发平台,包括搭建交叉编译环境,设计裁减移植BootLoader和Linux2.6.29内核,构建基于BusyBox的根文件系统,开发针对视频采集系统的专用摄像头驱动。研究了H.264视频压缩编码标准,针对该视频采集系统对开源的T.264编码器进行编译和代码级优化,达到实时应用要求。研究了基于UDP协议的网络传输方案,修改设计服务器端的采集程序和客户端的视频解码播放程序,最终实现嵌入式视频采集系统的运行。

关键字:S3C2440  Linux  视频采集 引用地址:基于S3C2440处理器的嵌入式视频采集系统

上一篇:基于S3C2440A终端LCD驱动电路的设计与实现
下一篇:Samsung S3C2440平台上的Vxworks BSP移植

推荐阅读最新更新时间:2024-03-16 13:04

iic裸机与linux通信,裸机系列——S3C2440IIC通信
经过一周左右的时间终于是把IIC弄的个差不多了,我只能说对于每一个程序都要认真对待,每个程序的编写都是一种进步。对于IIC,给我的感觉是这个东西单片机的时候也知道,但是没有调出来,现在RAM裸机编程正好好好的学习的一下,但是虽然对于2440的IIC驱动只需要配置好寄存器和把握好时序就可以了,但是我还是经过了很多的一段痛苦的时期,不过现在回想看看,都是一种成长的经历,让人值得骄傲。因为我坚持过来了。好的,说正点的,首先IIC编程依然感谢乐于奉献的赵老师,他的博客地址很多详细的介绍我就不多说了,赵老师的博客讲得很详细,和以前一样讲一下自己的体会和问题。 1.AT24C08芯片,是一款EEPROM,8K,不过是8Kbit,1024X
[单片机]
OK6410A 开发板 (八) 17 linux-5.11 OK6410A start_kernel 功能角度 概览
根据功能对 linux启动过程的分类(注意:arm1176jzfs不支持多核) 对于 arm1176jzfs 的 s3c6410 来说,只有cpu0 1st 和 2nd 都正确 3rd 中跑的 是 所有的进程,包括 0 1 2 ... 第一阶段第二阶段 已经将内核初始化好了,但是还没有开始 大规模的使用内核 第三阶段主要是 进程0 进程1 进程2,负责使用内核的服务
[单片机]
OK6410A 开发板 (八) 17 <font color='red'>linux</font>-5.11 OK6410A start_kernel 功能角度 概览
linux内核移植s3c2410,准备工作
1.首先是获得linux内核源码,好像是废话,下载地址如下:ftp://ftp.kernel.org/pub/linux/kernel/v2.6/下载: linux-2.6.16.22.tar.bz2 patch-2.6.22.6.bz2 上面一步需要说明的是一般而言,linux内核的各个补丁文件是根据某个linux内核的版本号来作的patch。 将上面的两个压缩文件解压: tar jxvf linux-2.6.22.tar.bz2 tar jxvf patch-2.6.22.6.bz2 cd linux-2.6.22 patch -p1 ../patch-2.6.22.6 2.linux内核源码结构和Makefile分析 li
[单片机]
Linux下IEEE1394组网技术研究及实现
IEEE 1394,又称火线(FireWire)接口,是一种高速度传送接口,适用于主板的标准工作速率为12.5、25或50 Mb/s,适用于外设的标准所支持的数据率为100、200和400 Mb/s。     IEEE1394具备高速率宽带;实时性等时传输;采用细缆便于安装;采用总线结构;支持热插拔等特点。因此,基予IEEE1394的特点,这里提出一种Linux下IEEE1394组网技术的设计方案。 1 IEEE1394简介     对于多媒体数据传输的高要求催生了IEEE1394(以下简称1394)的发展。多媒体数据传输要具有实时性。单纯图形传输或网络应用一般对实时性要求并不高。例如在Internet上浏览主页,虽有延迟,但一
[嵌入式]
基于OHCI协议的S3C2440 USB Host Driver之协议介绍(四)
HCCA HCCA是256字节的内存结构,系统软件用来与HC发送或接受特殊控制和状态信息。256字节对齐。HC寄存器中的HcHCCA指向HCCA。 HccaInterruptTable为32个周期表的头指针数组。每帧HC仅访问该表一次。当前帧号的低5位用来索引。 HccaFramNumber HC每帧会更新该16位的值。在新帧,HC发SOF后,HC读一个ED开始处理之前,该值写为HcFmNumber的StartingFrame域。在SOF和更新该值之间,HC不在USB上传输任何数据。 HccaDoneHead周期性地,HC将HcDoneHead的值写到HccaDoneHead中,那么主机软件就可以处理完成的TD了。
[单片机]
基于OHCI协议的<font color='red'>S3C2440</font> USB Host Driver之协议介绍(四)
想学嵌入式LINUX?米尔基于瑞萨RZ/G2L开发板免费送!
想学嵌入式LINUX?领免费的瑞萨RZ/G2L开发板! 导语: 刚入门嵌入式,选入门级RZ/G2L开发板,采用邮票孔形式封装了RZ/G2L核心板。 学习嵌入式系统开发是一个渐进的过程,一般我们从51单片机开始,逐步迁移到STM32微控制器,然后学习使用FreeRTOS操作系统,最终进入嵌入式Linux领域。以下是一个典型的学习路线: 51单片机:作为嵌入式系统的入门级平台,学习51单片机可以帮助我们了解基本的嵌入式开发概念和编程技巧。可以学习使用C语言编写简单的驱动程序、控制IO口和外设等。 STM32微控制器:一旦掌握了基本的嵌入式开发概念,可以进一步学习STM32系列微控制器。STM32具有
[嵌入式]
想学嵌入式<font color='red'>LINUX</font>?米尔基于瑞萨RZ/G2L开发板免费送!
01-S3C2440学习入门概念+环境搭建
一、心得: 这两年学过很多东西,有点杂,总感觉不够踏实,于是准备写些东西出来记录一下,希望以后复习方便,同时也给大家学习带来一点帮助。从头把JZ2440系统学习一下,希望后面学习心理会更踏实。以下只是自己学习思路,仅供大家参考。 (1)嵌入式后为什么是LINUX: 之前一直把嵌入式和Linux弄混,到底嵌入式与Linux有什么关系呢。大部分嵌入式设备都是运行Linux系统,因此嵌入式后常加着Linux。Linux是嵌入式软件的核心部分,所以做嵌入式软件Linux一定是要慢慢做到很熟悉的。 (2)嵌入式Linux: 以应用为中心,以计算机技术为基础,软件硬件可裁剪的专用计算机系统。具有很强的定制性特点。 (3
[单片机]
01-S3C2440学习入门概念+环境搭建
基于ARM处理器S3C2440的无线监控系统设计
  无线网络技术在近一两年开始全面普及,无论是在家庭用户还是企业用户中,我们都能看到无线技术的影子。 认识无线监控,相信大家对有线监控系统比较了解,有线监控系统主要由网络摄像机、云台、视频服务器、监控终端等设备组成。而无线监控系统所需要的设备则比较简单,它只需要无线网络摄像机、无线AP、监控终端等设备组成,如果需要远距离无线监控,还要增加户外无线网桥等设备。   在此提出一种基于嵌入式Windows CE5.O的无线视频监控系统。解决了传统视频监控系统成本高、体积大、传输距离有限、功耗大、安装不方便等问题。该系统的设计将为无线视频监控提供一种新的思路、方法和技术路线;在安防、远程教育、远程视频会议、医疗系统等无线视频领域具有广阔
[单片机]
基于ARM处理器<font color='red'>S3C2440</font>的无线监控系统设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved