安卓系統(tǒng)定制開機(jī)logo圖片
點(diǎn)擊上方藍(lán)字關(guān)注我哦~
01
前言
安卓系統(tǒng)原生的開機(jī)畫面是一只可愛的小企鵝,它是Linux的吉祥物。雖然小企鵝程序員都認(rèn)識(shí),但是在安卓系統(tǒng)定制開發(fā)中,客戶看到小企鵝的第一眼一般就是“能不能把這個(gè)企鵝換成我們的logo?”,所以這就成為了第一個(gè)定制需求。這個(gè)需求也適合新手上路,第一次動(dòng)手修改、編譯、燒錄,并能直觀的看到修改的成果。下面以瑞星微RK3399平臺(tái)為例,介紹開機(jī)logo的顯示流程,及更換方式。
02
開機(jī)畫面啟動(dòng)流程介紹
驅(qū)動(dòng)代碼:
u-boot/board/rockchip/rk33xx/rk33xx.c
void board_fbt_preboot(void)//開機(jī)啟動(dòng)進(jìn)入
{
…
drv_lcd_init();//lcd驅(qū)動(dòng)初始化
…
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))//載入U(xiǎn)bootLogo圖片
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啟動(dòng)->顯示屏初始化->從設(shè)備樹讀取logo圖片名->載入圖片->顯示圖片->開啟背光。
03
RK平臺(tái)修改開機(jī)logo
那么定制開機(jī)logo圖片就是替換指定路徑的圖片即可:
U-boot開機(jī)logo:kernel/ logo.bmp
Kernel開機(jī)logo:kernel/ logo_kernel.bmp
圖片格式為bmp,分辨率保持與顯示屏分辨率一致的最佳。另外可以通過logo,mode屬性來選擇小像素logo圖示居中顯示還是拉伸顯示。
編譯燒錄后的效果如下:
高通平臺(tái)的開機(jī)logo存儲(chǔ)在splash分區(qū),替換logo的方式制作將圖片編譯成splash.img,燒錄進(jìn)splash分區(qū)。MTK平臺(tái)的開機(jī)logo基本和RK平臺(tái)一樣,替換圖片編譯下載即可。
/ The End /
推薦閱讀
Android系統(tǒng)system.img解包和重新打包
本文由【嵌入式案例Show】原創(chuàng)出品,未經(jīng)許可,請(qǐng)勿轉(zhuǎn)載
掃碼關(guān)注我們
看更多嵌入式案例
喜歡本篇內(nèi)容請(qǐng)給我們點(diǎn)贊、在看
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場,如有問題,請(qǐng)聯(lián)系我們,謝謝!