ImageVerifierCode 换一换
格式:DOC , 页数:8 ,大小:107KB ,
资源ID:7399088      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-7399088.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于嵌入式linux的全彩LED显示屏脱机控制系统设计与实现.doc)为本站会员(wj)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于嵌入式linux的全彩LED显示屏脱机控制系统设计与实现.doc

1、基于ARM-Linux的全彩LED显示屏脱机播放系统的设计与实现丁铁夫1,陈伟1,2,郑喜凤1,苑振1,2(1.长春光学精密机械与物理研究所 ,吉林省长春市 1300332.中国科学院研究生院 , 北京 100039)摘要:本文介绍了一种基于嵌入式系统的全彩LED显示屏脱机播放系统的设计方案。该方案旨在建立一套具有视频播放,图片、文字显示,支持多区域显示和流媒体播放,支持高分辨率的全彩LED屏幕的小型播放系统。系统硬件部分采用了S3C2440作为处理核心,并且使用嵌入式显示芯片SM501提供2D图形硬件加速功能。软件部分移植了Linux 2.6内核,开发了一套建立在Linux内核之上的高显示性

2、能的专用LED播放软件。本文较好地解决了目前LED显示屏脱机控制卡局限于支持单色或者伪彩LED、分辨率低、不能播放高质量视频的现状。关键字:LED脱机播放系统;嵌入式Linux;S3C2440;SM501;中图分类号:TP333.8 文献标识码:A 文章编号:1 引言高分辨率LED显示屏的应用日益广泛,而目前国内LED显示屏的播放控制系统主要采用联机方式来实现,即PC机视频发送板,通过千兆以太网或者光纤,将视频实时发送到LED显示屏端的视频接收板上完成显示。这种方式具有良好的人机操作界面和优秀的视频显示质量,对于近距离LED显示屏联机播放是一种重要的显示手段。而对于超长距离、户外LED显示屏而

3、言,联机播放显然需要付出很高的代价才能实现,有些场合甚至无法实现。而脱机方式在这些场合则显示出其独特的优势。脱机方式的特点在于无人值守,专用性强,占用资源少,经济便携。同时可以通过一定的控制途径如Internet、GSM网络等可对播放过程及内容进行实时的干预和修改。目前国内的脱机控制系统多由嵌入式系统如单片机、SOC、DSP、RISC处理器等实现。大多数脱机控制卡只能显示较小的分辨率,支持伪彩或者单色,不能播放高质量的视频。本设计旨在实现具有高分辨率、高质量视频播放、流媒体播放、多区域显示等功能的小型专用LED脱机播放系统。本文将从系统的硬件结构和原理、软件各模块设计与实现、性能测试及结论三个

4、方面进行说明。2脱机播放系统的硬件结构和工作原理目前国内LED屏脱机控制系统多采用高性能RISC处理器作为核心,典型的以ARM9为核心的SoC芯片工作频率大多在200600MHz之间。然而显示方面的性能依然比较低下,大多数芯片,典型的如S3C24X0,通过内部集成LCD控制器来实现显示功能,一般只支持到640X480的显示分辨率,16bit颜色深度。处理器芯片内置的LCD控制器是在系统内存中设置一小部分作为帧存(Frame Buffer),LCD控制器使用一个专用的高速DMA通道不断地读取帧存中的象素数据到FIFO memory中,最后生成视频时序输出到外部LCD接口,因此视频显示直接占用系统

5、总线带宽。支持更高的分辨率和色彩深度意味着占用更多的系统带宽,比如1024768分辨下,24位深度,60Hz场频的显示输出,显示占用的系统带宽在1.1Gbps以上。小型嵌入式系统有限的总线带宽显然不可能很好地支持高分辨率真彩显示。另一方面,对于一般的 2D图形操作如象素复制、缩放、色空间转换等需要软件实现,处理器对Frame Buffer的频繁操作带来的系统性能下降十分突出,极大的影响了CPU在视频解码方面的效率。鉴于上述分析,使用普通的面向手持设备的嵌入式体系结构无法满足全彩大型LED屏幕的显示要求,本文选择了工业级ARM芯片S3C2440+SM501显示加速协处理器的解决方案,从根本上解决

