在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

Linux GUI子系統概述 GUI子系統的構成及工作流程

454398 ? 來源:Nick ? 作者:Nick ? 2020-12-05 10:45 ? 次閱讀

作者:Nick

開始前的幾點說明:

本文會盡量從初學者的角度去描述整個Linux整個圖形子系統,但由于其復雜性,涉及到的模塊比較多,可能會需要一些相關的先驗知識;

對于系統的介紹,分析的著重點可能不會在于為什么該這樣設計,而是在于在現有的顯示系統下,我們能做些什么來適配我們的目的;

1.前言

GUI作為人機交互信息量最大的一種方式,無論在消費還是工業級產品上都大行其道。但同時由于它處在整個系統的核心位置,對外需要通過鼠標、鍵盤 、顯示器進行I/O獲取和控制,在內需要負責圖形的生成,渲染,整個系統復雜度比較高。本文會從以下幾個 方面來介紹GUI子系統:

以Linux下的原生GUI子系統為例,概述GUI子系統的概念,軟硬件部分在GUI子系統的中的角色及大致構成;

著重分析Linux下DRM+KMS的軟件實現方式,并且以Xilinx的Zynq-7000 SOPC為例,詳細介紹相關片內硬件模塊在GUI系統中的角色及實現方式;(由于GPU模塊硬件的源碼的開源程度不高,不在本文的分析范圍內)

分析現有GUI框架下,在硬件加速方面,我們能做的事情,并以非常簡單的圖像處理為例,給出相應的設計方案;

本文的最后一部分,會在Zynq-7000上面(digilent的Zybo開發板)部署整個Linux+硬件邊緣提取處理+Qt+HDMI的環境,并給出具體的實現流程;

2.Linux GUI子系統概述

GUI作為人機交互的一種方式,通過其承載的大量信息提高了信息交流的效率。這里我們不介紹鼠標、鍵盤等輸入設備,只介紹輸出顯示這一子模塊。生活中大家最常見的圖形化界面估計就是圖像化界面的桌面環境,即窗口系統,(如下圖的Ubuntu、Xfce等)。

窗口系統一般都具備以下基本功能:

通過WIMO(Window-視窗、Icon-圖標、Menu-選單、Pointer-指標)4個基本元素來實現人機交互;

上述的4個基本元素都能通過第三方的程序來擴展(也就是安裝新程序);

在實現方式上,大部分Linux下的窗口系統都是通過X來響應不同的交互請求及輸出到顯示器上。因此,整個應用層的GUI結構如下:

因此,在應用層面上,GUI系統的核心部分是X,X的總體功能一句話描述如下:通過指定的協議接受本地或遠程的鼠標、鍵盤需求,并切輸出相應的窗口畫面到顯示設備上。細分來講,X主要由以下4個組件構成:

X server:負責軟硬件的管理,將輸入的軟硬件事件通過一定協議轉發給X client,將輸出的圖形繪制在屏幕上;

X client:每個需要涉及到GUI的App,可以實例化為一個X client,X client主要是響應X server分發下來的事件,通過處理后,將待繪制的圖像回傳給X Server;

X window manager:X window manager作為一個特殊的X client,主要負責為X server管理多個X client(一個具體的例子就是對虛擬桌面的管理),起著視窗管理員的角色。常見的X window manager如下:

. GNOME (GNU Network Object Model Environment);
. KDE (K Desktop Enviroment)
. twm (Tab Window Manager)
. XFCE (XForms Common Environment)
. Display manager: 提供登陸許可環境以獲得X Window的控制

我們再從開發者的角度來看一下GUI。以Qt為例,我們在使用Qt組件進行開發時,一般是利用組件中的各種類庫,去響應各種事件輸入(單雙擊鼠標、鍵盤操作)以及給出相應的輸出到顯示器上。其實際工作的時候,這些工作底層都是通過和window system(X)之間的交互實現的。

這些基本事件的響應,基本的圖像單元的繪制,是window system通過封裝成一個通用的GUI工具集提供給QT(如X的xlib)。對于Qt而言,這個window system可以是X,也可以是QT自行研發的QWS視窗系統。整個應用層的GUI系統則可看作如下:

