0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

DirectFB的特性、架构和基本开发方案研究

电子设计 来源:单片机与嵌入式系统应用 作者:李桂兰,阳旭东 2020-09-17 16:28 次阅读

引言

DirectFB是一个提供硬件图形加速、输入设备处理抽象并集成了透明功能窗体系统和多显示层处理的开源库。通过对底层硬件不支持的图形操作以回调函数实现,DirectFB实现硬件设备的完全抽象。另外DirectFB在设计之初就充分考虑嵌入式系统的固有特性,体积小巧,资源消耗低。作为嵌入式系统中强大的图形处理库,DirectFB成为Linux下图形处理的一个新的标准(CELF AVG 1.0标准)。

使用DirectFB可以绕开X Window系统,让应用程序直接操作Frame Buffer,从而加速和简化图形操作。这对于嵌入式系统是很重要的,因为在资源有限的嵌入式系统中通常没有运行X Window。当然,DirectFB可以采用XDirectFB来开发,这样原来基于X Window开发的程序不需要修改就可以运行起来。

DirectFB采用的是LGPL协议,因而可做商用开发库。LinuxTV、Palm Foleo等移动公司的项目均采用DirectFB作为底层图形库。

值得一提的是,考虑跨平台、多语言等特定需求,开发者可以选择以DirectFB为后端的Cairo图形库进行2D图形操作。实践证明,这是一种嵌入式系统中高效、通用的解决方案。

本文在介绍DirectFB相关特性之后,通过实例说明了其在嵌入式系统中的开发方法,并对基于DirectFB的Cairo图形库的使用关键点作了相关介绍。

1 轻量级图形处理库DirectFB

DirectFB提供了丰富的图形操作方法,而且所有操作在芯片支持的前提下均可进行硬件加速。例如:矩形和三角形绘制和填充、BLIT、 Porter/Duff规则混色等。Di—reetFB内部集成了一个简易的窗口系统,支持透明窗体。显示层和输入设备等资源可以通过加锁的方式访问。 DirectFB对任何通用表面(surface)都提供了抽象,这使得窗口和全屏之间的切换只需要简单的设置合作级别即可。

1.1 DirectFB整体框图介绍

DirectFB通过操作系统中Frame Buffer驱动程序提供的内核接口来访问图形硬件设备,这意味着DirectFB需要Frame Buffer驱动才可以工作。无论是否使用硬件加速,DirectFB都需要驱动完成设置分辨率、色深等视频模式,映射Frame Buffer等操作。对于特定的图形操作,DirectFB通过访问图形硬件的内存映射端口,提交命令给显卡加速引擎来实现。其整体框架如图1所示。

DirectFB的特性、架构和基本开发方案研究

1.2 DirectFB接口框架

DirectFB提供了一套C接口给用户调用DirectFB的各项功能。在DirectFB中,接口实质上是一个结构体,结构体中包含了功能函数指针,不同接口的函数指针指向不同的核心函数。比如IDireetFBSurface接口代表屏幕中可操作的区块,其中封装了BLIT、画框、画线和FLIP等核心操作。

其中IDirectFB是整个库的顶层接口,可以通过DirectFBCreate函数来创建,其他接口可以通过这个接口创建。所有存在的接口也可以通过它来枚举访问。图2展示了DireetFB的接口框架。

表1对主要接口模块的功能作了简单说明。具体的操作可以查看DirectFB官方网站的相关帮助文档。

2 DirectFB应用开发

下面通过一个例子说明使用DirectFB接口的开发方法:

上面几行代码分别声明了DirectFB的主接口、显示层接口、窗口接口、绘图表面接口和消息缓冲接口。然后通过下列代码对DirectFB和它的接口进行初始化:

一旦接口创建完毕,即可调用接口的相关方法实现DirectFB的提供图形操作功能。比如,下面的代码实现了在窗体的绘图表面绘制矩形框的操作:

值得一提的是DirectFB实现了消息系统,用以响应用户输入、键盘鼠标等事件。对于嵌入式系统,DirectFB支持tslib方式接口的触摸屏输入消息响应。

3 以DirectFB为后端的2D图形处理

考虑以跨平台输出,引入2D图形处理库Cairo。令Cairo以DirectFB为实际绘图后端(back end)的方案,在嵌入式系统中可以获得很好的性能以及极大的通用性。

Cairo广泛地应用在GNOME、GTK+、pango等著名的软件中进行2D图形处理。以C语言开发的Cairo绑定了C++、Ruby、Perl、 Java和.Net/mono等多种语言接口。其中Python和C++绑定在开源社区代码中得到广泛的应用。

Cairo有自己的Surface管理机制,可以在SDL、XWindow或者DirectFB的Surface上创建Cairo Surface。然后,在这个Cairo Surface上创立Cairo主接口。下面的代码演示了这一过程:

得到Cairo的主接口cr之后,就可调用一系列Cairo的2D绘图API了。下面的代码演示了用Cairo的API划线:

Cairo丰富的特性在解决移植性的同时,可以弥补直接使用DirectFB 2D功能上的不足。比如DirectFB没有画虚线的API,但是调用Cairo的cairo_set_dash和cairo_stroke可以很轻松地实现这一功能。

4 小结

