zl程序教程

您现在的位置是:首页 >  系统

当前栏目

嵌入式Linux开发,更换内核kernel开机画面LOGO—左上角小企鹅图标(分辨率为80*80)

Linux内核嵌入式开发 开机 图标 分辨率 更换
2023-09-14 09:09:34 时间

将企鹅的 Logo 换成自己喜欢的任意图片,或公司logo,方法如下。

一、在Ubuntu系统中,安装图形转换工具。

sudo apt-get install netpbm

二、制作 logo 图片。

准备一张 png 格式的图片,图片分辨率不能超过屏的分辨率。比如图片名为 linuxlogo.png,转换如下。

pngtopnm linuxlogo.png >linuxlogo.pnm //将png转换成pnm
pnmquant 224 linuxlogo.pnm> linuxlogo224.pnm //将pnm图片的颜色数限制在224
pnmtoplainpnm linuxlogo224.pnm > linuxlogo224.ppm //将pnm图片转换成最终的ppm

运行完上面的命令之后,生成的 linuxlogo224.ppm 文件,为所需要的文件。
三、替换。

将生成的 linuxlogo224.ppm 文件,替换掉 kernel/drivers/video/logo/logo_linux_clut224.ppm 文件。

四、内核配置。

配置如下。

以下配置根据自己的硬件作调整。

五、编译内核。

编译后,确定文件 kernel-3.2/drivers/video/logo/logo_linux_clut224.o 已更新,也可通过编译打印信息进行确认。

如果无法更新,删除已生成文件;或先直接删除已生成文件,再进行内核编译。删除如下:

#kernel/drivers/video/logo
cd drivers/video/logo
rm logo_linux_clut224.c logo_linux_clut224.o

六、烧写内核。

重新烧写内核,即可完成内核开机 logo 的更换。

注意事项:

图片名 linuxlogo.png 分辨率不能超过屏的分辨率,否则无法显示。在有些应用中,分辨率和屏一样也无法显示,可先采集屏的分辨率的一半进行测试。

附:让logo显示在屏幕中央(通过结构体获得屏幕大小数据)

logo居中,设置logo图片在屏幕中的位置,自发如下:

1、在 kernel-3.2/drivers/video/fbmem.c 文件中,找到"fb_show_logo_line"函数,将
 

image.dx = 0;
image.dy = y;

改为:

image.dx = (info->var.xres - logo->width) / 2; //logo显示的起始坐标x值
image.dy = (info->var.yres - logo->height) / 2;

info->var.xres和info->var.yres为屏幕分辨率大小,logo->width和logo->height为logo图片大小。

2、在 kernel-3.2/drivers/video/console/fbcon.c 文件中,找到“fbcon_prepare_logo”函数,在

logo_height = fb_prepare_logo(info, ops->rotate);

后面加上:

logo_height += (info->var.yres/2) - (logo_height/2);