6、了上述分析两个影响显示性能的关键问题。S3C2440是以ARM920T为核心,基本工作频率400MHz,最高可达533MHz的一款工业级SoC。其内部集成了RART,USB,I2C,LCD,NAND,MMC/SD controller等多种常见IO设备控制器。SM501是一款便携式多媒体协处理器芯片,专门为嵌入式工业提供显示功能,具有视频和2D加速能力。它支持多种输入/输出接口,包括模拟RGB、数字LCD接口、8位并行接口、USB、UART、IrDA、Zoom Video、AC97或I2S、SSP、PWM和I2C。SM501的2D引擎包括一个前端色彩空间转换器,支持41和18的比例。LCD视频

7、流水线支持一个YUV色彩空间转换。通过将优化的128位的2D图形引擎和一个与本地帧存储器连接的高带宽链接相结合,SM501提供面向工业的2D图形加速功能。2D图形引擎包含一个命令翻译器(一个增强型的DMA引擎),对于工作在150 MHz的32位数据宽度的SDRAM,SM501的DMA引擎读取2D操作数的带宽可达600 MB/s。SM501支持的最大显示分辨率为12801 024,可以轻松支持普通PC显示分辨率1024768。整个硬件系统原理如图1示。S3C2440与SM501在slave 模式下通过系统总线连接,SM501连接8MB的本地帧存,S3C2440可以通过系统总线直接访问SM501的

8、本地帧存。系统挂接DM9000A 10/100M网络芯片,上位机脱机控制软件通过Internet网络连接到脱机系统进行实时控制。脱机系统通过网络实现流媒体功能。对于SM501输出的数字视频,采用FPGA进行采集和分发。SM501与FPGA之间通过LCD数字接口连接,包含24 bit并行象素点RGB数据、象素时钟pclk,行场同步及DE信号。FPGA采集LCD接口输出的象素数据并实时转发到象素位置对应的扫描板,一帧图象传输完毕后,所有扫描板将同时更新显示新图像帧。每个扫描板控制的分辨率为256 256,脱机系统最大可以控制1024 768分辨率。FPGA内部逻辑详细设计不作为本文讨论的主要内容。

9、图1 脱机播放系统硬件组成框图Fig.1 Main Components of Hardware3 软件系统LED脱机播放软件设计的基本要求包括:系统必须能够胜任7 24小时连续稳定运行,因此播放软件必须具备健壮性。虽然S3C2440处理速度相对已经较快,但是解码对CPU时间的占用仍然是一个很突出的问题,因此播放软件必须具备高效性,尤其是尽最大可能发挥出SM501提供的2D加速显示能力。另外由于SoC更新速度很快,硬件平台必然会有更好选择,因此软件在保证高效率的前提下必须提高其可移植性。最后是建立开放式的软件架构,使之具备可扩展、可升级性,以便于逐步开发新的功能。本文从以下两个方面对软件部分的

10、设计进行介绍: 1)建立嵌入式Linux系统平台。2)LED显示屏脱机专用播放软件设计与实现。文章将简要介绍基于S3C2440平台的嵌入式Linux系统平台的搭建,然后着重介绍播放软件在开放性、可移植性、高效性方面所采用的设计方法。4.1 建立嵌入式Linux系统平台。Linux内核具有体积小,效率高,成熟稳定,源代码开放,资源丰富,内核直接提供丰富的网络协议,支持多种文件系统等诸多优点。本课题移植了Linux2.6.18内核,该版本内核具有稳定性好、开发工具支持度好的优点。这部分工作主要包括:1)针对硬件平台移植u-boot。2)剪裁并交叉编译Linux内核。移植USB存储盘、DM9000A

11、网络芯片、SM501显卡的驱动到内核。3)交叉编译busybox,生成ext2格式的Initrd文件系统镜像。4)通过u-boot将内核和Initrd镜像烧写到Nand Flash上,设置内核启动参数和u-boot启动命令来启动内核。经过上述工作,建立了一个小型化的嵌入式Linux平台。限于篇幅,本文对嵌入式Linux平台的建立细节问题不深入介绍。4.2 LED显示屏脱机专用播放软件设计与实现LED显示屏脱机播放软件的主要设计目标是支持视频播放、图片显示、多区域显示、流媒体播放、远程控制。由于整个软件项目比较庞大,本文将只选择几个关键模块进行详细说明,并侧重介绍软件方面如何利用SM501来实现

