安卓系統(tǒng)定制開機logo圖片
點擊上方藍字關(guān)注我哦~
01
前言
安卓系統(tǒng)原生的開機畫面是一只可愛的小企鵝,它是Linux的吉祥物。雖然小企鵝程序員都認識,但是在安卓系統(tǒng)定制開發(fā)中,客戶看到小企鵝的第一眼一般就是“能不能把這個企鵝換成我們的logo?”,所以這就成為了第一個定制需求。這個需求也適合新手上路,第一次動手修改、編譯、燒錄,并能直觀的看到修改的成果。下面以瑞星微RK3399平臺為例,介紹開機logo的顯示流程,及更換方式。
02
開機畫面啟動流程介紹
驅(qū)動代碼:
u-boot/board/rockchip/rk33xx/rk33xx.c
void board_fbt_preboot(void)//開機啟動進入
{
…
drv_lcd_init();//lcd驅(qū)動初始化
…
else if (!rockchip_display_init()) {//顯示初始化
g_logo_on_state = 1;
}
…
if (g_is_new_display) {
rockchip_show_logo();//顯示logo
} else
…
lcd_standby(0);//dsi輸出使能
…
rk_pwm_bl_config(-1);//打開背光
…
}
u-boot/drivers/video/rockchip_display.c
int rockchip_display_init(void)
{
…
/*讀取uboot的logo圖片路徑,來自于設(shè)備樹中的“l(fā)ogo,uboot”屬性*/
fdt_get_string(blob, child, "logo,uboot", &s->ulogo_name);
/*讀取kernel的logo圖片路徑,來自于設(shè)備樹中的“l(fā)ogo,kernel”屬性*/
fdt_get_string(blob, child, "logo,kernel", &s->klogo_name);
fdt_get_string(blob, child, "logo,mode", &name);
…
}
u-boot/drivers/video/rockchip_display.c
void rockchip_show_logo(void)
{
struct display_state *s;
list_for_each_entry(s, &rockchip_display_list, head) {
s->logo.mode = s->logo_mode;
if (load_bmp_logo(&s->logo, s->ulogo_name))//載入UbootLogo圖片
printf("failed to display uboot logo\n");
else
display_logo(s);//顯示Logo圖片
if (load_bmp_logo(&s->logo, s->klogo_name))
printf("failed to display kernel logo\n");
}
}
設(shè)備樹文件:
kernel/arch/arm64/boot/dts/rockchip/rk3399-firefly-android.dts
&display_subsystem {
status = "okay";
ports = <&vopb_out>, <&vopl_out>;
memory-region = <&drm_logo>;
route {
route_hdmi: route-hdmi {//hdmi屏
status = "okay";
logo,uboot = "logo.bmp";//logo圖片的名稱
logo,kernel = "logo_kernel.bmp";
logo,mode = "fullscreen";
charge_logo,mode = "center";
connect = <&vopl_out_hdmi>;
};
route_edp: route-edp {//edp屏
status = "okay";
logo,uboot = "logo.bmp";
logo,kernel = "logo_kernel.bmp";
logo,mode = "fullscreen";
charge_logo,mode = "center";
connect = <&vopb_out_edp>;
};
};
};
總結(jié)logo顯示流程為:Uboot啟動->顯示屏初始化->從設(shè)備樹讀取logo圖片名->載入圖片->顯示圖片->開啟背光。
03
RK平臺修改開機logo
那么定制開機logo圖片就是替換指定路徑的圖片即可:
U-boot開機logo:kernel/ logo.bmp
Kernel開機logo:kernel/ logo_kernel.bmp
圖片格式為bmp,分辨率保持與顯示屏分辨率一致的最佳。另外可以通過logo,mode屬性來選擇小像素logo圖示居中顯示還是拉伸顯示。
編譯燒錄后的效果如下:
高通平臺的開機logo存儲在splash分區(qū),替換logo的方式制作將圖片編譯成splash.img,燒錄進splash分區(qū)。MTK平臺的開機logo基本和RK平臺一樣,替換圖片編譯下載即可。
/ The End /
推薦閱讀
Android系統(tǒng)system.img解包和重新打包
本文由【嵌入式案例Show】原創(chuàng)出品,未經(jīng)許可,請勿轉(zhuǎn)載
掃碼關(guān)注我們
看更多嵌入式案例
喜歡本篇內(nèi)容請給我們點贊、在看
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!