91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

以xc7z010 SOPC為例的DRM-KMS方案分析

電子設(shè)計 ? 來源:Nick ? 作者:Nick ? 2020-12-04 12:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者:Nick

在上一小節(jié)Linux GUI加速(1)_GUI系統(tǒng)概述》中,我們從應(yīng)用層到kernel層大致分析了linux中的圖形界面的構(gòu)成,并在最后給出了kernel中DRM+KMS的軟件顯示框架以及accelerate logic+framebuffer+displayport的硬件結(jié)構(gòu)。在這一子篇會將這兩塊內(nèi)容詳細展開。

本篇主要以Xilinx的xc7z010 的SOPC(zybo的開發(fā)板)為硬件平臺,在以下幾方面介紹:

① 以zynq 7000的邏輯資源(PL)搭建CRTC/Encoder/Connector硬件模塊,以HDMI輸出接口為例,介紹各個模塊的接口特性(Framebuffer對應(yīng)著物理的DDR部分);

② 會先給出DRM+KMS驅(qū)動框架下的主要模塊,并針對上述硬件子模塊分析對應(yīng)的內(nèi)核驅(qū)動部分;

DRI在片上系統(tǒng)的硬件構(gòu)成

在各類SOC上,CRTC+Endode+Connector一般是集成在一個外設(shè)模塊掛在系統(tǒng)總線上,以ARM為例,CRTC/Endoder等需要配置的外設(shè)模塊,配置接口掛在APB總線,數(shù)據(jù)接口直接在AHB總線上,實現(xiàn)和Framebuffer的高速通信。

我們按照connector-->encoder-->crtc-->framebuffer的順序倒過來介紹吧。

Connector

Connector其實就是和顯示器連接的物理接口,常見的有VGA/HDMI/DVI/DP等。以HDMI為例,HDMI的接口信號主要由以下幾組信號組成:

① 1組TMDS clock:差分時鐘用于同步信號驅(qū)動;
② 3組TMDS data:查分數(shù)據(jù)傳輸視頻信號;
③ 1組I2C:用于EDID的獲??;
④ 1組音頻總線;

(注:EDID全稱是Extended Display Identification Data(擴展顯示標識數(shù)據(jù)),目的是讓視頻信號輸出設(shè)備輸出前獲取到存儲在顯示器內(nèi)部的相關(guān)參數(shù),如支持的分辨率、幀率、圖像格式:RGB等,因此,整個輸出的控制參數(shù)是由以下幾個部分綜合決定的:

①通過connector讀出的顯示器支持的參數(shù);
② 內(nèi)核靜態(tài)配置或devicetree傳入的參數(shù);
③ 用戶空間輸入的參數(shù))

HDMI類型的connector的任務(wù)就是輸出顯示器解碼芯片所需的信號時序(主要是TMDS clock以及TMDS data)。

Encoder

Encoder比較好理解,在此處其實就是將一定格式的圖像信號(如RGB、YUV等)編碼成connector需要輸出的信號。以HDMI為例,幀/行同步/顯示內(nèi)容都是通過TMDS data的串行總線輸出的,那么并行的時序按照HDMI的標準編碼為串行順序則是Encoder的任務(wù);

在本片中的XC7Z010 SOPC中Encoder+Connector如下:


CRTC

CRTC的任務(wù)是從Framebuffer中讀出待顯示的圖像,并按照相應(yīng)的格式輸出給Encoder(本處的CRTC功能受限,相關(guān)格式配置只能通過配置硬件IP參數(shù)來改變,而不能通過內(nèi)核)。在本例中,CRTC的硬件構(gòu)成如下:

① AXI Video Direct Memory Access IP,通過AXI4總線獲取DDR中Framebuffer數(shù)據(jù),轉(zhuǎn)為video-stream流格式的圖像信息;

② Video Timing Controller IP,根據(jù)內(nèi)核相應(yīng)配置輸出與視頻流匹配的幀、行同步信號;

③ AXI4-Stream to Video Out IP,將串行視頻流轉(zhuǎn)化為指定格式(IP配置)、指定分辨率(內(nèi)核配置)的時序;

