首页 > 其他分享 >RK3568平台(基础篇)开机LOGO

RK3568平台(基础篇)开机LOGO

时间:2024-07-13 13:26:07浏览次数:11  
标签:kernel RK3568 boot header bmp LOGO 开机 logo

一.开机LOGO概述

rk3568开机logo由 uboot和kerne两阶段所用图片构成uboot启动阶段主动加载 logo.bmp,kernel启动阶段会加载logo.bmp和logo kernel.bmp。在内核编译时这两张图片会打包到 resource.img镜像,然后再合并到boot.img; logo文件直接关系boot.img大小boot.img分区超出分区表标定大小会导致无法刷机或升级失败。

rockchip替换kernel中的logo.bmp与logo_kernel.bmp文件,即可替换uboot与kernel的开机logo。

RK芯片开机logo目前只支持bmp格式,并且位深度支持8,32bit。

 Rockchip系列芯片开机 Logo 存放在 kernel目录的 logo.bmp、logo kernel.bmp,内核编译后同 内核设备树打包到 resource.img,Android源码编译完整升级包时会额外将u-bo0t阶段充电相关显示画面一并打包到resource.img,以显示l0g0方式显示充电画面、低电量等画面。Android10 以后支持中加载10g0分区,l0go.mg镜像中包含开机l0g0、关机充电画面等图片,系统启动过程优先加载此分区中的资源。

二.开机LOGO相关配置

boot recovery logo分区大小设置:

rockchip/common/build/rockchip/Partitions.mk
BOARD_RECOVERYIMAGE_PARTITION_SIZE ?= 100663296

 dts配置如下:

&route_hdmi {
        status = "okay";
        logo,mode = "center";
        connect = <&vopb_out_hdmi>;
};

&hdmi {
        #address-cells = <1>;
        #size-cells = <0>;
        #sound-dai-cells = <0>;
        status = "okay";
};

&display_subsystem {
        status = "okay";
};

&vopb_out_hdmi {
        status = "okay";
};

&vopl_out_hdmi {
        status = "disabled";
};

 注意:这里的dts是u-boot中的dts。还有就是route_hdmi节点中的connect属性需要和内核中的配置一样,否则可能导致kernel阶段的logo不显示。

uboot显示框架代码:

u-boot/drivers/video/display-uclass.c
u-boot/drivers/video/drm/bmp_helper.c
u-boot/drivers/video/drm/rockchip_display.c

在开机log uboot阶段会有读取开机logo的打印:

这里会去读取uboot阶段的logo 

这里会去读取kernel阶段的logo。

u-boot/drivers/video/drm/rockchip_display.c 

static int load_bmp_logo(struct logo_info *logo, const char *bmp_name)
{
#ifdef CONFIG_ROCKCHIP_RESOURCE_IMAGE
	struct rockchip_logo_cache *logo_cache;
	struct bmp_header *header;
	void *dst = NULL, *pdst;
	int size, len;
	int ret = 0;
	int reserved = 0;
	int dst_size;

	if (!logo || !bmp_name)
		return -EINVAL;
	logo_cache = find_or_alloc_logo_cache(bmp_name);
	if (!logo_cache)
		return -ENOMEM;

		if (logo_cache->logo.mem) {
		memcpy(logo, &logo_cache->logo, sizeof(*logo));
		return 0;
	}

	header = malloc(RK_BLK_SIZE);
	if (!header)
		return -ENOMEM;

	printf("read ist customer bmp %s header fail\n",bmp_name); 
	len = rockchip_read_resource_file(header, bmp_name, 0, RK_BLK_SIZE);

	printf("get logo bit_count: %d\n", get_unaligned_le16(&header->bit_count));
	printf("get logo width: %d\n", get_unaligned_le32(&header->width));
	printf("get logo height: %d\n", get_unaligned_le32(&header->height));

	.........
}

bmp_name在uboot打印的是logo.bmp,读取的是logo.bmp。在kernel读取的是logo_kernel.bmp,读取的是logo_kernel.bmp。

