当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]DirectFB图形加速在嵌入式系统中的应用

引 言
    在嵌入式GUI中需要实现多图形功能,包括图形绘制以及拷贝等。其中的许多功能需要进行大量的数据传递(如图形拷贝),或者需要进行大量的数值运算(如画样条曲线)。如果这些功能都由纯软件实现的话,会占用大量的CPU时间并且需要传递大量的数据,从而影响了图形性能。许多显卡芯片带有图形处理器,能够从硬件上实现一部分图形功能。支持硬件加速的图形库可以通过图形处理器实现这些图形功能,从而减轻了CPU的负担并减少了数据在总线上的传输时间,提高了图形性能。
    本文就如何实现DirectFB的图形加速功能做了详细的介绍,并将实现之后在性能上得到的改进与实现之前做比较,说明DirectFB在优化嵌入式系统GUI上的作用。

1 DirectFB体系结构
1.1 DirectFB简介

    DirectFB项目是由德国Convergence公司推动的Open source计划的一部分,它是专门为满足嵌入式设备要求而开发的小巧、强大、灵活和易于使用的图形系统,并且试图成为一个建构于Linux Framebuffer Device之上的新图形标准。它在FrameBuffer的基础上提供了图形加速、输入设备处理提取、透明窗口和多重显示层的功能,能够对嵌入式系统GUI有较好的支持。与那些通用的嵌入式GUI系统相比,它具有非常简洁、高效的体系结构和硬件图形加速功能。
1.2 DirectFB体系结构
    (1)DirectFB访问硬件显卡
    DirectFB依赖已有的内核接口即帧缓冲设备(/dev/fb)访问图形处理器,也就是说DireetFB需要一个正在工作的帧缓冲驱动。Linux内核有专门的帧缓冲驱动支持某些图形处理器。对于不支持的图形处理器,内核提供VE—SA帧缓冲(这种帧缓冲有一些限制)。DirectFB利用帧缓冲设备做如下工作:
    ◆设置显卡工作模式(分辨率,颜色深度,时序)
    ◆映射显存
    ◆改变帧缓冲视口(针对双缓冲)
    如果某种显卡被DirecFB支持并且在Linux内核中也有这种图形处理器的帧缓冲驱动,DirectFB利用帧缓冲设备做如下额外的工作:
    ◆映射显存IO端口
    ◆关闭帧缓冲驱动中自带的加速功能
    针对具体的图形操作(例如图片拷贝),DirectFB加速驱动访问显存映射的图形处理器I/O端口向图形处理器提交命令。也就是说真正的硬件加速完全是在用户空间实现。这样DirectFB就可以对它支持的图形处理器提供最大限度的硬件图形加速。上层APl支持DirectFB的有:XdirectFB、DirectFBGL、GTK+、DFBTerm、DFBSee、DFBPoint、MythTV、Qt on DirectFB、SDL等。
    (2)DirectFB访问输入设备
    DirectFB使用Linux内核提供的标准设备接口访问输入设备,而不是直接访问输入硬件。具体的结构如图1所示。

2 DirectFB加速驱动原理
   
本节结合笔者的硬件平台来说明如何实现DirectFB加速驱动,笔者所用的平台是MPC8540,图形处理器是Fujitsu MB86296。要实现DirectFB加速驱动,需要有以下几个模块:系统、图形加速器、屏幕及图层。其中系统是指帧缓冲和硬件管理。DirectFB支持的系统有dev/fb、osx、sdl、xll、/dev/mem等。系统可以在DirectFB应用程序配置文件directfbrc中配置。屏幕是指输出设备,如LCD。图层代表独立的图像缓冲区,一般是在显示的时候自动由硬件融合,硬件一般采用alpha技术融合。图层数量的多少取决于图形处理器,一般复杂的图形处理器都支持多层显示。一层内容的改变不影响其他层的内容。
    DirectFB驱动的几点基本要素是:
    ①必须赋给驱动一个唯一的名字并且用如下宏实现:DFB_GRAPHICS_DRIVER(MB86296)。
    ②上面的宏需要定义6个函数供DirectFB Core使用,即初始化/关闭驱动、初始化/关闭加速重获驱动元数据。
    ③在驱动中需要实现的函数有以下6个。
    a)static int dnver_probe(GraphicsDevice*device);
    如果系统支持某种硬件此函数应该返回非零值,它用DirectFB Core来探测哪个驱动支持系统硬件。

    b)static void driver_get_info(GraphicsDevice *device, GraphicsDriverInfo *info);

    些函数用来设驱动信息。

    c)static DFBResult driver_init_driver (GraphicsDevice *device, GraphicsDeviceFuncs *funcs, void *driver_data, void *device_data, CoreDFB *core);

    初始化驱动。在成功获得所有需要的资源后驱动应该注册屏幕和层。同时也需要通过funcs返回硬件加速函数列表。实现方式如下所示。[!--empirenews.page--]


    初始化硬件。通过GraphicsDevicelnfo*device_info设置由硬件支持的加速能力,例如Blit/Draw。具体实现如下:


    实现关闭驱动时需要做的工作。


