精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于嵌入式系統GUI如何實現DirectF的圖形加速功能的功能應用

電子設計 ? 來源:單片機與嵌入式系統應用 ? 作者:劉小雙,李建平,鄭 ? 2020-09-14 17:55 ? 次閱讀

引言

嵌入式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所示。

基于嵌入式系統GUI如何實現DirectF的圖形加速功能的功能應用

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返回硬件加速函數列表。實現方式如下所示。

初始化硬件。通過GraphicsDevicelnfo*device_info設置由硬件支持的加速能力,例如Blit/Draw。具體實現如下:

實現關閉驅動時需要做的工作。

3 加速性能測試

通過筆者編寫的驅動程序和DirectFB官方加速測試程序df_dok,可以看出加速與否對應用程序運行速度的影響。下面是沒有實現圖形加速能力的測試結果。

由上面測試結果比較可以看出,實現了加速能力后的DirectFB可以大大提高圖形處理能力。

結語

通過筆者在某雷達系統上的測試可以看出,實現圖形加速后的GUI界面響應較快,畫面流暢,與加速前相比圖形性能有了顯著的提高。隨著 DirectFB在嵌入式系統,如數控手機、嵌入式瀏覽器、PDA、雷達等領域的應用越來越廣泛,基于DirectFB的圖形加速將使得嵌入式系統 GUI性能得到極大提高。加速驅動程序在DirectFB圖形庫中的實現,充分利用了圖形加速器的加速功能,減輕了CPU的數據處理負擔,大大提高了嵌入式系統的GUI性能。

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19178

    瀏覽量

    229201
  • 嵌入式
    +關注

    關注

    5072

    文章

    19026

    瀏覽量

    303532
  • 接口
    +關注

    關注

    33

    文章

    8526

    瀏覽量

    150863
收藏 人收藏

    評論

    相關推薦

    七大嵌入式GUI盤點

    嵌入式圖形用戶界面(GUI)是一種為嵌入式系統設計的用戶界面,它可以讓用戶通過圖形化的方式與設備
    發表于 09-02 10:58

    嵌入式Linux圖形系統(GUI)快速參考手冊

    --一個雙重協議的(GPL或者商業協議)的項目,建立一個小型的窗口系統,支持嵌入式系統和設備.它提供相應Win32API的窗口管理功能.Fluffy Spider: FancyPan
    發表于 02-14 13:40

    嵌入式多任務GUI實現什么功能

    嵌入式GUI(Graphic Uset Interface)系統就是在嵌入式系統中為特定的硬件設備或環境而設汁的
    發表于 09-24 06:23

    一種嵌入式GUI軟件結構實現方案

    綜合比較了嵌入式GUI的幾種實現方式,結合嵌入式系統的特點,研究了嵌入式
    發表于 02-21 11:36 ?24次下載

    嵌入式系統圖形用戶界面(GUI)的設計與研究Design a

    本文提出一種通用的嵌入式系統圖形用戶界面(GUI)的設計思想和體系結構。其實現方法是以消息驅動機制為核心,采取窗口間的層疊順序管理和相互剪切
    發表于 05-26 16:33 ?39次下載

    嵌入式單窗口GUI系統的設計與實現

    圖形用戶界面(GUI)系統和操作系統(OS)進行類比,提出了一種新的嵌入式GUI
    發表于 07-30 10:00 ?21次下載

    基于Linux的輕量級嵌入式GUI系統實現

    本文介紹了嵌入式圖形用戶界面(GUI)的特點、發展概況以及嵌入式圖形用戶界的實現方法。針對開發自
    發表于 08-31 11:52 ?23次下載

    嵌入式系統開發之ucos在各種硬件上的GUI實現

    嵌入式系統開發之ucos在各種硬件上的GUI實現.rar 嵌入式用戶圖形接口uC/
    發表于 03-15 14:10 ?79次下載

    嵌入式圖形系統μc/GUI的移植和開發

    嵌入式圖形系統μc/GUI的移植和開發 摘要  嵌入式系統的開發已成為新的行業熱點,而
    發表于 12-25 17:55 ?1144次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>圖形</b><b class='flag-5'>系統</b>μc/<b class='flag-5'>GUI</b>的移植和開發

    基于嵌入式Qt的樓宇對講系統GUI平臺設計

    提出了嵌入式樓宇對講的GUI實現和流程。文章還對嵌入式Linux的移植做了論述,對樓宇對講系統涉及底層事件和軟件構架進行分析,完成了樓宇對講
    發表于 01-13 15:33 ?95次下載
    基于<b class='flag-5'>嵌入式</b>Qt的樓宇對講<b class='flag-5'>系統</b><b class='flag-5'>GUI</b>平臺設計

    嵌入式圖形用戶界面系統設計分析

    為了滿足嵌入式系統的界面設計需求,給出了一種圖形用戶界面系統SKY-GUI的設計思路和其在嵌入式
    發表于 10-16 15:24 ?1次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>圖形</b>用戶界面<b class='flag-5'>系統</b>設計分析

    Qt圖形編程基礎之嵌入式GUI

    分享到:標簽:Qt圖形編程 嵌入式GUI Linux 操作系統 12.1 嵌入式GUI簡介 目前
    發表于 10-18 14:45 ?0次下載

    ARM嵌入式系統GUI開發研究

    GUI發展至今,已經有了許多的種類,具有了強大的功能嵌入式GUI已經成為一個成功的嵌入式系統
    發表于 12-04 14:19 ?528次閱讀

    探究Microwindows的嵌入式GUI設計

    嵌入式圖形用戶界面( Embedded GUI) 是嵌入式計算機系統的核心技術之一。本文首先闡述Embedded GUI的應用現狀,指出Mi
    的頭像 發表于 03-24 10:26 ?2078次閱讀
    探究Microwindows的<b class='flag-5'>嵌入式</b><b class='flag-5'>GUI</b>設計

    嵌入式Linux常用GUI系統

    嵌入式Linux常用GUI系統【整理】嵌入式Linux中常用的GUI圖形用戶界面)
    發表于 11-01 16:31 ?4次下載
    <b class='flag-5'>嵌入式</b>Linux常用<b class='flag-5'>GUI</b><b class='flag-5'>系統</b>