如下圖:


Planes

Plane其實就是圖層,實際輸出的圖像往往由多個圖層疊加而成(想象一下photoshop的過程),比如主圖層,顯示光標的圖層,其中有些圖層由硬件加速模塊生成,本例中不涉及,因此所有plane的相關(guān)操作都由軟件實現(xiàn),不涉及到任何硬件結(jié)構(gòu)。

Framebuffer

Framebuffer對應(yīng)著存儲空間中的圖像數(shù)據(jù),此處對應(yīng)硬件為DDR。

麻雀雖小,五臟俱全,次例程中的顯示框架非常簡單,但也包含了Framebuffer、CRTC、Planes、Encoder、Connector5個組件,片內(nèi)硬件結(jié)構(gòu)如下:


(PS:Dynamic Clock Generator生成顯示子系統(tǒng)中各組件所需的驅(qū)動時鐘,由Linux中的common clock framework統(tǒng)一管理)

DRI在Linux Kernel內(nèi)的軟件構(gòu)成

按照DRI中幾個組件分別介紹。

Framebuffer

我們知道Framebuffer是存儲待顯示圖像信息的空間,因此,F(xiàn)ramebuffer相關(guān)驅(qū)動中也就是對內(nèi)存的操作,也就涉及到下面兩個部分:
① 對內(nèi)存的管理(如GEM,for Graphics Execution Manager)
② 內(nèi)存中數(shù)據(jù)的更顯方式(如DMA等)

對于第一點,GEM主要完成的事情是:
① 對圖像內(nèi)存(顯存)的空間開辟、釋放;
② 不同硬件對同一顯存資源訪問下的管理;

在Linux Kernel下的默認實現(xiàn)方式是CMA(Contiguous Memory Allocator)實現(xiàn)的,內(nèi)核中對應(yīng)代碼是:

drivers/gpu/drm/drm_fb_cma_helper.c

這里稍微提一下CMA,CMA是個好東西,不僅在顯存管理中有應(yīng)用,在所有軟硬件協(xié) 同處理中同樣起這重要的作用。在一般的硬件(片內(nèi)硬件加速模塊)加速方案中,一般實現(xiàn)方式如下:

① linux kernel通過device-tree傳入CMA配置所需的配置參數(shù)供CMA開辟相應(yīng)的物理內(nèi)存 空間(不被Cache到),并且相應(yīng)的信息(物理空間首地址,size等)通過/dev/device 映射到用戶空間;

② DMA可以將加速模塊預(yù)處理后的數(shù)據(jù),根據(jù)已知參數(shù)(開辟的物理地址),傳遞到共享空間中供軟件訪問;


struct drm_framebuffer{
[...]
const struct drm_format_info *format;
[...]
}

? format用于描述內(nèi)存空間的組成,使用FOURCC(four-character code)制式,結(jié)構(gòu)體中的pitch、offset 4個元素分別用于計算FOURCC4個圖層中的內(nèi)存長寬參數(shù);(width和height用于描述顯示的長寬參數(shù));

? DRI中支持下面這三種格式圖像:
① RGB:R/G/B分別存于不同的圖層中;
② YUV:不同壓縮格式下的YUV存儲方式不一;
③ C8:通過存儲一塊映射到RGB的映射表來實現(xiàn)圖像信息存儲;

framebuffer中在不同格式下所需要處理的圖層的數(shù)量不一,具體的顯存處理、格式解析主要在下列源碼表中:

(顯存管理)

drivers/gpu/drm/drm_framebuffer.c

drivers/gpu/drm/drm_gem.c

drivers/gpu/drm/drm_gem_cma_helper.c

drivers/gpu/drm/drm_fb_cma_helper.c

drivers/gpu/drm/drm_fb_framebuffer_helper.c

drivers/gpu/drm/drm_fb_fourcc.c

drivers/gpu/drm/drm_fb_cma_helper.c

drivers/gpu/drm/drm_fb_cma_helper.c

drivers/gpu/drm/drm_fb_cma_helper.c

