uboot修改启动logo-sunxi

全志A33使用主线U-Boot方法 A33主线 阅读详情

时间:2018-02-10

题记:关于uboot启动logo修改

背景:由于项目一部分的需要,需要在系统前期开机阶段就要显示logo,我使用的是全志T3开发板,uboot也是其相应的SDK,于是开始了这修改logo的尝试。

说明:最为初始的SDK的uboot是有启动logo的,也就是全志V40这个logo,但是这个logo的启动方式是:将logo放在一个uboot分区中,然后再启动的时候使用fat文件系统读数据的函数,从指定的地址将这个图片读取过来,然后进行相应的显示。

目标:我们不想划分额外的分区给这张图片,于是想将这张图片直接在编译阶段直接编译进uboot,方法就是将这张图片变成数组就好了。

        下面是我在进行目标这个操作所总结的全志T3开发板uboot启动logo过程的分析,它和网上流传的ubootl启动ogo修改是不同的。


然后这里给出将(图片或)文件转化为数组的代码,供参考:

#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <malloc.h>

#define FILE_NAME "data.h"

int main (int argc, char *argv[])
{
	FILE *fp;
	FILE *fp1;
	struct stat   fileStat; 

	char *ptr =NULL;
	char *head =NULL;
	int i=1;
	char uch ;

	if(stat(argv[1], &fileStat)<0)
	{
		printf("Couldn't stat %s\n", argv[1]);
		return -1;
	}

	printf("file size:%d\n",(int)fileStat.st_size);

	fp = fopen(argv[1], "rb");
	fp1 = fopen(FILE_NAME, "w");

	if (!fp || !fp1) {
		printf("error: open %s\n",argv[1]);
		return -1;
	}

	if (fgetc (fp) != 'B' || fgetc (fp) != 'M')
	{
		printf ("Input file is not a bitmap\n");
		return -1;
	}
	
	ptr = (char*)malloc(fileStat.st_size);
	head = ptr;
	fseek(fp, 0, SEEK_SET);

	fprintf(fp1,"%s","unsigned char bmp_logo_bitmap[] = {\n");

	while(!feof(fp))
	{
		if(fread(ptr,sizeof(char),1,fp)<0) //这里没用fgetc()是因为出现了一些问题
			continue;
		ptr ++;
	}

	while(head != ptr)
	{
		fprintf(fp1,"0x%02X,",0xff&(*head));
		if(i%16==0)
			fprintf(fp1,"%s","\n");
		head++;
		i++;
	}
	fprintf(fp1,"%s","}\n");

	fclose(fp);
	fclose(fp1);
	return 0;
}

下面贴出修改后的是sunxi_bmp_display()代码:

int sunxi_bmp_display(char *name)
{
	int ret = 0;
	char *argv[6];
	char bmp_head[32];
	char bmp_name[32];
	char *bmp_head_addr = (char *)bmp_data; //bmp_data 是一个数组的名字


	ret = show_bmp_on_fb(bmp_head_addr, FB_ID_0);
	if (0 != ret)
		printf("show bmp on fb failed !\n");

	return ret;
}

然后期间遇到了一个问题,就是显示方面遇到的问题。

问题描述:我把一张图片写入到framebuff,但是它只显示了图像中间的一部分,其它部分全都是黑浅色显示,可以明显的看到这张图片的轮廓,其图像如下:


就是图片写进framebuff却显示其中的一部分,这个bug,一开始弄得好心烦。

经过不小心的尝试,终于发现原因:

我用的是32位的bmp图像,原因是显示器要求32位的即ARGB8888,但是后面再看图像十六进制数据的时候,发现ARGB8888中的A全部是00,也就是图像的A的值为0,以下为A的对照表。A其实表示的是在RGB这图像上盖上了一层膜,a取值不同的时候,这层膜的透明度就会改变,所以当a=ff时相当于这层膜透明了,图像就全彩显示了。

//透明度;alpha 取值对照  
100% — FF  
95% — F2  
90% — E6  
85% — D9  
80% — CC  
75% — BF  
70% — B3  
65% — A6  
60% — 99  
55% — 8C  
50% — 80  
45% — 73  
40% — 66  
35% — 59  
30% — 4D  
25% — 40  
20% — 33  
15% — 26  
10% — 1A  
5% — 0D  
0% — 00  

而我遇到的问题就是,上面那张bmp图只有中间那个框的ARGB中的a不为0,所以中间就显示了那部分,其余部分都被盖住了。为什么会出现这个问题,可能是产生着张图片的工具的原因,而解决此问题的方法就是,在代码中把透明度的值打开让A=ff即可,该怎么实现就是在拷贝到framebuff时修改这个值就好了。

