裡面包含了色深depth以及一些調色盤資料和logo資料指標static struct logo_data fb_logo __read_mostly;
該結構體中包含了logo本身的所有資訊以及影象資料,這些資料並沒有直接出現在核心原始碼中,核心原始碼中只能找到logo資訊資料的宣告struct linux_logo ;
真正的資料來自於drivers/video/logo下對應的.ppm檔案,檔案的字首名必須與核心原始碼中所用到的logo資訊資料變數相同
.ppm檔案其實就是用文字的方式儲存了logo影象的資訊和影象資料,可以使用文字方式開啟進行檢視
drivers/video/samsung/s3cfb.c上面這段**是用於在核心啟動階段顯示logo的static int __devinit s3cfb_probe(struct platform_device *pdev)
#endif
...}
fb_prepare_logo獲取色深
fb_logo.logo = fb_find_logo(depth); 根據色深和配置將目標logo資料繫結到fb_logo.logo
logo = &logo_x210_clut224;
根據顯示時的旋轉角度進行一些值得確定
如果logo的大小超限則清除之前獲得的logo資料直接返回
如果所要求的深度與我們所得到的不同則進行一些資料處理
fb_show_logoy = fb_show_logo_line(info, rotate, fb_logo.logo, 0,num_online_cpus()); 真正顯示logo
進行一些判斷和資料確定
fb_do_show_logo(info, &image, rotate, n); 該函式內部根據顯示的旋轉角度呼叫實際操作硬體fb的函式進行顯示
info->fbops->fb_imageblit(info, image); 實際操作硬體fb的函式
記憶體釋放
自定義logo在核心原始碼include/linux/linux_logo.**件中新增對應的struct linux_logo型別的logo資訊資料變數宣告,變數名需要與.ppm格式的檔案的字首相同
在核心原始碼drivers/video/logo/logo.c檔案中的fb_find_logo函式的正確位置新增對應的條件編譯和logo資訊資料變數的賦值傳遞
在drivers/video/logo/makefile中新增對應的項,使得對應的條件編譯成立時編譯階段可以由.ppm檔案得到對應的.o檔案
在drivers/video/logo/kconfig中新增對應的項,方便我們可以在配置階段make menuconfig將對應的條件編譯使能或失能
在drivers/video/samsung/s3cfb.c的s3cfb_probe函式中修改fb_prepare_logo函式和fb_show_logo函式的引數確定顯示時的旋轉角度
在drivers/video/fbmem.c的fb_show_logo_line函式中修改image.dx和image.dy確定我們要顯示的位置
Linux 核心 驅動開發總結
總體來看,需要乙個階段性總結了,因為現在sd卡的除錯也進入了卡殼期。大概會出一系列的總結文章,主要涉及的主題在下面列出 1 開發工具 gcc gdb vim ctags 2 makefile和kconfig linux核心的配置與編譯,更好的理解模組化開發 3 除錯技術 無敵的printf等 注意整...
Linux裝置驅動 核心開發
linux裝置驅動需要使用核心api來實現,一般被包含在linux核心原始碼樹中。驅動可以編譯到核心,隨著核心一起在系統啟動的時候被載入。也可以編譯成核心模組,在系統執行起來之後動態地載入到核心中,使得除錯的時候無需重新編譯核心,也無需重啟系統,很大程度上方便了驅動 的除錯。但並不是只有裝置驅動才能...
linux核心字元裝置驅動開發
1,對驅動的理解 對於一般驅動程式來說,只需要配置控制器的暫存器就可以 但是在linux作業系統中,軟體要讓硬體辦事,就要滿足硬體的規矩,也就是按驅動框架來開發硬體驅動程式 驅動程式就要受到linux的約束,這個約束就被稱為linux驅動框架。linux的驅動框架有很多 字元裝置驅動框架 塊裝置驅動...