12、高性能显示及视频播放。对流媒体播放和远程控制部分不做介绍。4.2.1 多区域显示功能模块的设计随着LED显示屏幕分辨率的不断增加,同一个显示屏对信息容量的需求也相应的增长,在面向广告的LED屏中这种需求尤其突出。典型的LED多区域显示情形是一个视频区域,多个图片区域,一个滚动字幕区域。脱机播放系统主要面向户外广告屏,因此,必须重点考虑多区域显示功能。为了更好的支持LED屏幕多区域显示,必须从传统的全屏显示概念中脱离出来,建立基于区域(zone)显示的概念,即显示内容总是在某个显示区域上完成显示,单屏显示只是多区域显示的一个特例。在结构上区域按层次划分,区域可以划分为多个子区域。同级子区域的位置

13、不能重叠。这样,在理论上,可以支持任意的以矩形为单位的分区域显示形式。多个区域并行显示,通过多线程方式实现。每个区域都包含一个播放列表(playlist)。每个播放列表由一系列显示项目(playitem)组成。显示项目的概念是指在某个显示区域上进行一次完整的显示过程。如一段视频播放,一幅图片定时显示,文字的运动显示等。程序采用了面向对象的设计思想,将不同类型的显示项目的共性抽象出来,以方便不断扩展的新的显示项目和客户定制的显示内容。所有的显示项目,无论其内容如何,都可以抽象为一个随时间变化的状态机。每个显示项目在时间的推移下在其所属的区域中完成自身的显示,也就是完成一个从初始化到结束的状态转换

14、过程。因此,playitem是一个抽象基类。每种类型的显示项目只需重新实现playitem提供的公共调用接口即可。每个区域具有一个播放线程,该线程不断地从playlist中取出一个显示项目,执行其状态转换接口完成显示过程。这种设计允许不同类型的显示项目混合排列在同一个显示列表下,极大的增加了播放过程安排的灵活性。多区域显示设计模型如图2示。图2 多区域显示模型Fig.2 Model of Multi-Zone Display4.2.2基于SM501的2D加速显示接口设计显示层的设计旨在提供一套可移植的、使用方便的2D显示接口,包括基于区域内部坐标的应用显示层接口和基于屏幕坐标而与硬件无关的底层

15、显示接口。应用显示层给显示项目playitem提供简单的基于区域坐标的显示接口。基于屏幕坐标的底层显示直接工作在SM501硬件之上,最大化利用了SM501硬件加速能力,同时还提供了可移植的接口。在移植到其他的2D硬件上只需要重新实现底层显示接口即可。由于硬件设计上SM501处于slave mode与S3C2440连接,SM501不能访问系统内存,所有要进行加速操作的显示内容必须存放在SM501的独立显存上,这样不方便移植DirectFB作为底层显示接口。因此本文按照通用的2D显示接口,独立实现了一套基于屏幕坐标的通用底层2D显示接口。在实现上通过mmap把SM501的控制寄存器和独立显存全部从

16、内核空间映射到用户空间,这样在程序中可以直接访问SM501的寄存器和管理本地显存,避免了在显示时应用程序与内核之间的数据交换,显示加速作用得以充分发挥。基于对SM501的直接访问,底层显示层实现了一套基本接口,包括显存分配与释放和基本2D加速操作如画线(line)、矩形填充(fill_rect),位图复制(bitblt)、缩放(bitblt_stretch)、色空间转换(CSC)等。其中对视频播放性能影响最大的是缩放和色空间转换。SM501的绘图引擎(Draw Engine)包括两个部分,2D绘图引擎和CSC颜色空间转换模块。2D绘图引擎主要用来绘制直线(基于Bresenham算法),矩形填充

17、,复制(Bitblt),旋转复制(Rotation bitblt)。缩放与颜色空间转换功能都是通过CSC模块来实现。CSC模块可以实现YUV422,YUV420,RGB565,RGB888几种色彩空间及格式转换到RGB565和RGB888,色空间转换隐含了缩放功能。显存分配与释放管理是对映射到用户空间的Frame buffer进行的。实现上使用空闲链表的方法,并且采用最先适应的原则。最先适应分配算法有利于保留更大的连续内存块给那些一次性内存需求量大的分配请求。由于视频解码后色空间转换和缩放必须使用硬件加速来实现,因此总是预留1M的显存空间给视频显示使用。在显存不足的情况下,通过malloc分配