标签:kernel,RK3568,boot,header,bmp,LOGO,开机,logo
From: https://blog.csdn.net/weixin_49303682/article/details/140397984

相关文章

  • RK3568平台(vendor篇)分区设置
    一.分区概述在对评估板进行开发验证时,时常会遇到根目录空间不足的情况,而在其他分区又有冗余空间,这时则需要对分区大小重新进行分配,合理化利用分区空间。如何查看分区大小:df-h指令查看parameter.txt分区表修改路径rockdev/parameter.txt二.parameter.txt分区表介绍FI......
  • 生成带logo二维码+批量压缩导出
    importcom.google.zxing.BarcodeFormat;importcom.google.zxing.EncodeHintType;importcom.google.zxing.MultiFormatWriter;importcom.google.zxing.common.BitMatrix;importcom.google.zxing.qrcode.decoder.ErrorCorrectionLevel;importjavax.imageio.ImageIO;......
  • 服务器断电后无法开机
    当服务器断电后无法开机,‌可能的原因和解决方法包括:‌.电源和断路器检查:‌首先应检查服务器的电源系统和断路器是否正常工作,‌确保有足够的电力供应。‌建议保存备份电源以避免断电造成的损害和损失。‌.电源开关检查:‌确认服务器的电源开关处于正常位置。‌如果电源开关不在正......
  • 在Linux中,系统的开机启动顺序是什么?
    在Linux中,系统的开机启动顺序是一个复杂但有序的过程,它涉及从硬件自检到用户登录的多个阶段。以下是Linux系统开机启动顺序的详细说明:一、BIOS自检与启动设备选择加载BIOS:BIOS(基本输入输出系统)是计算机启动时的第一个软件。它负责在硬件和软件之间提供接口,进行开机自检(POST),检......
  • AI绘画comfyui工作流,商业海报设计、Logo设计,一个comfyui工作流就能搞定!
    前言创新设计工作流:轻松打造LOGO和海报本文涉及的工作流和插件,需要的朋友请扫描免费获取哦—HAPPYNEWYEAR—大家好!今天我要分享的是一个高效且创新的设计工作流,这一工具由国外的网友无私分享,适用于LOGO设计和海报创作。这不仅是对开源精神的致敬,也为我们的设计工......
  • Apache DolphinScheduler如何开启开机自启动功能?
    转载自东华果汁哥ApacheDolphinScheduler是一个分布式、去中心化的大数据工作流调度系统,支持大数据任务调度。若要设置DolphinScheduler开机自启动,通常需要将其配置为系统服务。以下是一般步骤,具体操作可能因操作系统的不同而有所差异:Linux系统创建系统服务文件:编辑一......
  • QML仿Windows开机动画
    importQtQuick2.5importQtQuick.Window2.2Window{visible:truewidth:640height:320id:roottitle:qsTr("win10loading")color:"#1086a2"Repeater{model:5id:repeaterRe......
  • 电脑开机检测不到硬盘怎么办 电脑检测不到硬盘问题解决
    电脑开机检测不到硬盘,无法进入系统或者显示“RebootandSelectproperBootdevice”等错误信息。这种情况可能会导致我们的数据丢失或者无法使用电脑。一、电脑检测不到硬盘的可能原因电脑检测不到硬盘的原因主要有以下几种:1、硬盘连接线松动或损坏:硬盘是通过SATA线或M.2插......
  • 服务器开机报警
    服务器开机报警可能由多种原因引起,以下是一些常见的故障及其解决方法:一、故障原因电源问题:市电或电源线故障(断电或接触不良)。电源或电源模组故障,如电源模块故障、电源背板故障等。如果只有一个电源模块供电,或者该电源模块出现故障,也可能导致开机报警。硬件故障:内存故障:开机......
  • 如何解决服务器开机报警问题
    解决服务器开机报警问题,需要按照一系列步骤进行故障排查和修复。一、初步检查与确认查看报警信息:观察服务器的指示灯,特别是电源指示灯、硬盘指示灯等,看是否有异常。如果服务器有显示屏或终端窗口,查看是否有相应的警告信息或错误代码。确认电源状态:检查电源线是否插好,电源插......