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