1、首先我们准备一张自己的开机图片,
做成符合linux要求的ppm(图片保存结尾要求是ppm,并且是ascii码形式保存,而且应该是索引模式最大颜色数应该是224)图片。
2、logo部分代码在drivers/video/logo中,以logo_linux_clut224.ppm为例,
logo_linux_clut224.c 是依赖
logo_linux_clut224.ppm生成的文件,详见附件中Makefile。
logo_linux_clut224.c文件包含logo_linux_clut224这个结构体,结构体中包含分辨率,图片数组,颜色类型。
3、logo.c中会调用这个
logo_linux_clut224结构体,
#ifdef CONFIG_LOGO_LINUX_CLUT224
logo = &logo_linux_clut224;
#endif
定义在
logo_linux_clut224.c中include/linux/linux_logo.h 中将这个结构体定义为全局。
4、如果一版固件要兼容不同分辨率的logo那么将不同分辨率的图片对应的结构体生成出来最好将这些数组保存到一个文件中去然后include,然后定义成不同的结构体。在
include/linux/linux_logo.h这里将自定义的结构体声明为全局。然后再
logo.c根据从parameter文件中读取的配置来进行不同的分辨率以及不同图片的兼容。
5、因为
logo_linux_clut224.c文件是生成的,所以在顶层目录 make clean时候这个文件会被清除掉。而且也不会提交,所以修改Makefile 结尾clean-files := *.o *_
clut224.c
*_mono.c *_vga16.c *_gray256.c把你不想被清掉的文件从这一行去掉。git 也不会提交这些文件,所以修改下.gitignore文件把#*_clut224.c注释掉。