文章目录
前言
在RK3399平台开发过程中,可能需要定制开机logo及开机动画。本文旨在介绍android 系统的logo 显示部分。
开机logo一般有2种:静态和动态。Android 开机时共有三种logo,如下:
- 1. uboot logo 显示
- 2. kernel logo 显示
- 3. Android 开机动画显示
一般情况下将前两幅图做成一样的,第三个就是开机动画部分。
(uboot显示logo一般可以不做,加快android启动速度)。
- 运行环境:
系统:Android8.1
内核 : Kernel 4.4.167
u-boot:2014.10
显示接口:MIPI-DSI
一、u-boot 及 kernel logo 显示
1. logo 显示及替换
1. u-boot logo 和 kernel logo 均在 kernel / 目录下:
u-boot logo :kernel/logo.bmp
kernel logo :logo_kernel.bmp
说明:
1.若logo.bmp 与 logo_kernel.bmp 采用同一logo图片则可以无缝衔接。
2.若需定制开机logo 图片,只需替换kernel/logo.bmp和kernel/logo_kernel.bmp,同时在设备树中修改logo的显示模式(居中或者全屏)。
mipi-dsi logo 居中模式dts 配置:
&display_subsystem {
status = "okay";
ports = <&vopb_out>, <&vopl_out>;
logo-memory-region = <&drm_logo>;
secure-memory-region = <&secure_memory>;
route {
route_hdmi: route-hdmi {
status = "disabled";
logo,uboot = "logo.bmp";
logo,kernel = "logo_kernel.bmp";
logo,mode = "center";
charge_logo,mode = "center";
connect = <&vopb_out_hdmi>;
};
route_dsi: route-dsi {
status = "okay";
logo,uboot = "logo.bmp";
logo,kernel = "logo_kernel.bmp";
logo,mode = "center";
charge_logo,mode = "center";
connect = <&vopb_out_dsi>;
};
route_dsi1: route-dsi1 {
status = "disabled";
logo,uboot = "logo.bmp";
logo,kernel = "logo_kernel.bmp";
logo,mode = "center";
charge_logo,mode = "center";
connect = <&vopl_out_dsi1>;
};
route_edp: route-edp {
status = "disabled";
logo,uboot = "logo.bmp";
logo,kernel = "logo_kernel.bmp";
logo,mode = "center";
charge_logo,mode = "center";
connect = <&vopb_out_edp>;
};
};
};
&dsi_in_vopb {
status = "okay";
};
&dsi_in_vopl {
status = "disabled";
};
&vopb {
assigned-clocks = <&cru DCLK_VOP0_DIV>;
assigned-clock-parents = <&cru PLL_CPLL>;
};
&vopl {
assigned-clocks = <&cru DCLK_VOP1_DIV>;
assigned-clock-parents = <&cru PLL_VPLL>;
};
更换完开机logo重新编译内核烧写resource.img即可。
2. logo 不显示问题分析
配置好开机logo的dts 后,可能出现u-boot logo 和 kernel logo 均不显示现象,此种情况大概率是logo 尺寸不对导致,更换合适尺寸的logo.bmp 和 logo_kernel.bmp 即可。
二、Android 开机动画显示
1. Android 开机动画不显示问题分析
u-boot logo 和 kernel logo 正常显示完成后,Android 开机动画不显示,Android 系统进入黑屏状态。出现此种现象可能是dsi 的 dts 配置异常导致。
1. 当dsi 配置如下,设备无法匹配 "simple-panel-dsi" , 导致 Android 系统进入黑屏状态:
&dsi {
status = "okay";
lcd_panel: lcd-panel {
compatible = "simple-panel-dsi"; // 无法找到.name
reg = <0>;
backlight = <&backlight>;
2. 更改dsi 配置如下:
&dsi {
status = "okay";
lcd_panel: panel@0 {
compatible ="simple-panel-dsi";
reg = <0>;
backlight = <&backlight>;
reset-gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;
enable-gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>;
dsi,flags = <(MIPI_DSI_MODE_VIDEO_BURST | MIPI_DSI_MODE_VIDEO |
MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_EOT_PACKET)>;
dsi,format = <MIPI_DSI_FMT_RGB888>;
bus-format = <MEDIA_BUS_FMT_RGB666_1X18>;
dsi,lanes = <4>;
reset-delay-ms = <200>;
init-delay-ms = <80>;
enable-delay-ms = <200>;
prepare-delay-ms = <200>;
status = "okay";
panel-init-sequence = [
05 78 01 11 // sleep out
05 14 01 29 // display on
];
panel-exit-sequence = [
05 05 01 28
05 78 01 10
];
display-timings {
native-mode = <&timing0>;
timing0: timing0 {
clock-frequency = <120000000>;
hactive = <1200>;
vactive = <1920>;
hback-porch = <60>;
hfront-porch = <80>;
vback-porch = <25>;
vfront-porch = <35>;
hsync-len = <1>;
vsync-len = <1>;
hsync-active = <0>;
vsync-active = <0>;
de-active = <0>;
pixelclk-active = <0>;
};
};
};
};
重新编译内核并烧录生效。Android 开机动画显示正常。
2. Android 开机动画制作与替换
参考连接 : https://blog.csdn.net/kangweijian/article/details/128257842
总结
以上就是今天要讲的内容,本文仅仅简单介绍了Android 开机logo 与 Android 开机动画的显示。