下图是成功后的图像:



over!



uboot增加开机logo 阅读详情

相关推荐

全志T113-S3 Tina-SDK深度解析:如何高效定制boot动画与分区表?

本文深度解析了在全志T113-S3平台上使用Tina-SDK进行系统定制的高级技巧。重点阐述了如何高效定制boot动画,包括图片格式、动态动画及uboot阶段LOGO显示;并详细讲解了分区表(sys_partition.fex)的配置艺术、环境变量(env.cfg)的调优以及设备树(dts)的实战配置,帮助开发者提升系统启动速度、可靠性与开发效率。

rrr55的博客 594

UBOOT状态下的显示图片的N种方法

uboot状态下显示图片方法 1.用工具生成.H文件,然后引用.H文件里面的数组 2.用Makefile将图片编译进.bin文件 3.将图片下载到开发板的某个可用地址,运行程序的引用即可 4.5.跟1.类似但要自己实现工具的功能 6.如果芯片支持硬件解码,可以用芯片解码图片,效率最高而且,空间最小

jun2016425的博客 2730

全志R528核心板与开发板实战:从芯片选型到Linux系统构建

在嵌入式系统开发中,应用处理器(Application Processor)凭借其强大的计算能力和对完整操作系统的支持,成为复杂物联网(IoT)和智能硬件项目的核心。其工作原理基于ARM Cortex-A系列架构,能够运行Linux等通用操作系统,从而允许开发者利用丰富的开源软件生态处理图形界面、网络协议栈和多媒体任务。这一技术价值在于极大地提升了嵌入式设备的软件复杂度和功能上限,使其能够胜任智能家居中控、工业HMI和边缘AI设备等应用场景。本文聚焦于全志R528这一集成了显示、视频编解码和丰富外设接口的C

weixin_34194087的博客 371

u-boot显示logo

经过个人实践一下两种方法都可以实现: 首先lcd驱动必须能正常运行,想确定是不是正常,就看uboot启动时能不能显示默认的logo。 #define CONFIG_LCD 其次想在u-boot里面显示图片,图片格式必须是bmp的,最开始阶段u-boot是没有图片解码的。 将一个图片制作成8位bmp的格式,例如logo.bmp。 1、在板级头文件中加入配置选项 //支持B

君莫笑 3932

全志T113-i评估板开发实战与异构核通信解析

嵌入式开发中,异构计算架构通过整合不同特性的处理器核(如ARM Cortex-A7与RISC-V)实现性能与能效的平衡。全志T113-i芯片采用双核A7+RISC-V协处理器+HiFi4 DSP的异构设计,支持Linux系统与实时任务并行处理。评估板提供丰富接口(USB/以太网/GPIO等),适合工业控制、智能语音等场景。开发时需注意工具链环境隔离、设备树配置及核间通信机制(如共享内存+RPMsg)。通过合理分配ARM核与RISC-V核的任务负载,可显著提升边缘计算设备的实时性,满足工业HMI、语音终端等应

weixin_34380948的博客 490

U-Boot显示Logo的方式编程

首先,使用load_logo函数将Logo图像文件加载到内存中,然后使用show_logo函数将图像数据显示在屏幕上。需要注意的是,具体的函数调用和数据结构可能会因U-Boot版本和硬件平台而有所不同,因此在实际应用中可能需要根据具体情况进行适当的调整和修改。然后,通过video_get_fb_addr函数获取帧缓冲区的地址,并使用嵌套循环将Logo图像的像素值逐个写入帧缓冲区中。上述代码中,load_logo函数接受Logo图像文件的文件名作为输入,并返回Logo图像数据的地址、宽度和高度。

DevRevolt的博客 608

全志uboot修改_uboot修改启动logo-sunxi

时间:2018-02-10题记:关于uboot启动logo修改背景:由于项目一部分的需要,需要在系统前期开机阶段就要显示logo,我使用的是全志T3开发板,uboot也是其相应的SDK,于是开始了这修改logo的尝试。说明:最为初始的SDK的uboot是有启动logo的,也就是全志V40这个logo,但是这个logo的启动方式是:将logo放在一个uboot分区中,然后再启动的时候使用fat文件系...

weixin_39880621的博客 1483

WIFI信号状态信息 CSI 特征提取篇之活动片段提取(五)

