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





