基于ARM的无线视频传输系统的设计

发布者:ShiningSmile最新更新时间:2012-02-13 来源: 电子设计工程 关键字:无线视频传输  ARM  嵌入式系统  Linux 手机看文章 扫描二维码
随时随地手机看文章
    个人计算机设备及其外设的无线化一直是行业趋势,随着科技进步,无线鼠标、无线键盘、无线路由等无线设备纷纷问世。但是目前几乎所有在使用的投影仪都使用线缆和计算机连接,在商务、科研的会议或展示场合,这往往会带来不便。
    视频传输数据量大、实时要求高,而完成无线视频传输,无线链路的数据吞吐量必须大于视频数据流量。近年来Wi-Fi标准不断演进,传输速度越来越高;另一方面,嵌入式处理器的处理能力越来越强,并且芯片厂商会在某些嵌入式处理器中集成DSP核心,使得嵌入式系统的视频解码能力有了一个大幅提高,完全能够完成高解析度的视频解码,这使得传送经过压缩的视频数据成为可能,从而间接地降低了视频数据流所占带宽的大小。这一切,使得无线视频传输成为可能。

1 系统硬件构成
1.1 系统整体框架
    该系统由视频发送端和视频接收端组成,它们之间以Wi-Fi作为通信链路。如图1所示,视频发送端是需要进行幻灯片播放的普通计算机,视频接收端是采用ARM11处理器的嵌入式系统,它负责接收、解码视频信号,并通过VGA接口将视频信号传送至大屏幕显示设备上(如投影仪,大屏幕平板电视等)。

a.jpg


1.2 视频接收端硬件构成
    图像接收端采用以三星公司S3C6410芯片为主控的嵌入式系统。S3C6410芯片采用65 nm制程,最高主频可达667MHz。其内部采用了ARM11核心作为主控部分,并集成了存储器控制器、USB控制器、LCD控制器等多种外部设备控制、接口;与此同时,S3C6410还集成了多媒体加速内核(Multimedia Acceleration)。S3C6410芯片如图2所示。

b.jpg


    该芯片中集成的多媒体处理核心包括了JPEG编译码器,可以实现对JPEG格式图片的硬件解码,从而大大提高了系统对JPEG图片的处理能力。它最大支持编解码65 535x65 535分辨率的JPEG图片。接收系统框图如图3所示。
    视频接收端配备了Marvell 8636为主控的Wi-Fi模块,其支持802.11b/g标准,通过SDIO接口与系统相连。
    视频数据经解压后输出到数模转换模块上,最终转换为VGA信号送至投影仪。
[page]

2 系统软件设计
2.1 系统软件框絮
    视频发送端软件的主要功能:采集当前屏幕显示图像,压缩图像,传送经压缩的图像。除此以外发送端软件还需要完成与接收端连接的建立、断开功能。与之对应的,接收端软件的主要功能是:接收经过压缩的图像数据,进行图像解码,显示图像。发送端和接收端之间通过Wi-Fi链路传输数据。系统软件构架框图如图4所示。

c.jpg


    在会议场合,典型的演示方式是播放幻灯片,在这种应用场合下,图像在大部分时间下都是准静态的,所以在这种情况下视频的刷新速度可以保持在一个较低的数值上,这里我们设定为8帧每秒。此时,若计算机的屏幕分辨率是1 280×800,色深是24 bit,则视频流的速率是197Mb/s。
    而目前普遍采用的802.11 g Wi-Fi标准,其标称速度只有54 Mbps,并不能满足以上所需的数据带宽。所以需要对数据经行压缩。在1 280x800的分辨率下,压缩率需要在5:1以上,可以考虑选用JPEG标准。JPEG压缩品质比较如图5所示。

d.jpg


    JPEG是很灵活的编码标准,其Q值可以在100以内任意取值。但如果图片质量过高,不但增加了图像编码时CPU的负担,而且增加了数据传输量;而图片质量过低又会影响演示质量。需要在图像质量和数据流量之间找到一个平衡点。
    图5是图片在不同的JPEG编码质量下的效果比较,当Q取50时,进过压缩的图片在肉眼观察下任然拥有较高的画质。而此时,压缩率是15:1,大于前面分析中提出的5:1压缩率要求,在这种情况下数据速率为13 Mb/s,能够在802.11 g提供的带宽下进行传输。可见,Q=50时,图像质量和数据流量之间可以取得一个较好的平衡。