本环节是特征提取环节,起承上启下的作用:对上,应着数据处理完毕的信号,但是还不能直接进行分析,因为此时信号片段过长,对于活动识别而言,存在非许多目标片段(例如失败不规范的动作、休息间歇等);对下,具体采取何种活动片段提取策略,需要配合后续采取的活动识别算法进行(深度学习/机器学习,CNN/RNN/LSTM等等),不同的算法适配不同的数据形式,例如CNN一般用于识图,不需要关注时间顺序,LSTM则要求保留时间关系等等,所以本博客后续仅介绍几种分类思路。

Silver_777的博客 4537

基于荔枝派实现uboot到系统应用启动过程不间断logo显示

效果显示 [] 配上视频 原理说明 无论使用哪种芯片, 要实现uboot到系统应用启动过程不间断logo显示, 整个启动过程大概如下: uboot启动 初始化显示屏驱动(这里确定好framebuffer地址) 从mmc(sd卡)读取bmp图片进行显示 打开背光 内核启动 加载显示屏驱动, 取消初始化lcd控制器(时钟等配置), 使用uboot配置好的寄存器; 使用与uboot相同的frame...

小飞的博客 6212

如何快速学习 PHP 编程:从入门到实战的高效路径

PHP高效学习路线摘要:4-8周掌握Web开发核心技能。阶段1(1周)搭建XAMPP/MAMP环境,掌握基础语法和变量处理;阶段2(2周)重点学习表单处理、会话管理和PDO数据库操作(防SQL注入);阶段3(2-3周)实战开发个人博客等小项目。关键原则:边学边练(每个知识点配3-5个案例)、优先掌握Web刚需技能(HTTP请求、数据库、动态页面)、善用官方手册。避坑点:密码必须加密、SQL使用预处理、统一UTF-8编码。建议每天2-3小时实操,通过项目驱动学习,快速形成开发能力。

2501_94233638的博客 1387

开源浏览器插件开发实战:从零搭建多平台内容分发工具

浏览器扩展(Browser Extension)是运行在浏览器上层、通过标准Web技术增强浏览器能力的轻量级程序,其核心价值在于对页面内容的读取、操作与跨应用信息流转。在内容创作与分发场景中,创作者频繁需要在公众号、知乎、优快云、头条等平台间搬运同一篇文章,而传统SaaS分发工具往往受限于免费额度、授权托管和平台适配滞后等问题。基于Manifest V3规范,开发者可以构建一款100%开源、永久免费的浏览器插件,利用content script完成从源文章页提取标题、正文与图片,通过消息通信机制将结构化数

weixin_29882269的博客 295

Tina Linux如何enable开机LOGO

想要在Tina Linux开机的时候显示开机LOGO,我们需要进行如下几步工作:下面我们来依次看一下每一步都如何具体操作:在Tina-SDK中,Uboot的设备树文件在中,在其中添加对应的节点: 首先切换到目录中,编辑配置文件,在其中加入如下配置: 3. 在boot-resource分区中添加对应启动LOGO 这里有多个目录都可以放置启动LOGO: 其中越靠后的目录会覆盖之前的启动LOGO,所以我们建议把对应的板子的bootlogo都放在下,命名必须是,这是在Uboot源码中写死的。在Uboot目录中运行:

hn2zzzz1996的博客 982

[Dify实战] Bug 自动归因与复现指南生成器-带绑定资源

摘要: 本文介绍如何利用Dify构建"Bug自动归因与复现指南生成器",解决研发测试中的常见痛点。该系统可自动解析Bug信息,结构化输出复现步骤、可能原因、修复建议和回归测试点,显著提升问题处理效率。文章详细阐述了方案流程、Prompt设计要点、输出模板及落地清单,并提供了RCA分析模板和标准复现步骤示例。通过统一Bug描述模板和自动化分析,该系统能有效降低人力成本,加速问题闭环,适用于持续迭代的中大型项目。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 294

嵌入式LOGO设计指南:从PS制作到uboot集成的全流程优化

本文详细解析嵌入式LOGO设计从PS制作到uboot集成的全流程优化方案,涵盖色彩深度选择、BMP格式处理、Makefile配置及全志V3s硬件加速等关键技术。通过实战案例展示如何提升启动速度40%并减少内存占用,为开发者提供高效的嵌入式LOGO设计指南。

tensor9flow的博客 187

【制作100个unity游戏之30】使用unity实现一款2d俯视角RPG战斗游戏,主要使用InputSystem+有限状态机+A*寻路实现(完结,附带项目源码)

【制作100个unity游戏之30】使用unity实现一款2d俯视角RPG战斗游戏,主要使用InputSystem+有限状态机+A*寻路实现

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 4653

