微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 电源设计 > 基于嵌入式linux的全彩LED显示屏脱机控制系统设计方案

基于嵌入式linux的全彩LED显示屏脱机控制系统设计方案

时间:09-13 来源:互联网 点击:

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

本文从以下两个方面对软件部分的设计进行介绍:

1)建立嵌入式Linux系统平台

2)LED显示屏脱机专用播放软件设计与实现

文章将简要介绍基于S3C2440平台的嵌入式Linux系统平台的搭建,然后着重介绍播放软件在开放性、可移植性、高效性方面所采用的设计方法。

4.1 建立嵌入式Linux系统平台

Linux内核具有体积小,效率高,成熟稳定,源代码开放,资源丰富,内核直接提供丰富的网络协议,支持多种文件系统等诸多优点。本课题移植了Linux2.6.18内核,该版本内核具有稳定性好、开发工具支持度好的优点。这部分工作主要包括:

1)针对硬件平台移植u-boot.

2)剪裁并交叉编译Linux内核。移植USB存储盘、DM9000A网络芯片、SM501显卡的驱动到内核

3)交叉编译busybox,生成ext2格式的Initrd文件系统镜像

4)通过u-boot将内核和Initrd镜像烧写到Nand Flash上,设置内核启动参数和u-boot启动命令来启动内核

经过上述工作,建立了一个小型化的嵌入式Linux平台。限于篇幅,本文对嵌入式Linux平台的建立细节问题不深入介绍。

4.2 LED显示屏脱机专用播放软件设计与实现

LED显示屏脱机播放软件的主要设计目标是支持视频播放、图片显示、多区域显示、流媒体播放、远程控制。由于整个软件项目比较庞大,本文将只选择几个关键模块进行详细说明,并侧重介绍软件方面如何利用SM501来实现高性能显示及视频播放。对流媒体播放和远程控制部分不做介绍。

4.2.1 多区域显示功能模块的设计

随着LED显示屏幕分辨率的不断增加,同一个显示屏对信息容量的需求也相应的增长,在面向广告的LED屏中这种需求尤其突出。典型的LED多区域显示情形是一个视频区域,多个图片区域,一个滚动字幕区域。脱机播放系统主要面向户外广告屏,因此,必须重点考虑多区域显示功能。

为了更好的支持LED屏幕多区域显示,必须从传统的全屏显示概念中脱离出来,建立基于区域(zone)显示的概念,即显示内容总是在某个显示区域上完成显示,单屏显示只是多区域显示的一个特例。在结构上区域按层次划分,区域可以划分为多个子区域。同级子区域的位置不能重叠。这样,在理论上,可以支持任意的以矩形为单位的分区域显示形式。多个区域并行显示,通过多线程方式实现。

每个区域都包含一个播放列表(playlist)。每个播放列表由一系列显示项目(playitem)组成。 显示项目的概念是指在某个显示区域上进行一次完整的显示过程。如一段视频播放,一幅图片定时显示,文字的运动显示等。程序采用了面向对象的设计思想,将不同类型的显示项目的共性抽象出来,以方便不断扩展的新的显示项目和客户定制的显示内容。

所有的显示项目,无论其内容如何,都可以抽象为一个随时间变化的状态机。每个显示项目在时间的推移下在其所属的区域中完成自身的显示,也就是完成一个从初始化到结束的状态转换过程。因此,playitem是一个抽象基类。每种类型的显示项目只需重新实现playitem提供的公共调用接口即可。

每个区域具有一个播放线程,该线程不断地从playlist中取出一个显示项目,执行其状态转换接口完成显示过程。这种设计允许不同类型的显示项目混合排列在同一个显示列表下,极大的增加了播放过程安排的灵活性。

多区域显示设计模型如图2示。

图2 多区域显示模型

4.2.2基于SM501的2D加速显示接口设计

显示层的设计旨在提供一套可移植的、使用方便的2D显示接口,包括基于区域内部坐标的应用显示层接口和基于屏幕坐标而与硬件无关的底层显示接口。应用显示层给显示项目playitem提供简单的基于区域坐标的显示接口。基于屏幕坐标的底层显示直接工作在SM501硬件之上,最大化利用了SM501硬件加速能力,同时还提供了可移植的接口。在移植到其他的2D硬件上只需要重新实现底层显示接口即可。

由于硬件设计上SM501处于slave mode与S3C2440连接,SM501不能访问系统内存,所有要进行加速操作的显示内容必须存放在SM501的独立显存上,这样不方便移植DirectFB作为底层显示接口。因此本文按照通用的2D显示接口,独立实现了一套基于

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

网站地图

Top