1 Star 0 Fork 2

shawn.d / Linux动态修改LOGO

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

Linux动态修改LOGO

介绍

作者QQ:460512950

实现原理:

1.用uboot把文件系统里面的文件读取到RAM的最后一点位置

2.设置此位置不被内核占用

3.内核读取RAM地址,并解码。

4.内核启动后文件系统也就能使用了,再挂载存LOGO的分区

5.通过cp等命令替换原来的LOGO图片即可

6.重新开机,显示新LOGO

暂时只支持FB缓冲区为32bit的设备(也就是ARGB888或者RGB888的平台),RGB555、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.c中

找到"fbcon_prepare_logo"函数,在

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

如果您不需要屏幕打印tty信息则添加

logo_height = 屏幕高度; 

作者QQ:460512950

空文件

简介

暂无描述 展开 收起
C
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C
1
https://gitee.com/shawnd2020/Linux-Bmp-Logo.git
git@gitee.com:shawnd2020/Linux-Bmp-Logo.git
shawnd2020
Linux-Bmp-Logo
Linux动态修改LOGO
master

搜索帮助