5.7.5.framebuffer驅動框架總覽

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

5.7.5.一、驅動框架部分
(1)drivers/video/fbmem.c。主要任務:一、建立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.二、驅動部分
(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.三、如何分析
(1)經驗
(2)分析menuconfig、Makefile、Kconfig等
(3)內核編譯後檢查編譯結果中的.o文件
linux

從上面這幅圖看,幀緩衝設備在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設備ide

相關文章
相關標籤/搜索