linux驅動開發擴充套件 核心啟動logo

2021-10-10 11:54:00 字數 1791 閱讀 6353

static struct logo_data  fb_logo __read_mostly;
裡面包含了色深depth以及一些調色盤資料和logo資料指標

struct linux_logo ;
該結構體中包含了logo本身的所有資訊以及影象資料,這些資料並沒有直接出現在核心原始碼中,核心原始碼中只能找到logo資訊資料的宣告

真正的資料來自於drivers/video/logo下對應的.ppm檔案,檔案的字首名必須與核心原始碼中所用到的logo資訊資料變數相同

.ppm檔案其實就是用文字的方式儲存了logo影象的資訊和影象資料,可以使用文字方式開啟進行檢視

drivers/video/samsung/s3cfb.c

static int __devinit s3cfb_probe(struct platform_device *pdev)

#endif

...}

上面這段**是用於在核心啟動階段顯示logo的

fb_prepare_logo

獲取色深

fb_logo.logo = fb_find_logo(depth);    根據色深和配置將目標logo資料繫結到fb_logo.logo

logo = &logo_x210_clut224;

根據顯示時的旋轉角度進行一些值得確定

如果logo的大小超限則清除之前獲得的logo資料直接返回

如果所要求的深度與我們所得到的不同則進行一些資料處理 

fb_show_logo

y = 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的驅動框架有很多 字元裝置驅動框架 塊裝置驅動...