nxp的linux阶段logo改变

在安卓系统启动中,会有两个阶段的logo显示,一个是kernel阶段,一个是android阶段
Linux显示开机logo的函数调用:
参考网址

http://www.manongjc.com/detail/15-eihuimkprqaprud.html
https://www.cnblogs.com/skyred99/p/5683817.html

自己的修改patch


diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
index 42c72d051158..3aafbeee7a65 100644
--- a/drivers/video/fbdev/core/fbcon.c
+++ b/drivers/video/fbdev/core/fbcon.c
/*图片居中的修改patch*/
@@ -599,6 +599,7 @@ static void fbcon_prepare_logo(struct vc_data *vc, struct fb_info *info,
        if (fb_get_color_depth(&info->var, &info->fix) == 1)
                erase &= ~0x400;
        logo_height = fb_prepare_logo(info, ops->rotate);
+       logo_height += (info->var.yres / 2) - (logo_height / 2);
        logo_lines = DIV_ROUND_UP(logo_height, vc->vc_font.height);
        q = (unsigned short *) (vc->vc_origin +
                                vc->vc_size_row * rows);
diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
index 7ecb121c482e..1f8996935b79 100644
--- a/drivers/video/fbdev/core/fbmem.c
+++ b/drivers/video/fbdev/core/fbmem.c
@@ -516,12 +516,13 @@ static int fb_show_logo_line(struct fb_info *info, int rotate,
                image.dx = (xres - n * (logo->width + 8) - 8) / 2;
                image.dy = y ?: (yres - logo->height) / 2;
        } else {
-               image.dx = 0;
-               image.dy = y;
+               //image.dx = 0;
+               //image.dy = y;
        }
-
        image.width = logo->width;
        image.height = logo->height;
       /*info->var.xres,info->var.yres对应屏幕分辨率,
			image.width ,image.height对应图片logo的分辨率。
		*/
+       image.dx = (info->var.xres / 2) - (image.width / 2);
+       image.dy = (info->var.yres / 2) - (image.height / 2);
 
        if (rotate) {
                logo_rotate = kmalloc_array(logo->width, logo->height,
@@ -689,12 +690,12 @@ int fb_show_logo(struct fb_info *info, int rotate)
/*在linux图标显示会根据cpu的核数进行企鹅数量打印,我们只需要把对应的核数修改为1就ok*/
 {
        unsigned int count;
        int y;
        if (!fb_logo_count)
                return 0;
 
        count = fb_logo_count < 0 ? num_online_cpus() : fb_logo_count;
-       y = fb_show_logo_line(info, rotate, fb_logo.logo, 0, count);
+       y = fb_show_logo_line(info, rotate, fb_logo.logo, 0, 1);

在启动界面还有一个白色的指针,我们也可以把他去掉,不然更换启动全屏log的时候会出现一个小黑框的情况:



/*去掉指针显示,更换全屏后显示黑标的bug*/

diff --git a/drivers/video/fbdev/core/Makefile b/drivers/video/fbdev/core/Makefile
index 26cbc965497c..26e6b7412e94 100644
--- a/drivers/video/fbdev/core/Makefile
+++ b/drivers/video/fbdev/core/Makefile
@@ -7,7 +7,7 @@ fb-y                              := fbmem.o fbmon.o fbcmap.o fbsysfs.o \
 fb-$(CONFIG_FB_DEFERRED_IO)       += fb_defio.o
 
 ifeq ($(CONFIG_FRAMEBUFFER_CONSOLE),y)
-fb-y                             += fbcon.o bitblit.o softcursor.o
+fb-y                             += fbcon.o bitblit.o
 ifeq ($(CONFIG_FB_TILEBLITTING),y)
 fb-y                             += tileblit.o
 endif
diff --git a/drivers/video/fbdev/core/bitblit.c b/drivers/video/fbdev/core/bitblit.c
index 9725ecd1255b..06266ed9e019 100644
--- a/drivers/video/fbdev/core/bitblit.c
+++ b/drivers/video/fbdev/core/bitblit.c
@@ -373,8 +373,8 @@ static void bit_cursor(struct vc_data *vc, struct fb_info *info, int mode,
        if (info->fbops->fb_cursor)
                err = info->fbops->fb_cursor(info, &cursor);
 
-       if (err)
-               soft_cursor(info, &cursor);
+       //if (err)
+               //soft_cursor(info, &cursor);
/*不注释会报错*/

这个时候开机我么就会发现企鹅变成一个并在屏幕中间了

/*替换 原来的图片:
linux默认的图片是logo_linux_clut224.ppm这个
*/
drivers/video/logo/logo_linux_clut224.ppm

/*如何将png图片转换为ppm*/
pngtopnm mylogo.png > mglogo.pnm
pnmquant 224 mglogo.pnm > mglogo224.pnm
pnmtoplainpnm mglogo224.pnm > mglogo224.ppm
/*
重命名 mglogo224.ppm 为logo_linux_clut224.ppm放在对应的目录下。
译后生成的logo_linux_clut224.c和logo_linux_clut224.o文件(避免替换失败)
*/

在一次编译烧录,就已经替换成功了。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永不秃头的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值