18、系统内存。相应的所有显示层接口的地址参数均被设计成为自动识别地址属于系统内存还是独立显存,如果地址属于系统内存,则表明当前显存不足,于是使用软件的方法实现绘图操作。在释放显存时,程序若识别参数地址为系统内存,将调用free去完成释放。在多个显示区域同时显示的情况下,显存的分配与释放管理以及所有的基于硬件加速的2D操作均被互斥地调用,以避免多线程同时对SM501资源进行争用带来的与时间相关的执行错误。由于SM501加速操作只能使用本地帧存的物理地址,而通过mmap映射得到的是进程空间的虚拟地址,显存分配得到的地址也是基于映射后的地址,因此写入SM501寄存器中作为地址的操作数必须将进程空间地址转

19、化为实现的帧存物理地址。转化方法就是用显示分配函数得到的地址减去mmap得到的首地址。建立在底层显示层之上,软件实现了与屏幕绝对坐标无关的基于区域内部坐标的2D加速显示接口。区域内部坐标与区域本身在屏幕上的绝对坐标相加即可得出要显示的绝对坐标。另外每个显示区域都有对齐、缩放方式的选项。缩放方式可以有不缩放,线性缩放,非线性缩放三种,对齐在X,Y方向上分别有三种对齐方式。因为实际显示的内容大小与显示区域大小往往不是相同的,因此这两种选项对实际显示效果影响极大。如区域宽高比与显示内容宽高比相差较大时,非线性缩放将导致显示内容严重畸变,而线性缩放将显示内容保持为原来的宽高比。显示层次如图4。图3 显

20、示层次Fig.3 Display layer4.2.3脱机系统的视频播放器设计这部分主要介绍针对SM501显卡的解码过程优化设计,并给出优化后的性能测试数据。LED脱机播放系统目前支持MPEG-4视频格式的AVI文件播放。MPEG-4是MPEG(运动图像专家组)制定的视频压缩标准,是目前用得最广泛的一种视频编码标准。MPEG组织于1999年1月正式公布了MPEG-4 V1.0版本。MPEG-4除采用第一代视频编码(MPEG-1,MPEG-2,H.263等)的核心技术,如变换编码、运动估计与运动补偿、量化、熵编码外,还提出了一些新的有创见性的关键技术,包括视频对象提取技术、VOP视频编码技术、视

21、频编码可分级性技术、运动估计与运动补偿技术等。Xvid是开源的MEPG-4码器,遵守GPL通用公共许可证,也是目前国际上公认的性能最佳的MPEG-4编解器之一,支持MPEG-4 SP框架。本文移植了Xvidcore-1.1.3到arm-Linux环境,并且基于Xvid设计了自己的LED脱机系统视频播放器。AVI文件格式是Windows系统下最常用的一种视频文件格式。AVI文件并不局限任何视频编码格式。AVI文件格式是基于RIFF(Resource Interchange File Format)文件格式的。RIFF基于“块”为信息单位,每个块由一个4字符组成的FOURCC字标识。整个文件由一个

22、RIFF块构成,RIFF块和LIST(列表)块可以包含子块。包含子块的块结构为:FOURCC块长度块类型块数据。不包含子块的块结构为:FOURCC块长度数据。AVI文件在RIFF的基础上定义了自己的块类型和数据。一个AVI RIFF文件由3大部分组成:RIFF文件头,hdrl列表,movi列表,除此外还有一个可选的索引idxl块。其中hdrl列表包含 avih 子块和 strl 子列表,文件中有多少个流,hdrl 列表中就有多少个strl 子列表,strl子列表在 hdrl 中的次序就是流的序号。Movi列表中是实际的MPEG-4编码流,avih子块包含了AVI视频文件的头信息,比较重要的是帧

23、频。一般的AVI视频文件只有一个视频流。户外LED屏幕对于音频播放需求少,因此本文并不涉及音频解码。Xvid解码过程中要不断输入MPEG-4视频编码比特流,视频流从AVI文件中的movi列表子块中提取。AVI文件存储在USB可移动存储盘上,文件IO时间延迟会导致解码过程产生间隙性的视频播放停顿,因此有必要采用单独的IO线程从AVI文件中不断提取视频流。IO线程与解码线程构成一种生产者消费者类型的线程同步关系,需要引入同步互斥量来保证其同步工作。由于MPEG-4视频编解码的原始颜色空间是YUV420,如果直接输出YUV420平面格式Xvid不需要进行颜色空间转换,其余输出格式则需要经过色空间转换

