您尚未登录。

楼主 #1 2020-05-10 10:39:40

xinxin
会员
注册时间: 2019-10-28
已发帖子: 8
积分: 28

LINUX动态修改开机动画应用层修改开机动画

实现原理:

1.用uboot把文件系统里面的文件读取到RAM的最后一点位置
    2.设置此位置不被内核占用
    3.内核读取RAM地址,并解码。
    4.内核启动后文件系统也就能使用了,再挂载存LOGO的分区
    5.通过cp等命令替换原来的LOGO图片即可
    6.重新开机,显示新LOGO

暂时只支持FB缓冲区为32bit的设备(也就是ARGB888或者RGB888的平台),RGB55、RGB565、RGB666等还为受到支持与验证。
为了简化步骤,不用去修改makefile文件,所以所有的源文件都是用的x.h
支持解码8bit、16bit、24bit、32bit的未压缩bmp文件,暂不支持1bit的BMP文件
作者建议:

LOGO尺寸不能超过屏幕尺寸
    优先使用32bit的BMP文件,虽然占用的空间大些,但是解码32bit的速度是最快的
    避免使用24bit的BMP文件,因为24bit既不是字也不是半字,只能用3个字节来处理,处理速度相对其他格式较慢。
    避免使用 8bit的BMP文件,颜色还原度较差,如果您的图片为黑白图片,8bit的将是最佳选择。

教程针对f1c100s SD卡启动

1、uboot修改
1.1、memconfig里面
修改传入内核的参数内存修改小一点(如:f1c100s配480*272的屏幕 添加或者改为mem=30M)(最好留出屏幕分辨率的2.5倍以上,其中要存放一张BMP图片,很多UBOOT的屏幕显存是放到内存末尾的)

1.2、修改uboot的evn,f1c100s的目录u-boot/include/configs/suniv.h\
f1c100s完整参数如下:

#define CONFIG_BOOTCOMMAND  "setenv bootm_boot_mode sec; " \
                            "load mmc 0:1 0x81E00000 logo.bmp;" \
                            "load mmc 0:1 0x81000000 zImage; " \
                            "load mmc 0:1 0x81800000 suniv-f1c100s-licheepi-nano.dtb;" \
                            "bootz 0x81000000 - 0x81800000;"

只需要在之前的变量中添加
    "load mmc 0:1 0x81E00000 logo.bmp;" \
    mmc 0:1 需要根据实际情况来修改,fic100s的平台可以这么写
    0x81E00000 为内存地址,根据实际内存大小来定义以及屏幕大小来修改
    logo.bmp 为logo文件名(支持8bit、16bit、24bit和32bit的未压缩bmp文件)


2、将logo.bmp文拷贝到SD卡的第一分区(也就是放置内核的位置)
   使用本文件夹下面的LOGO需要修改文件名

3、内核修改
把所有.H文件拷贝到drivers/video/fbdev/core/ 下面

修改drivers/video/fbdev/core/fbmem.c文件的int fb_show_logo(struct fb_info *info, int rotate)函数

#include "xinxin_main.h"
int fb_show_logo(struct fb_info *info, int rotate)
{
	int y;

	y = xinxin_disp_bmp_logo(info, rotate, 0, num_online_cpus());
	// y = fb_show_logo_line(info, rotate, fb_logo.logo, 0, num_online_cpus());
	// y = fb_show_extra_logos(info, y, rotate);
	return y;
}


附1
    如果您的LOGO显示不完整
    需要修改 drivers/video/console/fbcon.c 如果没有那就在drivers/video/fbdev/core/fbcon.czhong中
    找到"fbcon_prepare_logo"函数,在
    logo_height = fb_prepare_logo(info, ops->rotate);   
    如果您不需要屏幕打印tty信息则添加
    logo_height = 屏幕高度;

最近编辑记录 xinxin (2020-05-10 11:08:31)

离线

楼主 #2 2020-05-10 10:41:15

xinxin
会员
注册时间: 2019-10-28
已发帖子: 8
积分: 28

Re: LINUX动态修改开机动画应用层修改开机动画

离线

#3 2020-05-10 10:51:26

mark
会员
注册时间: 2020-01-11
已发帖子: 21
积分: 15.5

Re: LINUX动态修改开机动画应用层修改开机动画

感谢分享, get新技能!

离线

#4 2020-05-10 11:18:15

tianjjff
会员
注册时间: 2018-12-24
已发帖子: 129
积分: 22

Re: LINUX动态修改开机动画应用层修改开机动画

感谢分享!

离线

#5 2020-05-10 21:27:35

pajoke
会员
注册时间: 2020-03-21
已发帖子: 12
积分: 12

Re: LINUX动态修改开机动画应用层修改开机动画

原来可以这样实现,多谢楼主!

离线

#6 2020-05-11 00:17:40

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,138
积分: 1090.5

Re: LINUX动态修改开机动画应用层修改开机动画

有点不解,logo文件放到文件系统的,uboot阶段就可以显示logo了,为什么还需要修改内核呢?

离线

#7 2020-05-11 08:54:49

Jmhh247
会员
注册时间: 2018-12-21
已发帖子: 262
积分: 262

Re: LINUX动态修改开机动画应用层修改开机动画

楼主的做法,可能是在uboot和linux阶段都显示logo。

有些系统在两者同时显示时,可能会有花屏出现。。。 标题里面还提到了支持应用层动态修改。

达克罗德 说:

有点不解,logo文件放到文件系统的,uboot阶段就可以显示logo了,为什么还需要修改内核呢?

离线

#8 2020-05-11 08:56:23

光头程序员
会员
注册时间: 2020-03-03
已发帖子: 14
积分: 14

