说明
imx8mm的启动图标分为3个部分:
- uboot
- kernel
- 文件系统
uboot图标
uboot 不需要更改,uboot启动的时候还没有lcd的驱动。
驱动位置:
MYIR-i.MX8MM-Uboot/drivers/video/imx/imx8_hdmi.c //系统启动默认的是这个。
kernel更改启动图标
pngtopnm logo.png > linuxlogo.pnm
pnmquant 224 linuxlogo.pnm > linuxlogo224.pnm
pnmtoplainpnm linuxlogo224.pnm > logo_linux_clut224.ppm
cp logo_linux_clut224.ppm ../MYIR-i.MX8MM-Linux/drivers/video/logo/
logo位置:
drivers/video/logo/
对应的驱动:
/drivers/video/fbdev/core/fbmem.c
相关函数:
int fb_prepare_logo(struct fb_info *info, int rotate)
系统服务和文件系统启动进度
系统是用的是psplash。
下载地址:
git clone git://git.yoctoproject.org/psplas
sudo apt-get install libgdk-pixbuf2.0-dev
将要修改的背景图片名字改为psplash-poky.png,然后执行命令:
./make-image-header.sh psplash-poky.png POKY
同样的进度条,将要修改的背景图片名字改为psplash-bar.png,然后执行命令:
./make-image-header.sh psplash-bar.png BAR
同样进度条也可以使用默认的进度条,使用命令:
./make-image-header.sh base-images/psplash-bar.png BAR
生成的文件如下图:
然后配置编译平台:
./configure --host=arm-linux
然后直接make
将生成的psplash和psplash-write文件替换开发板/usr/bin中即可。
重要参数说明:psplash-config.h
14 /* Text to output on program start; if undefined, output nothing */
15 #ifndef PSPLASH_DISABLE_STARTUP_MSG
16 #define PSPLASH_STARTUP_MSG ""
17 #endif
18
19 /* 如果设置为0,会根据进度条的位置对下半部空白显示 */
20 /* Bool indicating if the image is fullscreen, as opposed to split screen */
21 #ifndef PSPLASH_IMG_FULLSCREEN
22 #define PSPLASH_IMG_FULLSCREEN 1
23 #endif
24
25 /* 下面的两个参数是调整进度条处于界面的比例位置 */
26 /* Position of the image split from top edge, numerator of fraction */
27 #define PSPLASH_IMG_SPLIT_NUMERATOR 4
28
29 /* Position of the image split from top edge, denominator of fraction */
30 #define PSPLASH_IMG_SPLIT_DENOMINATOR 6
如果使用的是竖屏那么我们需要旋转。其实旋转功能很简单,不像有些文章中说的需要修改很多参数。
222 main (int argc, char** argv)
223 {
224 char *rundir;
225 /* old:angle = 0;这个值将旋转整个显示界面 */
226 int pipe_fd, i = 0, angle = 270, fbdev_id = 0, ret = 0;
如果不是我们想要的效果,可以通过修改psplash-poky.png和psplash-bar.png来调整。
在实际修改中屏蔽了psplash中清屏和设置背景的功能。因为它们的背景图片是一样的,直接显示进度条就可以了。
note:如果需要修改背景,只需要更改kernel下的背景即可。