24、算法得到。Xvidcore-1.1.3解码器输出不同的颜色空间格式对整个解码时间的影响非常显著。表1是在S3C2440平台下使用Xvidcore-1.1.3解码同一MPEG-4视频文件(分辨率320x176) 使用不同输出格式的帧频比较。表1 Xvid不同输出格式解码速率比较表Table 1 Compare of vXvid decode rate in different output color formatXvid解码输出格式解码速率(fps)XVID_CSP_ABGR (RGB x888)15.77 fpsXVID_CSP_RGB (RGB 888)19.30 fpsXVID_CSP_

25、RBG565 (RGB 565)34.93 fpsXVID_CSP_I420 (YUV4:2:0平面格式)47.82 fps本文使Xvid解码直接输出YUV420平面格式,避免了Xvid使用软件算法进行色空间转换,然后使用SM501提供的YUV420转RGBx888硬件色空间转换命令完成视频帧的显示。这种方式下SM501与Xvid解码器并行工作,发挥了最佳的效果。同时为了避免了对数据的二次复制,本文直接在SM501本地显存中申请了空间作为解码帧输出地址,这些优化使得整个解码器的性能提高了23倍。 图4表示了简要的视频播放软件流程。通过硬件缩放和象素复制,本文实现了1024768分辨率下全屏流畅

26、视频显示和多区域视频同步显示等普通嵌入式系统难以达到显示效果。多个显示区域下脱机播放系统AVI视频文件播放性能测试结果如表2示。可以看到,由于有硬件2D加速支持,解码速率与视频实际显示速率完全相等,区域大小以及多个区域同时显示对系统性能没有显著影响。表2 视频播放器性能测试Table 2 Video player performance test results视频文件及分辨率解码速率fps显示速率单个640x4801011 fps全屏或多个不同大小显示区域同步显示 1011fps单个480x3202023fps全屏或多个不同大小显示区域同步显示 2023fps两个320x240 AVI文件1

27、5fps两个显示区域同时播放不同视频文件均能达到15fps以上测试结果表明该系统足以胜任大多数全彩类型商业广告LED大屏幕脱机视频播放。图4 优化的视频播放流程Fig.4 Optimized routine of video play5 结论本文采用高速MCU和SM501嵌入式显卡作为硬件平台,突破了嵌入式系统在显示性能上的瓶颈,接口明确。在软件上移植了Linux2.6内核作为软件平台,在效率和可移植性方面做了较好平衡,运用了良好的软件设计思想,开发出具有开放式体系结构的LED脱机播放软件。该系统已经成功应用于全彩LED显示屏的脱机播放和控制。参考文献1 SamSung Electronics

28、 Co.The S3C2410A 32 bit RISC Microprocessor User ManualRKorea:Samsung,20042 Silicon Motion,IncSM501Mobile Multimedia Companion Chip Databook Version 102R台湾 :Silicon Motion,20033王立凤.多媒体协处理器SMSO1在嵌入式系统中的应用J单片机与嵌人式系统应用,2006(6):42-434巨政权,原亮. 基于S3C2440和SM501的嵌入式系统硬件设计J.计算机技术与发展,2008(10):207-2135杜春雷ARM体系结

29、构与编程M北京:清华大学出版社,20036李驹光,郑耿,江泽明.嵌入式Linux系统开发详解M. 北京:清华大学出版社.2006.3Design and realization of full color LED screen offline display system based on ARM-LinuxDING Tie-fu1, CHEN Wei1,2, ZHENG Xi-feng 1, YUAN Zhen1,2(1. Changchun Institute of Optic, Fine Mechanics and Physics, Chinese Academy of Sciences

30、, Changchun 130033, China;2. Graduated School of Chinese Academy of Sciences, Beijing 100039, China)AbstractThis article introduces a way of design for full color LED screen offline display system base on embedded system . The goal of this project is to develop a solution of tiny display system that

31、 can support full color high definition LED screen and support video ,picture and text display,multi-zone diplay and streaming Media. The hardware uses S3C2440 as main processor,and a SM501 which provide high performance in 2D graphic acceleration。Linux 2.6 kernel is ported to this platform ,and bas

32、ed on Linux kernel,a suit of effective LED display program is developed. This project solves most limitations consist in current LED offline control card,such as support only homochromy or pseudo color LED screen,support only low definition screen and no support for high quality video display. Key words:LED offline display;embedded Linux; S3C2440; SM

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2