1. 程式人生 > >5.7.5.framebuffer驅動框架總覽

5.7.5.framebuffer驅動框架總覽

這就是我 write lcd 是什麽 sun 設備 詳細 png 定義

參考http://www.cnblogs.com/EaIE099/p/5175979.html
本節對內核的framebuffer驅動框架做整體介紹,各部分涉及哪些文件,每個文件是誰寫的,具體功能是什麽,詳細的代碼分析在後面。

5.7.5.1、驅動框架部分
(1)drivers/video/fbmem.c。主要任務:1、創建graphics類、註冊FB的字符設備驅動、提供register_framebuffer接口給具體framebuffer驅動編寫著來註冊fb設備的。本文件相對於fb來說,地位和作用和misc.c文件相對於雜散類設備來說一樣的,結構和分析方法也是類似的。
(2)drivers/video/fbsys.c。這個文件是處理fb在/sys目錄下的一些屬性文件的。
(3)drivers/video/modedb.c。這個文件是管理顯示模式(譬如VGA、720P等就是顯示模式)的
(4)drivers/video/fb_notify.c
5.7.5.2、驅動部分
(1)drivers/video/samsung/s3cfb.c,驅動主體
(2)drivers/video/samsung/s3cfb_fimd6x.c,裏面有很多LCD硬件操作的函數
(2)arch/arm/mach-s5pv210/mach-x210.c,負責提供platform_device的
(3)arch/arm/plat-s5p/devs.c,為platform_device提供一些硬件描述信息的
5.7.5.3、如何分析
(1)經驗
(2)分析menuconfig、Makefile、Kconfig等
(3)內核編譯後檢查編譯結果中的.o文件
技術分享圖片

從上面這幅圖看,幀緩沖設備在Linux中也可以看做是一個完整的子系統,大體由fbmem.c和xxxfb.c組成。向上給應用程序提供完善的設備文件操作接口(即對FrameBuffer設備進行read、write、ioctl等操作),接口在Linux提供的fbmem.c文件中實現;向下提供了硬件操作的接口,只是這些接口Linux並沒有提供實現,因為這要根據具體的LCD控制器硬件進行設置,所以這就是我們要做的事情了(即xxxfb.c部分的實現)。
由上圖可以看出 lcd的應用層 通過 內核的fbmem接口 再調用驅動xxxfb.c的內容。而fbmem接口是內核提供的,所有驅動設計人員主要的任務就是定義一個fb_info 結構體(該結構由內核提供),然後填充結構體中的內容做好相應的初始化後,提交給內核就可以了。
技術分享圖片

幀緩沖設備為標準的字符型設備,在linux中主設備號29,定義在/include/linux/major.h中的FB_MAJOR,次設備號定義幀緩沖的個數,最大允許有32個framebuffer,定義在/include/linux/fb.h中的FB_MAX,定義文件系統下/dev/fb%d設備

5.7.5.framebuffer驅動框架總覽