imx6ull logo 更改

1 前期准备

安装依赖工具,

1
> sudo pacman -S netbpm

将要显示的 logo 图片准备好,logo 格式可以是 png,bmp 或 jpge。

我用的是 png 格式的 logo,

uboot 的 logo 是 bmp 格式的,那么需要先转化为 bmp 格式,这里不能直接用 windows 的画图软件直接转化,直接转化后烧录 logo 会不显示,使用下述命令:

1
pngtopnm ./mylogo.png | ppmquant 31 | ppmtobmp -bpp 8 > ./mylogo.bmp

命令及输出如下:

1
2
3
4
5
6
7
8
9
10
> pngtopnm ./mylogo.png | ppmquant 31 | ppmtobmp -bpp 8 > ./mylogo.bmp
pnmcolormap: making histogram...
pnmcolormap: Scanning image 0
pnmcolormap: 8753 colors so far
pnmcolormap: 8753 colors found
pnmcolormap: choosing 31 colors...
pnmremap: 31 colors found in colormap
ppmtobmp: analyzing colors...
ppmtobmp: 31 colors found
ppmtobmp: Writing 8 bits per pixel with a color palette

kernel 的 logo 需要转化为 224 色的 ppm 文件,所以同样的,输入下述命令:

1
pngtopnm logo.png | ppmquant -fs 224 | pnmtoplainpnm > logo_linux_clut224.ppm

命令和输出如下:

如果使用的不是 png,将 pngtopnm 更改为 bmptopnmjpegtopnm 即可。

上述生产了 uboot 需要的 mylogo.bmp 和 kernel 需要的 logo_linux_clut224.ppm

2 uboot

将生成的 mylogo.bmp copy 到 uboot 源码的 ./tools/logos/ 中,然后修改 ./tools/Makefile 文件,添加下述代码:

1
LOGO_BMP= $(srctree)/$(src)/logos/mylogo.bmp

添加完成后,重新编译并烧录即可。

3 kernel

将生成的 logo_linux_clut224.ppm 文件 copy 到 kernel 源码的 ./drivers/video/logo/ 中,并直接覆盖原始的 logo ppm 文件,

由于我生成的是和我屏幕同样大小的图片,也就是 800x480 的图片,所以需要更改 logo 显示的坐标,

定位到 fb_show_logo_line 函数,将 image.dx 和 image.dy 设置为 0,

完成后重新编译内核并烧录运行。