2.2 视频发送端软件设计
    该系统的发送端软件基于windows设计。其实现的主要功能可以概括为:采集当前屏幕显示图像,压缩图像,传送经压缩的图像。发送端软件流程图如图6所示。

e.jpg


    在windows环境下捕捉当前屏幕的方法有:GDI,DirectX,以及Windows media API。其中采用GDI时效率不高,不适合应用在该系统中,这里选用DirectX。
    在DirectX中提供了g_pd3dDevice对象,这是一个IDixeet3DDevice9对象,可以调用IDirect3DSudace9::LockRect()方法来获得一个指针,这个指针指向当前显示缓存的首地址,再使用合适的算法计算出当前显示缓存区的大小,就可以很方便地复制显示缓存的内容至指定内存区域,并采用JEPG标准压缩所采集到的数据。具体原理和过程如下:每一个DirectX程序都包含了后台缓存,与此同时,每个程序在默认状态下都可以访问前台缓存,前台缓存即存储了当前的Windows桌面内容。访问这个前台缓存就可以捕捉当前桌面所显示的画面。以下是捕捉屏幕的关键代码。

[page]

    在以下的代码片中,g_pd3dDevice是一个IDirect3D Device9对象,这里假设它已经被初始化过了。这段代码捕获了所需的桌面图像,其后需要对所捕捉到的位图进行处理。此时可以调用IDirect3DSurface9::LockRect()方法,来获得一个指向所所捕获到的位图首字节的指针,然后根据屏幕的尺寸来确定位图的大小,最终将所需的位图数据复制到事先定义好的缓存中。
f.jpg
    需要注意的是,以上代码中所捕捉到的位图,它的宽度不一定就是屏幕的实际宽度,这是由于在存储位图时采用了内存对齐的方法,在位图中内存被按字(word)对齐,所以在每行的结尾处可能需要添加额外的字节来完成内存对其,从而使位图宽度大于实际屏幕宽度。此时可以使用lockedRect.Pitch来获得每行的实际宽度。
    捕捉图像和压缩图像时采用双缓冲模式:在0时隙内,捕捉线程将数据写入Buffer A中,压缩线程Buffer B中的图像,Buffer B中存储了在上个时隙中采集完毕的图像数据;在1时隙,捕捉线程将数据写入Buffer B,压缩线程处理Buffer A中的图像。
    图像捕捉线程和图像压缩线程构成了—个典型的“生产者-消费者”系统,在采用双缓冲的基础上再增加信号机制,可以很好地解决系统中同步与互斥问题。双缓冲示意图如图7所示。

g.jpg


    发送部分调用windows中所提供的相关Winsock(套接字)函数来完成网络传输功能,这里选用UDP协议,并采用丢包、错包不重传机制。(接收端的图像每1/8秒刷新一次,丢弃部分图像数据并不会明显降低用户的使用体验。)
    考虑到在该系统所应用的实际场合中,往往会遇到演示画面在较长一段时间内(数秒至数分钟)并不发生任何变换的情况,可以在图像发送端软件中加入前一帧数据与当前帧比较的功能,若数据未发生改变,则不压缩也不传送图像数据,而只是传送给接收端一个特殊的保持信号,这样可以大大降低处理器负荷以及无线网络的传输负荷,使得无线网络还有余力完成其他用户的其他任务。
2.3 视频接收端软件设计
    图像接收端采用嵌入式Linux操作系统。Linux具有内核可剪裁、开放源代码、开发周期短等优点,并且支持完整的TCP/IP协议栈。
    接收端软件主要功能为:接收经压缩的图像数据,控制处理器中多媒体处理核心解码JPEG图像,显示图像。这里也可以采用相似的双缓冲方法,在接收和解压线程之间设立双缓冲,各自拥有一个轮回跳动的指针来交替对两片缓冲区经行操作。
    图像解压模块负责将接收到的JPEG图像还原为位图。它将利用S3C6410芯片内部的硬件解码来加速系统的执行效率。解压后的数据将被直接写入显示缓存中。
    6410的JPEG解码过程如下:初始化用CresteFile打开“JPG1:”解码驱动,每次解码首先要获取Stream Buffer(IOCTL_JPG_STRBUF),将JPEG数据拷贝到Stream Buffer,接着调用解码(IOCTL_JPG_DECODE),最后通过获取Frame Buffer(IOCTL_JPG_GET_FRMBUF)得到解码后数据。
    在系统运行过程中若出现数据量超出处理能力的情况,则采用直接丢弃的处理方法。接收端软件流程图如图8所示。

