1.Linux幀緩沖子系統(tǒng)
幀緩沖(FrameBuffer)是Linux為顯示設(shè)備提供的一個(gè)接口,用戶(hù)可以將幀緩沖看成是顯示內(nèi)存的一種映像,將其映射到進(jìn)程地址空間之后,就可以直接進(jìn)行讀寫(xiě)操作,而寫(xiě)操作可以立即反映到屏幕上,這種操作是抽象和統(tǒng)一的,用戶(hù)不必關(guān)心顯存的位置、換頁(yè)機(jī)制等具體細(xì)節(jié),這些都是由FrameBuffer設(shè)備驅(qū)動(dòng)來(lái)實(shí)現(xiàn),幀緩沖把顯示設(shè)備描述成一個(gè)緩沖區(qū),允許應(yīng)用程序通過(guò)幀緩沖定義好的接口訪問(wèn)這些圖形設(shè)備,從而不用關(guān)心具體的硬件細(xì)節(jié)。個(gè)人感覺(jué),更抽象一點(diǎn),幀緩沖從本質(zhì)上是圖形設(shè)備的硬件抽象,對(duì)于我們開(kāi)發(fā)者而言,幀緩沖是一種顯示緩存,向顯示緩存寫(xiě)入特定格式的數(shù)據(jù)就意味著向屏幕輸出內(nèi)容,通過(guò)不斷向幀緩存中寫(xiě)入數(shù)據(jù),顯示控制器會(huì)自動(dòng)從幀緩沖中取數(shù)據(jù)并顯示出來(lái)。FrameBuffer的設(shè)備文件一般是dev/fb0、dev/fb1等,最多支持32個(gè)設(shè)備,F(xiàn)rameBuffer是個(gè)字符設(shè)備,主設(shè)備號(hào)是29,對(duì)應(yīng)于/dev/fb%d設(shè)備文件,對(duì)于我們驅(qū)動(dòng)工程師而言,F(xiàn)rameBuffer設(shè)備和其他的文件沒(méi)有區(qū)別,可以通過(guò)配置對(duì)FrameBuffer設(shè)備文件完成對(duì)硬件的參數(shù)設(shè)置,F(xiàn)ramebuffer對(duì)應(yīng)的源文件在linux/drivers/video/目錄下。總的抽象設(shè)備文件為fbcon.c,在這個(gè)目錄下還有與各種顯卡驅(qū)動(dòng)相關(guān)的源文件。
在應(yīng)用程序中,一般通過(guò)將 FrameBuffer 設(shè)備映射到進(jìn)程地址空間的方式使用,比如下面的程序就打開(kāi) /dev/fb0 設(shè)備,并通過(guò) mmap 系統(tǒng)調(diào)用進(jìn)行地址映射,隨后用 memset 將屏幕清空(這里假設(shè)顯示模式是 1024x768-8 位色模式,線性?xún)?nèi)存模式):
int fb;
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無(wú)線安全]玩轉(zhuǎn)無(wú)線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問(wèn)題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來(lái)看看(二) 2017-07-26