(顯存更新驅(qū)動接口)

drivers/gpu/drm/ati_pcigart.c

drivers/gpu/drm/ati_agpsupport.c

CRTC

CRTC雖然字面上意思為陰極射線顯像管控制器,但CRT在普通顯示設(shè)備中早已被淘汰,DRI中CRTC主要承擔(dān)的作用:
① 配置適合顯示器的分辨率(kernel)并輸出相應(yīng)時序(hardware logic);
② 掃描framebuffer送顯到一個或多個顯示設(shè)備中;
③ 更新framebuffer;

上述功能的主要通過struct drm_crtc_funcs和struct drm_crtc_helper_funcs這兩個描述符實現(xiàn):



drm_crtc_funcs中的兩個重要句柄set_config和page_flip,其中,

set_config主要任務(wù)是:
① 更新待送顯的framebuffer中數(shù)據(jù);
② 根據(jù)(之前說的EDID讀出支持的配置,device-tree對內(nèi)核的配置以及用戶空間的配置)參數(shù)配置軟件參數(shù)并控制相應(yīng)的寄存器(在本例中的VDMA及VTC的行列像素值等寄存器);
③ 將Encoder和connector的信息送給CRTC模塊。

page_flip解決的問題很簡單:

? 必須得保證CRTC在讀取framebuffer的時候,framebuffer里的幀不會被修改而產(chǎn)生竄幀的情況,采用的解決方式也是軟硬件異構(gòu)處理時常見的乒乓緩存的方式。


當(dāng)page_flip完成后,會通過event通知用戶層準備好下一幀的數(shù)據(jù);

Planes

不涉及到GPU的話,planes沒有那么復(fù)雜,主要是負責(zé):
? 主圖層;
? 移動光標圖層;
? 覆蓋圖層;

的創(chuàng)建、更新、銷毀,其中圖層的更新(多個圖層的疊加),通過struct中的drm_plane_funcs來實現(xiàn)。


比較形象的例子如下:


Connector & Encoder

由于Connector和Encoder是SOC與外設(shè)直接打交道的地方,因此對應(yīng)著不同SOC也是驅(qū)動適配修改最頻繁的地方。DRI中這兩塊通過適配struct drm_connector_helper_funcs和struct drm_encoder_helper_funcs來實現(xiàn)。

Linux Kernel中的DRM+KMS中涉及到的點太多,由于能力和時間問題,沒能遍歷一遍,只能根據(jù)自己認為的重點討論一邊,但有些點我認為比較重要的,但沒能深入了解,比如:

? 硬件graphic加速和DRM的交互邏輯
? CRTC的Atomic刷新機制的具體實現(xiàn)方式等,如果大家能夠交流一下自己的理解,那再好不過了。