3.Linux GUI子系統的構成及工作流程

從應用層深入到內核中去。暫不考慮在linux下的GUI,我們知道,單純的顯示圖片的話,整個數據流的走向是這樣的:

即按照一定時序時序,將圖像信息從內存中輸出到顯示接口上。若在生成Frame buffer里面的圖像數據時不僅通過軟件memory處理,還用到了硬件加速的話,數據流則變為如下:

其中accelerate logic就是顯卡部分(若是SOC的片內GPU模塊,則是通過片內高速總線進行數據交互的,若若是獨立顯卡,一般是通過pci-e高速串行接口進行數據傳輸的)。把這個數據流走向放入Linux中,數據流和控制流都需要和用戶層進行交互,也就是說,Linux下,必須得有相關的軟件驅動給用戶層提供相應的API。這也就是DRM(Direct Rendering Manager)和KMS(Kernel Mode Setting)的角色。

Linux原生系統中提供由DRM+KMS構成的DRI(Direct Rendering Infrastructure)中:

DRM主要負責負責數據流,即通過軟件或硬件,生成目標圖像,存儲在framebuffer中;

KMS主要負責控制流,即針對外置LCD以及指定的顯示模式設置,將生成好了的frame數據信息送到響應display port上(VGA、HDMI等);

Kernel將這兩大快的基本API抽出來封裝成libdrm供X使用,整個應用層+kernel相關的GUI結構如下圖:

整個data flow也替換成了上圖的flow1~flow6。關于DRM和KMS的詳細介紹我們會放到這個系列的第2篇,這里再提一下涉及到3D的GUI。在需要用到3D圖形交互的場景,往往對著實時性要求較高,X中的server/client之間的數據協議解析以及數據交互導致的延時是這種場景不能容忍的。因此DRI是支持這種app越過X直接和內核交流的方式的。比如,Qt中可以直接通過opengl相關類庫直接調用libdrm中API控制硬件中的Frambuffer軟硬件,此時結構如下:

4.我們能做些什么

在一個常見的系統研發中,子系統中我們能做的基本就是適配,適配不同的CPU、適配不同的OS、適配不同的顯示設備。而對于專業的GPU研發團隊來說,則需要在現有DRI框架下,為自己的GPU邏輯設計專用的驅動,軟硬件工作量龐大。作為一個高性能計算實驗室,當然要將一些高速計算融進去。在本系列第3篇,我們將會在Xilinx的Zynq7000系列芯片上,利用其中的PL邏輯資源,設計非常簡單的圖像處理IP,加速DRM中的Framebuffer數據并通過HDMI顯示到LCD上。