3 加速性能测试
   
通过笔者编写的驱动程序和DirectFB官方加速测试程序df_dok,可以看出加速与否对应用程序运行速度的影响。下面是没有实现图形加速能力的测试结果。

   
    由上面测试结果比较可以看出,实现了加速能力后的DirectFB可以大大提高图形处理能力。

结 语
    通过笔者在某雷达系统上的测试可以看出,实现图形加速后的GUI界面响应较快,画面流畅,与加速前相比图形性能有了显著的提高。随着DirectFB在嵌入式系统,如数控、手机、嵌入式浏览器、PDA、雷达等领域的应用越来越广泛,基于DirectFB的图形加速将使得嵌入式系统GUI性能得到极大提高。加速驱动程序在DirectFB图形库中的实现,充分利用了图形加速器的加速功能,减轻了CPU的数据处理负担,大大提高了嵌入式系统的GUI性能。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

成都2022年10月19日 /美通社/ -- 近期,平安养老险积极筹备个人养老金的产品设计和系统开发工作,发展多样化的养老金融产品,推动商业养老保险、个人养老金、专属商业养老保险等产品供给。 搭养老政策东风 ...

关键字: 温度 BSP 东风 大众

广东佛山2022年10月19日 /美通社/ -- 空间是人居生活的基础单元,承载着生存与活动的最基本功能。而对于理想空间的解构意义却在物理性容器之外,体现出人们对于空间和生活深层关系的思考,同时也塑造着人与空间的新型连接...

关键字: 温度 BSP 智能化 进程

上海2022年10月19日 /美通社/ -- 10月17日晚间,安集科技披露业绩预告。今年前三季度,公司预计实现营业收入7.54亿元至8.33亿元,同比增长60.24%至77.03%;归母净利润预计为1.73亿...

关键字: 电子 安集科技 BSP EPS

北京2022年10月19日 /美通社/ -- 10月18日,北京市经济和信息化局发布2022年度第一批北京市市级企业技术中心创建名单的通知,诺诚健华正式获得"北京市企业技术中心"认定。 北京市企业技...

关键字: BSP ARMA COM 代码

北京2022年10月18日 /美通社/ -- 10月14日,国际数据公司(IDC)发布《2022Q2中国软件定义存储及超融合市场研究报告》,报告显示:2022年上半年浪潮超融合销售额同比增长59.4%,近5倍于...

关键字: IDC BSP 数字化 数据中心

上海2022年10月18日 /美通社/ -- 2022年9月5日,是首都银行集团成立60周年的纪念日。趁着首都银行集团成立60周年与首都银行(中国)在华深耕经营12年的“大日子”,围绕作为外资金融机构对在华战略的构想和业...

关键字: 数字化 BSP 供应链 控制

东京2022年10月18日  /美通社/ -- NIPPON EXPRESS HOLDINGS株式会社(NIPPON EXPRESS HOLDINGS, INC.)旗下集团公司上海通运国际物流有限公司(Nipp...

关键字: 温控 精密仪器 半导体制造 BSP

广州2022年10月18日 /美通社/ -- 10月15日,第 132 届中国进出口商品交易会("广交会")于"云端"开幕。本届广交会上高新技术企业云集,展出的智能产品超过140,...

关键字: 中国智造 BSP 手机 CAN

Lua RTOS 是一个实时操作系统,设计在嵌入式系统上运行,对 FLASH 和 RAM 内存的要求最低。目前 Lua RTOS 可用于 ESP32, ESP8266 和 PIC32MZ 平台,并可以轻松移植到其他32位...

关键字: Lua RTOS 操作系统 嵌入式系统

通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UATR,是一种串行、异步、全双工的收发器。全双工的UART支持同时双向通信,是嵌入式系统必不可少的d...

关键字: 异步收发 传输器 嵌入式系统

嵌入式软件

15715 篇文章

关注

发布文章

编辑精选

技术子站

关闭