編輯:hfy


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

    關(guān)注

    34

    文章

    1899

    瀏覽量

    160504
  • Xilinx
    +關(guān)注

    關(guān)注

    73

    文章

    2200

    瀏覽量

    131125
  • Dri
    Dri
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    15703
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    XC7Z020-2CLG484I 雙核異構(gòu)架構(gòu) 全能型 SoC

    。從工業(yè)控制到智能駕駛,從醫(yī)療設(shè)備到通信終端,這款全能型 SoC 正成為推動各行業(yè)智能化升級的核心動力。隨著邊緣計算、AIoT 技術(shù)的持續(xù)發(fā)展,XC7Z020-2CLG484I 及其后續(xù)升級型號,將繼續(xù)在 “實時性與靈活性平衡” 的賽道上,嵌入式系統(tǒng)設(shè)計提供無限可能。
    發(fā)表于 02-28 23:37

    工程師必入!288 元解鎖賽靈思開發(fā)板

    做項目、練技術(shù)、備賽事卻找不到高性價比開發(fā)板?合眾恒躍重磅福利——賽靈思ZYNQ系列開發(fā)板限時特惠,HZ-XC-7Z010-SP_EVM寵粉價僅需288元!
    的頭像 發(fā)表于 12-17 17:48 ?758次閱讀
    工程師必入!288 元解鎖賽靈思開發(fā)板

    PCIe接口卡設(shè)計原理圖:124-基于XC7Z015的PCIe低速擴展底板

    板卡由SoC XC7Z015芯片來完成卡主控及數(shù)字信號處理,XC7Z015內(nèi)部集成了兩個ARM Cortex-A9核和一個Artix 7的FPGA,通過PL端FPGA擴展PMC接口、用于擴展震動、噪聲、生物信息、加速度等低速信息
    的頭像 發(fā)表于 10-22 10:42 ?983次閱讀
    PCIe接口卡設(shè)計原理圖:124-基于<b class='flag-5'>XC7Z</b>015的PCIe低速擴展底板

    DRM Kit數(shù)字版權(quán)保護服務(wù)介紹

    DRM Kit (Digital Rights Management Kit,數(shù)字版權(quán)保護服務(wù))提供了DRM加密節(jié)目授權(quán)解密的功能,包括DRM插件管理、DRM證書管理、
    的頭像 發(fā)表于 10-15 13:58 ?818次閱讀
    <b class='flag-5'>DRM</b> Kit數(shù)字版權(quán)保護服務(wù)介紹

    CW32L01x系列MCU驅(qū)動TFT屏的應(yīng)用方案

    CW32L01x系列MCU應(yīng)用廣泛,本文將詳細介紹CW32L01x系列MCU驅(qū)動TFT屏的應(yīng)用方案。我們CW32L010系列MCU來介
    的頭像 發(fā)表于 10-14 10:18 ?1170次閱讀
    CW32L01x系列MCU驅(qū)動TFT屏的應(yīng)用<b class='flag-5'>方案</b>

    傾佳電子T型三電平逆變器應(yīng)用綜合分析:B3M010C075Z與B3M013C120Z碳化硅MOSFET黃金組合的性能與價值

    傾佳電子T型三電平逆變器應(yīng)用綜合分析:B3M010C075Z與B3M013C120Z碳化硅MOSFET黃金組合的性能與價值 傾佳電子(Changer Tech)是一家專注于功率半導(dǎo)體和新能源汽車連
    的頭像 發(fā)表于 10-11 18:27 ?2104次閱讀
    傾佳電子T型三電平逆變器應(yīng)用綜合<b class='flag-5'>分析</b>:B3M<b class='flag-5'>010C075Z</b>與B3M013C120<b class='flag-5'>Z</b>碳化硅MOSFET黃金組合的性能與價值

    傾佳電子B3M010C075Z碳化硅MOSFET深度分析:性能基準與戰(zhàn)略應(yīng)用

    傾佳電子B3M010C075Z碳化硅MOSFET深度分析:性能基準與戰(zhàn)略應(yīng)用 傾佳電子(Changer Tech)是一家專注于功率半導(dǎo)體和新能源汽車連接器的分銷商。主要服務(wù)于中國工業(yè)電源、電力
    的頭像 發(fā)表于 10-09 18:06 ?895次閱讀
    傾佳電子B3M<b class='flag-5'>010C075Z</b>碳化硅MOSFET深度<b class='flag-5'>分析</b>:性能基準與戰(zhàn)略應(yīng)用

    示波器如何設(shè)置延遲功能? 橫河DL950

    誠然在測量途中延遲的出現(xiàn)固然會引起不必要的誤差,但如果我們能換個思路就會發(fā)現(xiàn)延遲亦不失衡量測試精度的一大標尺。橫河示波器DL950,作為一款備受好評的高精度示波器其delay功
    的頭像 發(fā)表于 07-08 16:43 ?1752次閱讀
    示波器如何設(shè)置延遲功能? <b class='flag-5'>以</b>橫河DL950<b class='flag-5'>為</b><b class='flag-5'>例</b>

    EtherCAT與Profinet協(xié)議轉(zhuǎn)換在工業(yè)自動化中的應(yīng)用:匯川伺服驅(qū)動器

    在工業(yè)自動化領(lǐng)域,實現(xiàn)不同協(xié)議設(shè)備間的無縫通信是提升生產(chǎn)效率的關(guān)鍵。EtherCAT主站通過Profinet網(wǎng)關(guān)連接匯川伺服驅(qū)動器的場景,這一技術(shù)組合不僅解決了異構(gòu)網(wǎng)絡(luò)協(xié)同的難題,更通過精準的速度控制為生產(chǎn)線注入了智能化動
    的頭像 發(fā)表于 07-08 15:49 ?785次閱讀
    EtherCAT與Profinet協(xié)議轉(zhuǎn)換在工業(yè)自動化中的應(yīng)用:<b class='flag-5'>以</b>匯川伺服驅(qū)動器<b class='flag-5'>為</b><b class='flag-5'>例</b>

    基于CW32L010的高性能溫控器方案

    武漢芯源半導(dǎo)體的明星產(chǎn)品CW32L010系列MCU憑借其ARM Cortex-M0+內(nèi)核、超低功耗特性以及豐富的外設(shè)接口,溫控器設(shè)計提供了理想的解決方案。 本文將介紹無錫梓軒電子基于武漢芯源半導(dǎo)體低功耗CW32L
    的頭像 發(fā)表于 07-02 09:47 ?1265次閱讀
    基于CW32L<b class='flag-5'>010</b>的高性能溫控器<b class='flag-5'>方案</b>

    基于CW32L010的高性能溫控器方案

    Cortex-M0+內(nèi)核、超低功耗特性以及豐富的外設(shè)接口,溫控器設(shè)計提供了理想的解決方案。 本文將介紹無錫梓軒電子基于武漢芯源半導(dǎo)體低功耗CW32L010單片機開發(fā)的溫控器方案,功
    發(fā)表于 07-02 09:46

    基于 ROS + ADI 芯片方案 的 人形機器人子系統(tǒng)級BOM清單(腿部子系統(tǒng)

    基于 ROS + ADI 芯片方案 的 人形機器人子系統(tǒng)級BOM清單 ( 腿部子系統(tǒng) ),包括核心感知、執(zhí)行與通信模塊,配合主控系統(tǒng)通過 ROS2 實現(xiàn)分布式控制與狀態(tài)反饋。 一
    的頭像 發(fā)表于 06-17 17:06 ?2036次閱讀

    基于CW32L010單片機的掃振一體電動牙刷應(yīng)用方案

    大幅擺動實現(xiàn)了高效的刷牙方式,這種設(shè)計能夠更高效地清潔牙齒和牙齦溝,用戶帶來全新的潔牙體驗?。本文將介紹武漢芯源半導(dǎo)體CW32L010單片機在掃振一體電動牙刷上的應(yīng)用方案。 圖1:電動牙刷
    發(fā)表于 06-17 09:38

    突破性能邊界:基本半導(dǎo)體B3M010C075Z SiC MOSFET技術(shù)解析與應(yīng)用前景

    取代傳統(tǒng)硅基器件?;景雽?dǎo)體推出的B3M010C075Z750V SiC MOSFET,通過創(chuàng)新設(shè)計與先進工藝,實現(xiàn)了功率密度與能效的跨越式突破,下一代電力轉(zhuǎn)換系統(tǒng)樹立了新標桿。 一、核心技術(shù)亮點:重新定義功率器件性能邊界 超低導(dǎo)通損耗 采用銀燒結(jié)工藝強化散熱路徑,在1
    的頭像 發(fā)表于 06-16 15:20 ?893次閱讀
    突破性能邊界:基本半導(dǎo)體B3M<b class='flag-5'>010C075Z</b> SiC MOSFET技術(shù)解析與應(yīng)用前景

    DeepSeek企業(yè)級部署服務(wù)器資源計算 raksmart裸機云服務(wù)器

    RakSmart裸機云服務(wù)器,針對DeepSeek企業(yè)級部署的服務(wù)器資源計算指南,涵蓋GPU/CPU/內(nèi)存/存儲/網(wǎng)絡(luò)等核心維度的詳細計算方法與配置推薦,主機推薦小編為您整理發(fā)布
    的頭像 發(fā)表于 03-21 10:17 ?1077次閱讀