h.jpg



3 结束语
    本系统基于三星公司的S3C6410处理器以及Wi-Fi技术,能够完成8帧/秒的无线视频传输,并提供了较好的图像质量(JPEG品质因数50)。图像接收端能够完成对JPEG图片的实时解码。适合应用在低帧速视频传输场合,如幻灯片播放,计算机操作演示、教学等。该系统中的视频接收端的硬件成本可以控制在600元以内。其在图像帧速、图像质量、对发送端处理能力要求、接收端系统成本等因素之间,找到了一个较好的平衡点。

 

关键字:无线视频传输  ARM  嵌入式系统  Linux 引用地址:基于ARM的无线视频传输系统的设计

上一篇:基于ARM的Linux下LonWorks总线设备驱动设计
下一篇:基于ARM7实时网络的设计和实现

推荐阅读最新更新时间:2024-03-16 12:52

基于LINUX和CAN总线的工业嵌入式控制系统研究
1.引言       基于现场总线的控制系统在工业控制中已经得到广泛的应用,现场总线是根据国际电工委员会的IEC61158标准的定义而应用于生产现场,在现场设备之间、现场设备与控制装置之间实行双向、串行、多节点通信的通信网络,也被称为开放式、数字化、多点通信的底层控制网络。现场总线具有系统的开放性;互操作性与互用性;现场设备的智能化与功能自治性;系统结构的高度分散性;对现场环境的适应性的优点,因此,现场总线成为当今自动化领域技术发展的热点之一。近年来已经设计出与现场总线相适应的控制模块,其功耗小、可靠性高、易开发等的优点已经成为嵌入式系统的主要成员。所谓嵌入式应用技术,是指将一个具有完整功能的小型或微型机装置作为一个部件或子系
[工业控制]
日本软银拟以234亿英镑收购ARM
7月18日消息,作为移动处理器行业全球领先的半导体设计方案提供商,目前全世界95%的移动设备都在使用ARM架构处理器,从诞生到现在为止基于ARM技术的芯片有600亿颗 。ARM架构处理器具有性能高、成本低和能耗省的特点。在智能机、平板电脑、嵌入控制、多媒体数字等处理器领域拥有主导地位。 据多家外媒报道,软银已同意以234亿英镑收购芯片巨头ARM。软银将为每股ARM股票现金支付17英镑,较ARM上周收盘价溢价43%。 这是英国退欧公投之后首个大型交易。尽管公投引发外界对英国企业经营环境的担忧,但ARM作为芯片行业领导者,其收入主要以美元形式存在,公投对其影响甚微。 ARM从事低费用、低功耗、高性能芯片研发
[单片机]
ARM初学者
1.做个最小系统板:如果你从没有做过ARM的开发,建议你一开始不要贪大求全,把所有的应用都做好,因为ARM的启动方式和dsp或单片机有所不同,往往会遇到各种问题,所以建议先布一个仅有Flash,SRAM或SDRAM、CPU、JTAG、和复位信号的小系统板,留出扩展接口。使最小系统能够正常运行,你的任务就完成了一半,好在ARM的外围接口基本都是标准接口,如果你已有这些硬件的布线经验,这对你来讲是一件很容易的事情。 2. 写启动代码,根据硬件地址先写一个能够启动的小代码,包括以下部分: 初始化端口,屏蔽中断,把程序拷贝到SRAM中;完成代码的重映射;配置中断句柄,连接到C语言入口。也许你看到给你的一些示例程序当中,bootloader
[单片机]
基于SEP0611的电源管理驱动设计方案
系统休眠是嵌入式系统除关机外最省电的一种状态。休眠(Suspend, STR (Suspend To RAM )),又称为挂起或者挂起到内存,会将目前的运行状态数据存放在内存,并关闭硬盘、外设等设备,进入等待状态,此时除了内存仍然需要电力维持其数据,整机其余部分耗电很少。 恢复时处理器从内存读出数据,回到挂起前的状态,恢复速度较快。一般在电池无故障且充满电的情况下可以维持这种状态数天之久。 1 SEP0611和电源管理单元硬件设计 SEP0611是东南大学自主研发的一款基于UniCore32内核的32位高性能、低功耗RISC微处理器,是定位于手持播放设备、卫星导航产品的高性能处理器。主要分为五个部分:系统与时钟控制、外
[电源管理]
基于SEP0611的电源管理驱动设计方案
OK6410A 开发板 (八) 25 linux-5.11 OK6410A 进程角度 裸机和进程的区别
裸机 代码 : 没有调度函数 有进程概念的代码 : 有调度函数 添加调度要添加什么 添加调度要添加什么 1. pick next task 调度算法 选择 哪个进程 为 下一个进程 2. switch 寄存器的保存和恢复 其他细节 1. 在什么时候调度/即调度时机 调度的技术设想 考虑到 要选择 下一个进程, 考虑 用 单链表即可 考虑到 要保存 寄存器, 考虑用一个 结构体(不同的体系架构有不同的寄存器个数与bit) 保存即可 考虑到换出,当前cpu就无法访问,但是换入,还要能恢复,就需要全部变量 考虑到 每个 任务 要 一套(区分进程/选择进程/保存进程上下文),将 int类型变量/单链表/结
[单片机]
Arm全球执行副总裁吴雄昂先生荣获上海市白玉兰纪念奖
集微网消息,Arm 全球执行副总裁兼大中华区总裁吴雄昂先生荣获2017年上海市白玉兰纪念奖。该奖项旨在表彰吴雄昂先生与Arm公司对于上海市经济建设、社会发展和对外交流等方面做出的突出贡献。   吴雄昂先生表示:“荣获‘上海市白玉兰纪念奖’不仅是项个人荣誉,更是对于Arm中国为上海和中国集成电路行业所作贡献的高度认可。今后,Arm将一如既往地助力中国电子信息技术产业的发展,与中国合作伙伴一起在国内建设合作开放创新的生态系统,帮助国家推进核心技术和知识产权’安全、自主、可控’战略目标的实现。” Arm是全球知名集成电路核心知识产权提供商,其先进的高能效处理器设计已广泛应用于移动计算、物联网、人工智能、数据中心等各个方面。2002年
[手机便携]
加入32nm阵营,ARM是否可以安枕无忧?
  对大多数人而言,“ARM、特许半导体、IBM及三星联手打造32nm和28nm片上系统”也许只是条新闻,而且是条过于晦涩的新闻。然而这对ARM的意义却非同寻常,在一定程度上弥补了其与英特尔的斗争中这半年来的一块软肋。   就在2008年春季IDF上,英特尔正式发布了其凌动(Atom)处理器技术,这项英特尔历史上体积最小、功耗最低的处理器标志着英特尔摆脱了自己的传统领域,挟着自己广泛的上下游产业链关系,公然入侵了ARM所主导的低功耗手持设备市场。   仅是一款产品的亮相并不足以让在手持设备领域耕耘多年的ARM沉不住气,但凌动处理器从2009年起将会正式启用32nm制程,这可能就会让ARM坐立不安了。业内人士都明白,先进的制造工
[嵌入式]
利用嵌入式系统与Internet相连接实现Web服务器的应用
嵌入式Internet是指电子设备通过嵌入式模块而非PC直接接入到Internet,与Internet进行信息交互的过程。目前Internet成为全球最大、信息最丰富的互联网络。用户甚至希望家电设备、仪器仪表以及工业生产中的数据采集与控制等设备也能够连接到Internet上,因为这意味着用户可以方便、快捷、低廉地通过网络进行远程控制、监测和信息传送。美国贝尔实验室的科学家预测,未来将会产生比PC时代多成百上千倍的超级嵌入式Internet服务器。Internet技术和嵌入式技术的相互融合,为嵌入式系统的设计和产品开发带来了前所未有的发展空间和机遇。 1 、单片机嵌入式Web应用的硬件系统设计 在硬件系统的设计中,本文采用了AT
[单片机]
利用<font color='red'>嵌入式系统</font>与Internet相连接实现Web服务器的应用
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

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

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