Re: LINUX动态修改开机动画应用层修改开机动画

Jmhh247 说:

楼主的做法,可能是在uboot和linux阶段都显示logo。

有些系统在两者同时显示时,可能会有花屏出现。。。 标题里面还提到了支持应用层动态修改。

我也觉得是这个意思, 但是小弟我道行浅,不敢说,只敢站在大佬后面附和几句。

离线

#9 2020-05-11 08:56:35

小智
会员
注册时间: 2019-10-16
已发帖子: 112
积分: 84

Re: LINUX动态修改开机动画应用层修改开机动画

学习了,

离线

楼主 #10 2020-05-11 09:47:27

xinxin
会员
注册时间: 2019-10-28
已发帖子: 8
积分: 28

Re: LINUX动态修改开机动画应用层修改开机动画

达克罗德 说:

有点不解,logo文件放到文件系统的,uboot阶段就可以显示logo了,为什么还需要修改内核呢?

我的目的是做了解码JIF的开机动画,只是标题打早了一点,现在只支持BMP的解码,如果只用UBOOT实现动画时间太短了,可能就3秒:),要是用内核来实现动画还可以加入开机进度条,修改UBOOT是因为不能保证内核是先insmode文件系统再insmode BF的,所以先用UBOOT把文件读取到RAM中,内核直接读RAM。

离线

#11 2020-05-11 13:43:19

omg
会员
注册时间: 2020-05-11
已发帖子: 10
积分: 0

Re: LINUX动态修改开机动画应用层修改开机动画

感谢分享!学习了

离线

#12 2020-05-12 23:38:00

wwkkww1983
会员
注册时间: 2019-10-29
已发帖子: 4
积分: 4

Re: LINUX动态修改开机动画应用层修改开机动画

可以这样实现,多谢楼主~

离线

#13 2020-12-08 21:11:31

shawn.d
会员
注册时间: 2020-09-12
已发帖子: 164
积分: 95

Re: LINUX动态修改开机动画应用层修改开机动画

mark

离线

#14 2020-12-09 20:19:22

小智
会员
注册时间: 2019-10-16
已发帖子: 112
积分: 84

Re: LINUX动态修改开机动画应用层修改开机动画

mark

离线

#15 2020-12-10 00:28:49

笨企鹅
会员
注册时间: 2019-10-28
已发帖子: 38
积分: 37.5

Re: LINUX动态修改开机动画应用层修改开机动画

好思路

离线

#16 2020-12-10 11:00:39

hanzixi_angel
会员
注册时间: 2020-09-21
已发帖子: 54
积分: 35.5

Re: LINUX动态修改开机动画应用层修改开机动画

xinxin 说:


能实现动态修改uboot中的开机logo吗   谢谢

离线

#17 2021-02-03 10:59:58

大帅
会员
注册时间: 2019-01-17
已发帖子: 169
积分: 128.5

Re: LINUX动态修改开机动画应用层修改开机动画

项目地址 https://gitee.com/youliangixn/Linux

你所访问的页面不存在!
资源不存在或者没有访问权限,点击这里返回首页

没了???

离线

#18 2021-02-03 11:16:54

JasonWoo
会员
注册时间: 2019-06-04
已发帖子: 84
积分: 55.5

Re: LINUX动态修改开机动画应用层修改开机动画

能分享下项目吗?

离线

#19 2021-02-03 15:22:07

jou_1703
会员
注册时间: 2019-10-13
已发帖子: 12
积分: 12

Re: LINUX动态修改开机动画应用层修改开机动画

uboot并没有显示logo吧,uboot只是从mmc里面把logo数据读取到内存里,然后在kernel显示logo.

离线

#20 2021-02-03 15:27:06

jou_1703
会员
注册时间: 2019-10-13
已发帖子: 12
积分: 12

Re: LINUX动态修改开机动画应用层修改开机动画

离线

#21 2021-06-17 16:36:55

hanzixi_angel
会员
注册时间: 2020-09-21
已发帖子: 54
积分: 35.5

Re: LINUX动态修改开机动画应用层修改开机动画

xinxin 说:


地址能再发一下吗    已经失效了   另外在uboot中将logo.bmp中加载到内存了   怎么在uboot中进行显示啊   望不吝赐教  谢谢

离线

#22 2021-06-18 10:48:29

山羊胡子
会员
注册时间: 2020-11-10
已发帖子: 22
积分: 14.5

Re: LINUX动态修改开机动画应用层修改开机动画

我倒是想了一种方案,已应用效果不错。
思路是,使用开源工具ImageMagick,移植到目标板。该工具能将bmp/png/jpg等格式的图片转成bgr原始数据,然后在uboot/kernel/rootfs阶段读取该原始数据,写入framebuffer即可。
博客:https://blog.csdn.net/qq_27689785/article/details/117250592?spm=1001.2014.3001.5501/

最近编辑记录 山羊胡子 (2021-06-18 10:49:44)

离线

#23 2021-06-21 16:37:46

zjsx133
会员
注册时间: 2018-07-23
已发帖子: 70
积分: 50

Re: LINUX动态修改开机动画应用层修改开机动画

该评论内容与本帖子无关,鼓励各位坑友积极发言讨论与帖子有关的内容!

离线

  • 不通过:与技术无关

#24 2021-06-21 16:47:08

哇酷小二
管理员
所在地: 你猜
注册时间: 2020-04-22
已发帖子: 3,388
积分: 1902
个人网站

Re: LINUX动态修改开机动画应用层修改开机动画

zjsx133 说:

好东东,记号

本站有搜藏和点赞功能,感谢支持。





离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn