色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux GUI子系統(tǒng)概述 GUI子系統(tǒng)的構(gòu)成及工作流程

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

作者:Nick

開始前的幾點(diǎn)說明:

本文會(huì)盡量從初學(xué)者的角度去描述整個(gè)Linux整個(gè)圖形子系統(tǒng),但由于其復(fù)雜性,涉及到的模塊比較多,可能會(huì)需要一些相關(guān)的先驗(yàn)知識(shí);

對(duì)于系統(tǒng)的介紹,分析的著重點(diǎn)可能不會(huì)在于為什么該這樣設(shè)計(jì),而是在于在現(xiàn)有的顯示系統(tǒng)下,我們能做些什么來適配我們的目的;

1.前言

GUI作為人機(jī)交互信息量最大的一種方式,無論在消費(fèi)還是工業(yè)級(jí)產(chǎn)品上都大行其道。但同時(shí)由于它處在整個(gè)系統(tǒng)的核心位置,對(duì)外需要通過鼠標(biāo)、鍵盤 、顯示器進(jìn)行I/O獲取和控制,在內(nèi)需要負(fù)責(zé)圖形的生成,渲染,整個(gè)系統(tǒng)復(fù)雜度比較高。本文會(huì)從以下幾個(gè) 方面來介紹GUI子系統(tǒng):

以Linux下的原生GUI子系統(tǒng)為例,概述GUI子系統(tǒng)的概念,軟硬件部分在GUI子系統(tǒng)的中的角色及大致構(gòu)成;

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

分析現(xiàn)有GUI框架下,在硬件加速方面,我們能做的事情,并以非常簡(jiǎn)單的圖像處理為例,給出相應(yīng)的設(shè)計(jì)方案;

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

2.Linux GUI子系統(tǒng)概述

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

窗口系統(tǒng)一般都具備以下基本功能:

通過WIMO(Window-視窗、Icon-圖標(biāo)、Menu-選單、Pointer-指標(biāo))4個(gè)基本元素來實(shí)現(xiàn)人機(jī)交互;

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

在實(shí)現(xiàn)方式上,大部分Linux下的窗口系統(tǒng)都是通過X來響應(yīng)不同的交互請(qǐng)求及輸出到顯示器上。因此,整個(gè)應(yīng)用層的GUI結(jié)構(gòu)如下:

因此,在應(yīng)用層面上,GUI系統(tǒng)的核心部分是X,X的總體功能一句話描述如下:通過指定的協(xié)議接受本地或遠(yuǎn)程的鼠標(biāo)、鍵盤需求,并切輸出相應(yīng)的窗口畫面到顯示設(shè)備上。細(xì)分來講,X主要由以下4個(gè)組件構(gòu)成:

X server:負(fù)責(zé)軟硬件的管理,將輸入的軟硬件事件通過一定協(xié)議轉(zhuǎn)發(fā)給X client,將輸出的圖形繪制在屏幕上;

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

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

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

我們?cè)購?a target="_blank">開發(fā)者的角度來看一下GUI。以Qt為例,我們?cè)谑褂肣t組件進(jìn)行開發(fā)時(shí),一般是利用組件中的各種類庫,去響應(yīng)各種事件輸入(單雙擊鼠標(biāo)、鍵盤操作)以及給出相應(yīng)的輸出到顯示器上。其實(shí)際工作的時(shí)候,這些工作底層都是通過和window system(X)之間的交互實(shí)現(xiàn)的。

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

3.Linux GUI子系統(tǒng)的構(gòu)成及工作流程

從應(yīng)用層深入到內(nèi)核中去。暫不考慮在linux下的GUI,我們知道,單純的顯示圖片的話,整個(gè)數(shù)據(jù)流的走向是這樣的:

即按照一定時(shí)序時(shí)序,將圖像信息從內(nèi)存中輸出到顯示接口上。若在生成Frame buffer里面的圖像數(shù)據(jù)時(shí)不僅通過軟件memory處理,還用到了硬件加速的話,數(shù)據(jù)流則變?yōu)槿缦拢?/p>

其中accelerate logic就是顯卡部分(若是SOC的片內(nèi)GPU模塊,則是通過片內(nèi)高速總線進(jìn)行數(shù)據(jù)交互的,若若是獨(dú)立顯卡,一般是通過pci-e高速串行接口進(jìn)行數(shù)據(jù)傳輸?shù)模0堰@個(gè)數(shù)據(jù)流走向放入Linux中,數(shù)據(jù)流和控制流都需要和用戶層進(jìn)行交互,也就是說,Linux下,必須得有相關(guān)的軟件驅(qū)動(dòng)給用戶層提供相應(yīng)的API。這也就是DRM(Direct Rendering Manager)和KMS(Kernel Mode Setting)的角色。

Linux原生系統(tǒng)中提供由DRM+KMS構(gòu)成的DRI(Direct Rendering Infrastructure)中:

DRM主要負(fù)責(zé)負(fù)責(zé)數(shù)據(jù)流,即通過軟件或硬件,生成目標(biāo)圖像,存儲(chǔ)在framebuffer中;

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

Kernel將這兩大快的基本API抽出來封裝成libdrm供X使用,整個(gè)應(yīng)用層+kernel相關(guān)的GUI結(jié)構(gòu)如下圖:

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

4.我們能做些什么

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

編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • lcd
    lcd
    +關(guān)注

    關(guān)注

    34

    文章

    4437

    瀏覽量

    168072
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11336

    瀏覽量

    210099
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux下輸入子系統(tǒng)上報(bào)觸摸屏坐標(biāo)

    ??在 Linux 中,輸入子系統(tǒng)是由輸入子系統(tǒng)設(shè)備驅(qū)動(dòng)層、輸入子系統(tǒng)核心層(Input Core)和輸入子系統(tǒng)事件處理層(Event Ha
    的頭像 發(fā)表于 09-25 08:56 ?2536次閱讀
    <b class='flag-5'>Linux</b>下輸入<b class='flag-5'>子系統(tǒng)</b>上報(bào)觸摸屏坐標(biāo)

    Linux LED子系統(tǒng)詳解

    Linux LED子系統(tǒng)詳解
    的頭像 發(fā)表于 06-10 10:37 ?1578次閱讀
    <b class='flag-5'>Linux</b> LED<b class='flag-5'>子系統(tǒng)</b>詳解

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

    看作如下:3、Linux GUI子系統(tǒng)構(gòu)成工作流程從應(yīng)用層深入到內(nèi)核中去。暫不考慮在linux
    發(fā)表于 04-02 21:42

    如何使用Linux內(nèi)核中的input子系統(tǒng)

    的 input 子系統(tǒng)下提供的 API 函數(shù)接口,完成設(shè)備的注冊(cè)即可。在本章節(jié)中我們來學(xué)習(xí)一下如何使用 Linux內(nèi)核中的 input 子系統(tǒng)
    發(fā)表于 12-29 07:20

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

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

    基于ARM-Linux的嵌入式系統(tǒng)GUI開發(fā)研究

    目前嵌入式系統(tǒng)中的GUI 的開發(fā)已經(jīng)成為研究的熱點(diǎn),本文以Intel 公司Xscale PXA255 為內(nèi)核的XSBase255嵌入式平臺(tái),以ARM-Linux 為操作系統(tǒng),接著介紹對(duì)
    發(fā)表于 06-29 09:37 ?15次下載

    嵌入式稅控機(jī)GUI系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    本文從Linux 系統(tǒng)的體系結(jié)構(gòu)從發(fā),分析了作為華工II 型稅控收款機(jī)界面子系統(tǒng)ESCUT GUI 系統(tǒng)
    發(fā)表于 08-14 09:09 ?8次下載

    嵌入式稅控機(jī)GUI系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    本文從Linux 系統(tǒng)的體系結(jié)構(gòu)從發(fā),分析了作為華工II 型稅控收款機(jī)界面子系統(tǒng)ESCUT GUI 系統(tǒng)
    發(fā)表于 08-14 09:10 ?20次下載

    基于Linux內(nèi)核輸入子系統(tǒng)的驅(qū)動(dòng)研究

    Linux因其完全開放的特性和穩(wěn)定優(yōu)良的性能深受歡迎,當(dāng)推出了內(nèi)核輸入子系統(tǒng)后,更方便了嵌入式領(lǐng)域的驅(qū)動(dòng)開放。介紹了Linux的設(shè)備驅(qū)動(dòng)基礎(chǔ),詳細(xì)闡述了基于Linux內(nèi)核輸入
    發(fā)表于 09-12 16:38 ?23次下載

    Linux內(nèi)核輸入子系統(tǒng)的驅(qū)動(dòng)研究

    Linux內(nèi)核輸入子系統(tǒng)的驅(qū)動(dòng)研究
    發(fā)表于 10-31 14:41 ?14次下載
    <b class='flag-5'>Linux</b>內(nèi)核輸入<b class='flag-5'>子系統(tǒng)</b>的驅(qū)動(dòng)研究

    詳細(xì)了解Linux設(shè)備模型中的input子系統(tǒng)

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

    嵌入式Linux常用GUI系統(tǒng)

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

    Windows 子系統(tǒng)助力 Linux 2.0

    Windows 子系統(tǒng)助力 Linux 2.0
    的頭像 發(fā)表于 01-04 11:17 ?679次閱讀

    linux-usb子系統(tǒng)的核心描述

    本文將描述linux-usb子系統(tǒng)的核心,主要分析其核心的初始化流程,文中源碼基于內(nèi)核版本:4.1.15。
    的頭像 發(fā)表于 01-14 09:37 ?2797次閱讀

    Linux clock子系統(tǒng)是什么

    clock子系統(tǒng) Linux的時(shí)鐘子系統(tǒng)由CCF(common clock framework)框架管理, CCF向上給用戶提供了通用的時(shí)鐘接口,向下給驅(qū)動(dòng)開發(fā)者提供硬件操作的接口 。各結(jié)構(gòu)體關(guān)系
    的頭像 發(fā)表于 09-27 14:25 ?874次閱讀
    <b class='flag-5'>Linux</b> clock<b class='flag-5'>子系統(tǒng)</b>是什么
    主站蜘蛛池模板: 日本无码免费久久久精品| 国产人妻麻豆蜜桃色| 婷婷久久无码欧美人妻| 久久成人免费观看草草影院| 宝贝乖女好紧好深好爽老师| 亞洲人妻AV無碼在線視頻| 日本美女毛茸茸| 美女被触手注入精子强制受孕漫画| 国产人成无码视频在线观看| qvod小电影| 在线观看亚洲AV无码每日更新| 午夜福利电影网站鲁片大全| 欧美一级黄色影院| 毛片免费在线播放| 久久国产精品永久免费网站| 国产亚洲精品品视频在线| 儿子你得太大了慢点插| 99视频精品全部免费 在线| 真人美女精美小穴| 亚洲精品自在在线观看| 偷拍自偷拍亚洲精品| 日日噜噜夜夜狠狠扒开双腿| 欧美精品一卡二卡| 美女胸禁止18以下看| 久久日本精品国产精品| 河南老太XXXXXHD| 国产日韩欧美有码在线视频| 国产成人免费a在线资源| 抽插喷S骚爽去了H| 成人区精品一区二区不卡AV免费| 99国产精品欲AV蜜桃臀麻豆| 最新无码专区在线视频| 中文字幕s级优女区| 中文字AV字幕在线观看| 在线观看视频一区| 曰产无码久久久久久精品| 一道精品视频一区二区三区| 亚洲一区综合图区| 伊人青青久久| 在线观看免费国产成人软件| 一区二区乱子伦在线播放|