innovus:InstPad、CellPad 、module padding、clock cell halo

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?site_num指的是padding的大小以site宽度为单位。

m0_61544122的博客 2026

T113 logo g2d 旋转

T113 logo g2d 旋转

CATTLE_L的博客 434

YOLO26科研升级:OREPA在线重参数化,让模型精度在训练中持续跃升

在目录下,新建AddModules文件夹,将orepa.py放入其中。

LXY_LOVE36的博客 98

TINA 5.0 更换开机动画并且修改旋转方向

源码在:brandy/brandy-2.0/u-boot-2018/drivers/video/sunxi/logo_display/cmd_sunxi_bmp.c。参照下面这个链接即可,找到对应target的xxx-common里面的boot-resource直接更换里面的图片即可。编译:mboot编译Uboot,或者直接make也行,会检查并编译Uboot,烧录既可以看到开机logo了。Uboot logo在内核启动的过程中会延续显示,所以只需要在显示开始的时候旋转一次即可。1. 开机logo更换。

weixin_56256913的博客 37

ardupilot开发 --- mavlink签名加密 篇

ardupilot开发 --- mavlink签名加密

记录老板的每次pua,分享领导每天的毒鸡汤... 1236

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

uboot之logo显示

一、logo的调用流程   |--&gt;board_init_r: &lt; board.c&gt;          |--&gt; stdio_init: &lt;common/stdio.c&gt;                 |--&gt; drv_lcd_init:&lt;common/lcd.c&gt;                       |--&gt; lcd...

destiny的专栏 7503

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

uboot LCD驱动修改和启动logo修改

uboot LCD驱动修改和启动logo修改

qq_24330911的博客 5738

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Uboot下增加启动LOGO图

在Tina-SDK uboot下,如果增加 logo图片,则需要准备一个 和屏幕分辨率大小类似 或者比他小的BMP图片。我们已知 7寸RGB屏幕的分辨率是1024 x 600 ,那么就需要先找到一张 小于或等于 1024 x 600 的图(为了加快显示,尽量准备小于500k的图,图片会自动等比例居中显示)。如下 我准备了 一张 分辨率 尺寸 为 782x276 分辨率的图,那么我需要先调整图片尺寸大小,再进行转换。

韦东山嵌入式专栏 1222

uboot里开机LOGO显示功能解析

uboot里开机LOGO显示功能解析   开机LOGO,对于绝大多数带显示屏的电子产品都是必备的一个功能,是产品开机的第一印象,重要性不言而喻的,那我们下面就看看这个是怎么实现的。   要尽早的显示出LOGO就需要在系统真正起来之前的boot阶段就能打通显示,而这个任务大多是以U-BOOT这样的角色来充当,全志平台在android4.4平台就是在u-boot里面实现的,支持的是BMP图片。大家分为

Edsam--活到老学到老,掌握核心技术,做好产品服务! 6370

全志Tina Linux Display 开发指南支持百问网T113 D1-H哪吒DongshanPI-D1s V853-Pro等开发板

让显示应用开发人员了解显示驱动的接口及使用流程,快速上手,进行开发;让新人接手工作时能快速地了解驱动接口,进行调试排查问题。sunxi 平台DE1.0/DE2.0。与显示相关的应用开发人员,及与显示相关的其他模块的开发人员,以及新人。图2-1: 模块框图本模块框图如上,由显示引擎(DE)和各类型控制器(tcon)组成。输入图层(layers)在DE中进行显示相关处理后,通过一种或多种接口输出到显示设备上显示,以达到将众多应用渲染的图层合成后在显示器呈现给用户观看的作用。

韦东山嵌入式专栏 2925

全志A33 修改brandy目录中build.sh文件,将原有uboot打包到img文件中

一、brandy路径下build.sh文件 原有的全志开发包中,已经将u-boot封装好,所以在实际使用的过程,不会涉及u-boot的编译,细心观察就会发现上次的brandy目录中执行build.sh文件中的 PLATFORM="sun8iw3p1" 而不是 PLATFORM="sun8iw5p1" 因为编译好u-boot后不需要再将u-boot打包了,所以修改为其他平台,在编译完成时就不会复制到打包路径下。 二、dragonboard路径build.sh文件分析 在实际开发中,dragonboard目

u010584870的博客 2124
上一篇: 关于ffmpeg解码内存增加解决方案-替换解码代码
下一篇: Linux下 修改访问uboot环境变量分区内容
Chasing_Chasing
博客等级 码龄10年 233粉丝 87原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值