999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

圖像顯示之Linux Framebuffer

2018-10-19 06:52:52深圳技師學(xué)院郭惠婷吳躍前
電子世界 2018年19期
關(guān)鍵詞:設(shè)備

深圳技師學(xué)院 梁 志 郭惠婷 吳躍前

現(xiàn)代大部分智能設(shè)備所用操作系統(tǒng)是linux,其中顯示圖像是不可缺少的功能。本文分析圖像顯示所用的linux Frambuffer的工作原理、底層設(shè)備驅(qū)動注冊和應(yīng)用層的使用。

1.Linux Frambuffer的基本介紹

Linux Frambuffer 中文名簡稱為linux幀緩沖區(qū),可以理解其為linux系統(tǒng)對底層圖像設(shè)備進行抽象而形成的抽象層(中間層),它屏蔽了圖像硬件的底層差異,向用戶態(tài)進程提供了一個接口方便應(yīng)用層程序顯示圖像。

在不帶操作系統(tǒng)的情況下,要液晶屏顯示圖像,首先得驅(qū)動液晶屏,這需要根據(jù)具體型號液晶屏的分辨率、時延參數(shù)、位色等相關(guān)硬件參數(shù)去配置相關(guān)的硬件寄存器,而所用編程語言一般是嵌入式C語言,明顯這樣顯示圖像的操作對于應(yīng)用工程師有非常大難度和操作上的麻煩。

在帶操作系統(tǒng)的況下,需要液晶屏顯示圖像,應(yīng)用工程師只需知道底層的圖像設(shè)備已經(jīng)給內(nèi)核抽象成一個緩存區(qū)(這個緩存區(qū)就可以理解為Frambuffer),這個緩存區(qū)一般每一個INT型數(shù)據(jù)就對應(yīng)著屏上的一個像素點顯示數(shù)據(jù).應(yīng)用工程師只需要把圖像數(shù)據(jù)寫到緩存沖區(qū),緩存沖區(qū)的數(shù)據(jù)會由底層驅(qū)動傳輸?shù)揭壕辽稀S纱丝梢姂?yīng)用程序工程師顯示圖像再不需要關(guān)注圖像硬件操作,把更多精力放在應(yīng)用邏輯上的思考。

2.Linux Frambuffer的架構(gòu)

Linux Frambuあer在系統(tǒng)中位置示意圖如圖1所示:

圖1

由圖1可見從應(yīng)用到硬件,共分三層。Linux Framebuあer 處于系統(tǒng)中間位置,是linux 內(nèi)核顯示子系統(tǒng),對下層提供了相應(yīng)的注冊接口,讓下層的圖像硬件設(shè)備注冊進內(nèi)核;對上層的應(yīng)用程序提供系統(tǒng)調(diào)用,讓應(yīng)用程序簡單操作顯示圖像。

(1)Linux 內(nèi)核顯示子系統(tǒng)層:

在Linux內(nèi)核中顯示子系統(tǒng)定義了很多信息.其中重要的結(jié)構(gòu)體信息有:

fb_info :用于定義幀緩存設(shè)備的相關(guān)信息,比如:可變參數(shù),固定參數(shù),底層操作函數(shù)指針。

fb_var_screeninfo:描述幀緩存設(shè)備可以修改的參數(shù),如:長寬等

fb_ fi x_screeninfo:描述幀緩存設(shè)備固定的參數(shù),比如:緩存首地址,緩存長度等

fb_ops:描述幀緩存設(shè)備具體硬件操作的函數(shù)指針,是底層硬件操作的抽象,比如fb_open、fb_release、fb_read、fb_write、fb_ioctl、fb_mmap等:

重要的函數(shù)如下:

register_framebuffer():底層硬件驅(qū)動注冊函數(shù),底層驅(qū)動通過設(shè)置fb_info后調(diào)用該函數(shù)向系統(tǒng)注冊。

unregister_framebuffer():底層硬件驅(qū)動注鎖函數(shù),底層驅(qū)動通過該函數(shù)向系統(tǒng)注銷自身。

(2)底層硬件設(shè)備驅(qū)動層:

Linux framebuffer是一個字符設(shè)備(主設(shè)備號是29),在內(nèi)核中使用platform驅(qū)動模型實現(xiàn),platform device描述了設(shè)備相關(guān)的硬件信息,主要通過結(jié)構(gòu)體resource描述幀緩存設(shè)備所用的地址資源,中斷資源等等。

platform driver描述設(shè)備相關(guān)軟件信息,主要實現(xiàn)幀緩存設(shè)備具體的寄存器相關(guān)操作。

比如幀設(shè)備(LCD)platform driver實現(xiàn)過程實如下:

(1)通過platform_get_resource從platform device獲得設(shè)備所用資源。

(2)通過kzalloc申請顯存空間大小。

(3)初始化設(shè)備控件器所使用的GPIO,主要初始化引腳功能選擇、引腳驅(qū)動能力。

(4)設(shè)備驅(qū)動信號初始化,其中重點設(shè)置行同步信號,像素時鐘信號,幀同步信號,數(shù)據(jù)使能號,其設(shè)置要根據(jù)硬件手冊和控制器手冊來配置。

(5)定義一個fb_info并始化相關(guān)成員,指定設(shè)備可變和固定參數(shù)。

(6)調(diào)用register_framebuあer()把設(shè)備注冊進內(nèi)核。