本文在介绍了DirectFB的特性和基本框架之后,阐述了DirectFB的基本开发方法,并提出一种使用基于DirectFB的Cairo 2D图形处理库的方案。它是一种兼顾了效率、通用性和功能性的嵌入式系统2D图形处理方案。笔者采用该方案实现了Windows CE GDI接口在ARM—Linux上的移植,工作良好,特在此与广大嵌入式系统开发人员分享。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    453

    文章

    50368

    浏览量

    421656
  • Window
    +关注

    关注

    0

    文章

    82

    浏览量

    37244
  • 嵌入式
    +关注

    关注

    5068

    文章

    19008

    浏览量

    303038
收藏 人收藏

    评论

    相关推荐

    详解MIPS架构

    设计特性。 此外,我们还将对基于MIPS和ARM架构的MCU设计解决方案进行比较,这两种架构是目前最流行的两大嵌入式处理器IP架构。我们的分
    发表于 07-08 07:19

    DirectFB和Cairo的嵌入式图形该怎么进行开发

    DirectFB是一个提供硬件图形加速、输入设备处理抽象并集成了透明功能窗体系统和多显示层处理的开源库。通过对底层硬件不支持的图形操作以回调函数实现,DirectFB实现硬件设备的完全抽象。
    发表于 11-06 08:14

    求一种基于DirectFB的Cairo 2D图形处理库的方案

    本文在介绍了DirectFB特性和基本框架之后,阐述了DirectFB的基本开发方法,并提出一种使用基于DirectFB的Cairo 2D
    发表于 04-27 06:24

    DirectFB在优化嵌入式系统GUI上有什么作用?

    DirectFB体系结构包括哪些?DirectFB加速驱动原理是什么?
    发表于 04-27 06:26

    STM32的IIC特性及其架构

    IIC通讯协议是什么?STM32的IIC特性有哪些?STM32的IIC架构是由哪些部分组成的?
    发表于 10-14 09:34

    浅析AWroks架构的定义及特性

    在上篇《架构设计》阐述了分层的一些理论。本书应该也是更一步阐述AWroks架构的理念。其中还有作者对之前写面向过程的程序的一些反思,由面向过程转向面向对象编程的思考。三大特性都是基于“类”这个概念
    发表于 11-08 07:58

    STM32的SPI特性架构资料分享

    目录一、STM32 的 SPI 特性架构:二、SPI初始化结构体详解:三、硬件SPI—读写串行 FLASH 实验一、STM32 的 SPI 特性架构:1、引脚简介:(1)(Slav
    发表于 12-10 07:31

    基于IP架构的cdma2000 1x系统TrFO特性的设计与

    本文介绍了基于IP架构的分组语音核心网的TrFO特性,并结合自行开发的cdma2000 1x系统,讨论了TrFO特性在基于IP架构的cdma
    发表于 06-10 16:08 18次下载

    DirectFB在数控系统中的实现与应用

    本文论述了DirectFB 在数控系统中的实现与应用。结合本课题数控机床控制系统的实际例子,讨论了将GTK+界面程序移植到基于Framebuffer 的图形库系统DirectFB 上的重要性、具体实现过程
    发表于 08-14 15:18 4次下载

    DirectFB在Embedded Linux的应用

    nEmbedded Linux 与消费性电子装置 nDirectFB nGTK+/DirectFB 实例 nMHP n重要概念 nFusion nDrivers nGraphics nInput nSounds nImage/Video/Font Providers nDirectFB 相关计画
    发表于 05-10 14:50 35次下载
    <b class='flag-5'>DirectFB</b>在Embedded Linux的应用

    基于DirectFB的嵌入式播放器设计

     本文首先对DirectFB进行了详细的介绍,接着提出了一种宽松的、可分解的嵌入式播放器设计方案。该方案资源消耗少、可移植性强、系统各个模块间依赖度小,使得用户能够根据自己的
    发表于 05-15 09:31 1544次阅读
    基于<b class='flag-5'>DirectFB</b>的嵌入式播放器设计

    Android的架构与应用开发研究_姚昱旻

    首先简要介绍了新一代智能手机平台一Adnorid的系统架构, 然后通过和现有智能手机开发平台进行比较研究分析了该平台的结构特点,最后通过在该平台上开发一个在线SRS阅读器验证该平台的可
    发表于 11-02 17:13 0次下载

    300A铝塑复合管焊接逆变器特性研究和可行方案

    300A铝塑复合管焊接逆变器特性研究和可行方案
    发表于 09-15 09:12 6次下载
    300A铝塑复合管焊接逆变器<b class='flag-5'>特性</b>的<b class='flag-5'>研究</b>和可行<b class='flag-5'>方案</b>

    基于DirectFB的嵌入式播放器的设计与实现

    。本文提出了一种基于DirectFB嵌入式播放器解决方案,有效地降低嵌入式系统的资源消耗,适用于CPU频率小于400MHz的中低端嵌入式系统。DirectFB是一个轻量级的GUI开发
    发表于 11-30 11:55 638次阅读
     基于<b class='flag-5'>DirectFB</b>的嵌入式播放器的设计与实现

    基于DirectFB开发库实现可分解的嵌入式播放器的设计方案

    本文首先对DirectFB进行了详细的介绍,接着提出了一种宽松的、可分解的嵌入式播放器设计方案。该方案资源消耗少、可移植性强、系统各个模块间依赖度小,使得用户能够根据自己的系统需求快速设计满足自己要求的播放器。
    的头像 发表于 08-12 08:12 3114次阅读