最近做的4412板子終於經過測試形成產品,在這之前需要把核心啟動過程中的列印資訊去掉,並且更換啟動logo,下面講講自己去掉列印資訊的過程。
一 去掉列印資訊方法很多,我使用乙個相對比較簡單的,就是將下面選項的[*]去掉
device drivers --->
character devices --->
[* ] support for console on virtual terminal
這樣printk的列印資訊就不會輸出在顯示器或lcd上。
將列印資訊去掉後,莫名其妙的會出現因為讀取檔案系統失敗而啟動不了的情況,報錯:kernel panic - not syncing: vfs。根據網上查詢到的資料,因為系統啟動過程中,磁碟emmc的初始化和讀取檔案系統是在兩個不同的執行緒中進行的,遮蔽掉列印資訊後,主線程,及掛在檔案系統的執行緒執行時間縮短,以至於當主線程準備掛載檔案系統的時候,emmc的初始化還沒有完成,所以啟動會失敗。這個時候我們可以再uboot的啟動引數中加入rootdelay=1,延遲系統掛在檔案系統的時間,從而使系統順利啟動。
其實還有一種更簡單的方法,不僅能將核心的列印資訊遮蔽掉,而且使用者態的配置列印資訊也能遮蔽,就是在uboot引數中將顯示器console=/dev/null,注意不要改動串列埠的console,否則無法使用串列埠看到列印資訊進行除錯。
二 去掉字元介面的游標
在核心的當前目錄進入到drivers/video/console/fbcon.c 檔案
將static void fb_flashcursor(void *private) 和 static void fbcon_cursor(struct vc_data *vc, int mode) 裡的內容注釋掉,使之變成空函式
三 接下來建立自己的啟動logo,方法如下
建立logo:
1、核心預設的logo為drivers/video/logo/logo_linux_clut224.ppm
file logo_linux_clut224.ppm
先得到的大小,然後再用gimp等工具建立乙個同樣大小的png
2、把自己建立的png轉換為只有224色的ppm
pngtopnm logo.png | ppmquant -fs 224 | pnmtoplainpnm > logo_linux_clut224.ppm
如果沒有以上的轉換命令請安裝netpbm工具包
3、覆蓋原來的logo_linux_clut224.ppm檔案,若有logo_linux_clut224.o和logo_linux_clut224.c檔案則刪除
核心配置:
device drivers ->
graphics support ->
[*] support for frame buffer devices
[*] vesa vga graphics support
console display driver support ->
[*] video mode selection support
[*] framebuffer console support
[*]select compiled-in fonts
[*]vga 8x16 font
logo configuration->
[*]bootup logo
[*] standard 224-color linux logo
重新編譯核心
logo居中:
1、設定logo在螢幕中的位置
vi drivers/video/fbmem.c
找到"fb_show_logo_line"函式,把
image.dx = 0;
image.dy = y;
改為image.dx = (info->var.xres/2) - (610/2);
image.dy = (info->var.yres/2) - (206/2);
[注:info->var.xres和info->var.yres是解析度大小
610和206是logo的大小]2、
vi drivers/video/console/fbcon.c
找到"fbcon_prepare_logo"函式,在
logo_height = fb_prepare_logo(info, ops->rotate);
後面加上
logo_height += (info->var.yres/2) - (206/2);
新增新:
在makefile中有這麼一句:extra-y += $(call logo-cfiles,_clut224,ppm)
它的意思是在當前找到以"_clut224"結尾的ppm,然後根據它生成.c檔案,所以新增新的名可以
類似這樣:logo_linux_sullg_clut224.ppm
1.makefile,加入一行
obj-$(config_logo_linux_sullg_clut224) += logo_linux_sullg_clut224.o
2.kconfig,加入
config logo_linux_sullg_clut224
bool "standard 224-color linux logo for sullg"
default y
3.logo.c,加入
extern const struct linux_logo logo_linux_sullg_clut224;
在"fb_find_logo"中找到"#ifdef config_logo_linux_clut224",在其後加入:
#ifdef config_logo_linux_sullg_clut224
logo = &logo_linux_sullg_clut224;
#endif
linux核心 設定列印資訊
有時除錯核心模組,列印資訊太多了,可以通過修改 proc sys kernel printk檔案內容來控制。預設設定是6 4 1 7 cat proc sys kernel printk 7 4 1 7 該檔案有四個數字值,它們根據日誌記錄訊息的重要性,定義將其傳送到何處。關於不同日誌級別的更多資訊...
WINCE 串列埠列印資訊的遮蔽與開啟
第一種 將下面這句 加入到驅動所在目錄中的sources檔案中即可 cdefines cdefines ddebug 第二種 undef debugmsg define debugmsg x,s nkdbgprintfw s 這樣這個驅動檔案裡的所有除錯資訊都會列印出來,並且不理會debugzone...
定時列印資訊
class cl time event definition.public section.class methods auto exe for event finished of cl gui timer importing sender.endclass.cl time event defini...