(7)最實現(xiàn)一個注銷設(shè)備操作,這時使用unregister_framebuffer。

3.應(yīng)用層

在應(yīng)用層使用framebuffer顯示圖像前,需要了解映射,如圖2所示:

因硬件顯示設(shè)備的物理顯示區(qū)是通過幀緩存區(qū)操作,而幀緩存區(qū)是處于內(nèi)核空間,應(yīng)用程序不能隨意操作,此時可以通過系統(tǒng)調(diào)用mmap把幀緩存映射到用戶空間,在用戶空間中創(chuàng)建出幀緩存映射區(qū)(用戶圖像數(shù)據(jù)緩存區(qū)),以后只需把用戶圖像數(shù)據(jù)寫入到幀緩存映射區(qū)就可在硬件設(shè)備上顯示圖像。

具體實現(xiàn)流程如下:

(1)打開幀設(shè)備的設(shè)備文件,常用設(shè)備文件為/dev/f0。

(2)通過系統(tǒng)調(diào)用ioctl函數(shù)獲得幀設(shè)備相關(guān)信息,比如幀設(shè)備的寬、高和像素位等。

(3)通過mmap映射內(nèi)核幀緩存區(qū)到用戶空間圖像數(shù)據(jù)緩存區(qū),映射區(qū)的大小由幀設(shè)備的寬高等參數(shù)確定。

(4)把圖像數(shù)據(jù)復(fù)制到用戶空間圖像數(shù)據(jù)緩存區(qū),圖像就可以在幀設(shè)備上顯示出來。

(5)使用完后 ,調(diào)用close關(guān)閉設(shè)備。

Linux frambuffer 的出現(xiàn)大大簡化對顯示設(shè)備的操作,不過需要注意的是framebuffer最大支持32顯示緩存。

猜你喜歡
設(shè)備
諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
調(diào)試新設(shè)備
基于VB6.0+Access2010開發(fā)的設(shè)備管理信息系統(tǒng)
基于MPU6050簡單控制設(shè)備
電子制作(2018年11期)2018-08-04 03:26:08
廣播發(fā)射設(shè)備中平衡輸入與不平衡輸入的轉(zhuǎn)換
電子制作(2018年10期)2018-08-04 03:24:48
食之無味,棄之可惜 那些槽點滿滿的可穿戴智能設(shè)備
500kV輸變電設(shè)備運行維護探討
HTC斥資千萬美元入股虛擬現(xiàn)實設(shè)備商WEVR
IT時代周刊(2015年8期)2015-11-11 05:50:37
Automechanika Shanghai 2014 之“看” 汽保設(shè)備篇
如何在設(shè)備采購中節(jié)省成本
主站蜘蛛池模板: 中文无码伦av中文字幕| 婷五月综合| 9966国产精品视频| 精品亚洲欧美中文字幕在线看| 三级毛片在线播放| 秋霞一区二区三区| 综合久久五月天| 欧洲免费精品视频在线| 男人天堂亚洲天堂| 女同国产精品一区二区| 91精品啪在线观看国产91| 在线看片免费人成视久网下载| 精品国产美女福到在线不卡f| 日韩福利视频导航| 国产在线98福利播放视频免费| 国产亚洲精品yxsp| 国产丝袜啪啪| 一级全黄毛片| 亚洲天堂首页| 久久www视频| 亚洲乱码在线播放| 国产美女无遮挡免费视频网站| 永久毛片在线播| 97青草最新免费精品视频| 国产成人毛片| 国产网友愉拍精品视频| 香蕉视频在线观看www| 女人18毛片一级毛片在线 | www.91中文字幕| 亚洲一区二区三区国产精华液| 四虎精品国产AV二区| 久久99久久无码毛片一区二区| 日韩在线永久免费播放| 免费国产黄线在线观看| 欧美午夜网站| 国产簧片免费在线播放| 久久香蕉国产线看观看精品蕉| 成人午夜久久| 九九这里只有精品视频| 亚洲欧美成人影院| 2021亚洲精品不卡a| 1769国产精品视频免费观看| 午夜性刺激在线观看免费| 国产精品亚洲五月天高清| 国产精品亚洲αv天堂无码| 香蕉国产精品视频| 亚洲欧美成人综合| 国产精品亚洲一区二区在线观看| 高清欧美性猛交XXXX黑人猛交| 国产午夜看片| 成人小视频在线观看免费| 免费观看亚洲人成网站| 亚洲天堂福利视频| 国产福利免费视频| 不卡无码h在线观看| 精品国产福利在线| 日韩欧美国产另类| 高清免费毛片| 欧美一级大片在线观看| 国产欧美日韩va另类在线播放 | 97se亚洲综合在线| 91综合色区亚洲熟妇p| 丝袜亚洲综合| 色综合天天操| 久久天天躁狠狠躁夜夜2020一| 狠狠色丁婷婷综合久久| 久久窝窝国产精品午夜看片| 国产视频久久久久| 黄色污网站在线观看| 国产福利小视频在线播放观看| 久久久无码人妻精品无码| 日韩精品少妇无码受不了| 亚洲无限乱码一二三四区| 国产91丝袜在线播放动漫| 亚洲成人网在线播放| 国产精品无码久久久久久| 亚洲精品无码不卡在线播放| 婷婷激情亚洲| 五月激激激综合网色播免费| 久久这里只有精品免费| 伊人网址在线| 91精品人妻互换|