添加完uboot和kernel的logo顯示後,發現在uboot加載kernel後會出現花屏/閃屏的現象,
通過觀察可發現該現象出現在
## Booting kernel from Legacy Image at 80200000 ...
Image Name: Linux-2.6.32
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2580016 Bytes = 2.5 MiB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
Starting kernel ...
附近,定位帶源代碼就是在common/cmd_bootm.c 中的bootm_load_os函數中
case IH_COMP_NONE:
if (load == blob_start) {
printf (" XIP %s ... ", type_name);
} else {
printf (" Loading %s ... ", type_name);
if (load != image_start) {
memmove_wd ((void *)load,
(void *)image_start, image_len, CHUNKSZ);
}
}
*load_end = load + image_len;
puts("OK\n");
break;
在網上搜索到說在這地方做清屏動作可以消除花屏/閃屏的現象,添加了
u32 *ptr = (u32 *)omap3_frame_buffer;
memset(ptr,0x00, LCD_HEIGHT * LCD_WIDTH * 4);//32bit
實現清屏卻還是不能解決。這應該是因爲從uboot跳轉到kernel,到kernel再次初始化LCD緩存之間,LCD緩存處於不確定造成,
所以將LCD緩存設定爲某一狀態並不能消除花屏/閃屏現象。這樣可以通過關閉LCD背光來使LCD黑屏,這樣就不會看到花屏/閃屏
的現象,添加了
twl4030_led_init(0x00);
編譯後,更新到板上,就沒有花屏/閃屏的現象了。