編輯:hfy

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

    關注

    34

    文章

    4507

    瀏覽量

    170867
  • Linux
    +關注

    關注

    87

    文章

    11469

    瀏覽量

    212911
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    Linux下輸入子系統上報觸摸屏坐標

    ??在 Linux 中,輸入子系統是由輸入子系統設備驅動層、輸入子系統核心層(Input Core)和輸入子系統事件處理層(Event Ha
    的頭像 發表于 09-25 08:56 ?2917次閱讀
    <b class='flag-5'>Linux</b>下輸入<b class='flag-5'>子系統</b>上報觸摸屏坐標

    Linux LED子系統詳解

    Linux LED子系統詳解
    的頭像 發表于 06-10 10:37 ?1820次閱讀
    <b class='flag-5'>Linux</b> LED<b class='flag-5'>子系統</b>詳解

    板載linux OS下,利用FPGA做圖像硬件加速

    看作如下:3、Linux GUI子系統構成工作流程從應用層深入到內核中去。暫不考慮在linux
    發表于 04-02 21:42

    如何使用Linux內核中的input子系統

    的 input 子系統下提供的 API 函數接口,完成設備的注冊即可。在本章節中我們來學習一下如何使用 Linux內核中的 input 子系統
    發表于 12-29 07:20

    為什么cubeprogrammer在Linux上使用GUI安裝程序!?

    我在 windows 10 上,想使用 linux 子系統 (WSL) 交叉編譯 OpenST。到目前為止,我完成了所有步驟……直到我看到立方體程序員正在使用 GUI 安裝程序……女巫在 WSL 上不起作用……是否有計劃使該 c
    發表于 01-31 07:39

    基于ARM-Linux的嵌入式系統GUI開發研究

    目前嵌入式系統中的GUI 的開發已經成為研究的熱點,本文以Intel 公司Xscale PXA255 為內核的XSBase255嵌入式平臺,以ARM-Linux 為操作系統,接著介紹對
    發表于 06-29 09:37 ?15次下載

    嵌入式稅控機GUI系統設計與實現

    本文從Linux 系統的體系結構從發,分析了作為華工II 型稅控收款機界面子系統ESCUT GUI 系統
    發表于 08-14 09:09 ?8次下載

    嵌入式稅控機GUI系統設計與實現

    本文從Linux 系統的體系結構從發,分析了作為華工II 型稅控收款機界面子系統ESCUT GUI 系統
    發表于 08-14 09:10 ?20次下載

    基于Linux內核輸入子系統的驅動研究

    Linux因其完全開放的特性和穩定優良的性能深受歡迎,當推出了內核輸入子系統后,更方便了嵌入式領域的驅動開放。介紹了Linux的設備驅動基礎,詳細闡述了基于Linux內核輸入
    發表于 09-12 16:38 ?23次下載

    Linux內核輸入子系統的驅動研究

    Linux內核輸入子系統的驅動研究
    發表于 10-31 14:41 ?14次下載
    <b class='flag-5'>Linux</b>內核輸入<b class='flag-5'>子系統</b>的驅動研究

    詳細了解Linux設備模型中的input子系統

    linux輸入子系統linux input subsystem)從上到下由三層實現,分別為:輸入子系統事件處理層(EventHandler)、輸入
    發表于 05-12 09:04 ?1145次閱讀
    詳細了解<b class='flag-5'>Linux</b>設備模型中的input<b class='flag-5'>子系統</b>

    嵌入式Linux常用GUI系統

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

    Windows 子系統助力 Linux 2.0

    Windows 子系統助力 Linux 2.0
    的頭像 發表于 01-04 11:17 ?859次閱讀

    linux-usb子系統的核心描述

    本文將描述linux-usb子系統的核心,主要分析其核心的初始化流程,文中源碼基于內核版本:4.1.15。
    的頭像 發表于 01-14 09:37 ?3092次閱讀

    Linux clock子系統是什么

    clock子系統 Linux的時鐘子系統由CCF(common clock framework)框架管理, CCF向上給用戶提供了通用的時鐘接口,向下給驅動開發者提供硬件操作的接口 。各結構體關系
    的頭像 發表于 09-27 14:25 ?1094次閱讀
    <b class='flag-5'>Linux</b> clock<b class='flag-5'>子系統</b>是什么
    主站蜘蛛池模板: 黑人边吃奶边扎下面激情视频 | 久久亚洲精品玖玖玖玖 | 亚洲黄页网站 | 黄色aaa大片| 1024手机看片国产 | 午夜毛片视频高清不卡免费 | 亚洲jizzjizz妇女 | 三级毛片免费看 | 五月网婷婷 | 亚洲码欧美码一区二区三区 | 免费一级特黄特色大片在线观看看 | 美女网站视频一区 | 色视频久久 | 四虎影院2022 | 亚洲天堂一区二区三区 | 日韩一级欧美一级在线观看 | 国产高清一区二区三区四区 | 九九热在线视频观看 | 色香蕉网站 | 7777sq国产精品 | 国产日本在线观看 | 久久免费公开视频 | 免费恐怖片 | 欧美簧片 | 亚洲人成毛片线播放 | 午夜在线观看视频 | 久久99精品久久久久久园产越南 | 正在播放羽月希与黑人bd在线 | 日本三级电影在线观看 | 天天久久影视色香综合网 | 亚洲黄网在线 | 久久综合五月开心婷婷深深爱 | 免费视频不卡一区二区三区 | 色偷偷91久久综合噜噜噜噜 | 丁香五月欧美成人 | 国产精品 视频一区 二区三区 | 757一本到午夜宫 | 国产第一页在线观看 | 中国胖女人一级毛片aaaaa | 欧美色视频在线观看 | 狼狼狼色精品视频在线播放 |