Android Qcom Display学习(十四)

news2024/12/23 9:29:56

该系列文章总目录链接与各部分简介: Android Qcom Display学习(零)
本章主要就是学习一下开机logo和开机动画是怎么加载,客制化修改的。

Bootlogo

QcomChargerApp.c 
QcomChargerApp_MonitorCharging
    QcomChargerAppDisplay_DispBattSymbol(DispImageType, TRUE);
QcomChargerApp_PostProcessing
	Status |= gBS->LocateProtocol( &gQcomDisplayUtilsProtocolGuid, NULL, (VOID **)&pDisplayUtilsProtocol);
	Status |= pDisplayUtilsProtocol->DisplayUtilsRenderLogo(&RenderLogoCfg);


DisplayUtils.c
Display_Utils_RenderLogo
	Display_Utils_RenderSplashScreen
	//1. from main fv ( GetFileSize)
		Status = Display_Utils_LoadFile("logo_720x1280.bmp", &BGRTAddress, &BGRTBufferSize, &ImageSize);
	//2. from Image fv (LoadFileFromGuidedFv)
	     MDP_Display_GetVariable_Integer(DISPVAR_ENABLE_DISPLAY_IMAGEFV, &uImageFvSetting);
		 uFlags = DISP_LOAD_FILE_FLAG_IMAGEFV;
         pLogoFileName = "logo_720x1280.bmp";
		 Display_Utils_LoadFile(pLogoFileName, &BGRTAddress, &BGRTBufferSize, &ImageSize, uFlags);

不同的平台上实现不一样,默认是load mainfv,有些是支持imagefv,如果支持多个项目不同的开机的logo,在main fv中添加会导致大小增大并延长启动时间,此时就可放入imagefv中,默认支持可以看路径(boot_images/boot/QcomPkg/Docs/CustomSplashLogo.txt),
有些平台是默认是不支持的,添加loadimagefv(ImageFv.txt)的代码也无法实现从imagefv中获取图片,返回的一直是(RETURN_NOT_FOUND),问高通说有些分支在UEFI Core中没有合入关键代码, 所以要实现得向高通申请patch。

main fv

boot_images/QcomPkg/SocPkg/KamortaPkg/LAA/uefiplat.cfg
0x5FC00000, 0x00300000, "UEFI FD",           AddMem, SYS_MEM, SYS_MEM_CAP, BsData, WRITE_BACK

UEFI FD最大的size为0x00300000 = 3MB

boot_images/QcomPkg/SocPkg/KamortaPkg/LAA/Core.fdf

[FD.Kamorta_EFI]
BaseAddress   = 0x5FC00000|gEmbeddedTokenSpaceGuid.PcdEmbeddedFdBaseAddress  #The base address of the FLASH Device.
Size          = 0x002B2E00|gEmbeddedTokenSpaceGuid.PcdEmbeddedFdSize         #The size in bytes of the FLASH Device
ErasePolarity = 1
BlockSize     = 0x200
NumBlocks     = 0x1597

# 512 bytes of configuration header & 8 bytes of image header
0x00000000|0x002B2E00

FILE FREEFORM = 8cfbb887-c16f-4859-a897-539a723c77d6 {
    SECTION UI = "logo_720x1280.bmp"
    SECTION RAW = QcomPkg/Logo/LA/logo_720x1280.bmp
}

<partition label="xbl_a" size_in_kb="3604" type="DEA0BA2C-CBDD-4805-B4F9-F428251C3E98"
uniqueguid="A54CD18E-48E6-11EB-A809-4B8A186A3B98" bootable="false" readonly="true" filename="xbl.elf"/>

当前UEFI FD的size为0x002B2E00,需确保要小于cfg中定义的大小3MB,若需增加则NumBlocks也需要增加(Size/BlockSize)

imagefv

boot_images/boot/QcomPkg/SocPkg/Kodiak/Common/uefiplat.cfg

0x9C700000, 0x03100000, "DXE Heap",          AddMem, SYS_MEM, SYS_MEM_CAP, Conv,   WRITE_BACK_XN

ImageFv的内存通过DXE堆动态分配,ImageFv的增量取决与可用的空闲空间

EnableDisplayImageFv = 0x1

boot_images/boot/QcomPkg/SocPkg/Kodiak/LAA/ImageFv.fdf.inc

FILE FREEFORM = 9dc745c1-2c8d-43fd-8956-c18de6511b97 {
    SECTION UI = "logo_720x1280.bmp"
    SECTION RAW = QcomPkg/Logo/LA/logo_720x1280.bmp
}

[FV.IMAGEFV_COMPACT]
BlockSize          = 0x1000
NumBlocks          = 0x5

<partition label="imagefv_b" size_in_kb="2048" type="77036CD4-03D5-42BB-8ED1-37E5A88BAA34" 
uniqueguid="CD55DD56-48E6-11EB-B48F-4F6E1099088C" bootable="false" readonly="false" system="true" filename=""/>

增加ImageFV的size大小,则增大NumBlocks的大小,需保证小于cfg中的DXE Heap定义的大小以及分区大小
必要的可能还需要更改分区表partition.xml,需要通过qfil刷入,如果是release的产品是无法通过OTA的方式去改分区的

Animation

frameworks/base/cmds/bootanimation/BootAnimation.cpp,制作bootanimation需要注意一下几点

(1)desc.txt最后一行必须回车
   1280 720 5    宽        高       帧率
   p 1 0 part0  标识符  重复次数  两次显示间隔
   p 0 0 part1  p:会被中断 c:等待动画完成 0:循环 1:重复一次
  
(2)直接将part0 part1 desc.txt进行打包,不要在外层打包
(3)打包的格式一定要注意(仅存储),不然就会出现,bootanimation.zip is compressed; must be only stored

12

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/568533.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SARscape连接图编辑(ConnectGraph)

SARscape连接图编辑ConnectGraph 0 连接图是什么1 什么时候需要编辑连接图2 连接图编辑步骤 0 连接图是什么 连接图ConnectGraph就是差分干涉数据对的关系图。 在SARscape中进行干涉叠加Interferometric Stacking处理&#xff0c;常见的包括PS和SBAS。 首先就要根据数据的空间…

美团小组长薪资被应届生员工倒挂7K,不把老员工当人?

一位美团的小管理爆出&#xff0c;无意中看到了整个部门薪资&#xff0c;本以为自己算比较高的&#xff0c;但看完之后整个人都傻眼了。小组长的职位月薪28K&#xff0c;而手下组员却是35K&#xff0c;当天晚上抽了一包烟也没想明白是为什么。 楼主表示&#xff0c;自己是美团的…

git提交分支

1. git提交分支相关 在本地新建分支&#xff0c;保证和远程分支一样 git checkout -b 分支名如果分支已存在&#xff0c;只需要切换的话 git checkout 分支名提交前先把代码拉下来更新一下&#xff0c;确保不会覆盖别人的代码 git pull origin 远程分支(如果有)解决冲突 g…

低代码平台名声臭,用起来却真香——90%重复工作给你完成喽

一、前言 开发过程中&#xff0c;只是觉得前端后端合起来&#xff0c;有很多冗余信息&#xff0c;被代码一遍遍重复表达&#xff0c;是一件很枯燥、无聊的事情。 这些枯燥的重复工作&#xff0c;完全可以由机器来做&#xff0c;以便解放出我们的时间&#xff0c;来做更有价值的…

智慧班牌源码源,SaaS云平台端、智慧校园管理平台端、家长/教师微信移动端、智慧班牌学生端

智慧电子班牌系统包括&#xff1a;SaaS云平台端、智慧校园管理平台端、家长/教师微信移动端、智慧班牌学生端四大软件平台。 文末获取联系&#xff01; 技术架构&#xff1a; 1、使用springboot框架Javavue2 2、数据库MySQL5.7 3、移动端小程序使用小程序原生语言开发 4、电子班…

xlsx是什么格式

xlsx是什么格式? xlsx是Excel文档的扩展名&#xff0c;其基于Office Open XML标准的压缩文件格式&#xff0c;取代了其以前专有的默认文件格式&#xff0c;在传统的文件名扩展名后面添加了字母x&#xff0c;即.xlsx取代.xls。 xlsx文件是什么格式? xlsx是Excel表格的文件格…

【Linux】-- 基础IO和动静态库

一、系统文件IO 1.文件与读写字符串 对于C文件接口&#xff0c;假如想向特定文件写入字符串&#xff1a; cFile.c #include<stdio.h>int main() {FILE * fp fopen("./log.txt","w");if(NULL fp){perror("fopen error");return 1;}int co…

CC1打不通时的另外一条链CC3

在CC1和CC6中&#xff0c;我们最终弹计算器都是通过Runtime.exec进行调用&#xff0c;从CC3我们要介绍一种不通过Runtime来弹计算器的方法&#xff0c;也就是Java中常提到的动态类加载&#xff0c;动态类加载可以让我们通过一个路径来加载一个恶意类&#xff0c;如果这个恶意类…

照片中对象识别模型YOLOv3在iOS项目中的浅析与使用

YOLOv3模型为苹果开发者官网提供的图形识别对象的CoreML模型&#xff0c;可识别80种对象&#xff0c;并给识别出的对象在图形中的位置和大小。 我们可以直接在官网下载该模型&#xff1a; 机器学习 - 模型 - Apple Developer 然后直接将模型拖入工程中&#xff08;使用的是x…

面试进阶齐飞!Github一天万赞的阿里Java系统性能优化有多牛?

前两天在知乎上看到一个问答&#xff0c;说的是&#xff1a; 一个Java程序员具备什么样的素质和能力才可以称得上高级工程师&#xff1f; 这个问题也引发了我的一些思考&#xff0c;可能很多人会说&#xff0c;“作为高级工程师&#xff0c;基础得过硬、得熟练掌握一门编程语…

信创办公–基于WPS的PPT最佳实践系列 (项目11 绘制流程图)

信创办公–基于WPS的PPT最佳实践系列 &#xff08;项目11 绘制流程图&#xff09; 目录 应用背景操作步骤1、流程图制作过程 应用背景 如果在smartart图形当中没有找到你所需要的图形&#xff0c;想要快速绘制&#xff0c;可以试试以下方法。 操作步骤 以图1为例&#xff0c…

AI智慧安防平台EasyCVR无法成功通过RTMP协议接入是什么原因?

EasyCVR视频融合平台基于云边端协同架构&#xff0c;具有强大的数据接入、处理及分发能力。平台可支持多协议、多类型的前端设备接入&#xff0c;包括市场主流标准协议与厂家私有协议及SDK&#xff0c;如&#xff1a;国标GB28181、RTMP、RTSP/Onvif、海康Ehome、海康SDK、宇视S…

AIGC和ChatGPT推进百度、阿里、腾讯、华为大模型技术创新

AIGC | PC集群 | PC Farm | GPU服务器 生成式AI | Stable Diffusion | ChatGPT 2022 年 12 月&#xff0c;OpenAI 推出了 ChatGPT&#xff0c;这是一种高性能计算的大型语言生成模型。它的出现推动了人机对话技术的发展&#xff0c;并在网络上引起了极大的关注。目前&#xff…

K-verse “韩流崛起”合作伙伴介紹

你们可以通过这次 K-verse LAND 销售活动认识许多品牌和 IP。更多详情见下文。 Netmarble Netmarble IP LAND 以全新方式来享受一系列以 Netmarble 的标志性 IP 为特色的内容&#xff01; Netmarble Corporation 于 2000 年在韩国成立&#xff0c;是全球最畅销手机游戏的领先…

【数据结构】顺序二叉树的实现—以堆的实现为例、堆的调整、堆的创建、堆的插入和删除、堆排序

文章目录 1.堆的概念及结构2.堆的实现&#xff08;以大堆为例&#xff09;2.1堆的插入2.1.1堆的向上调整算法 2.2堆的删除2.2.1堆的向下调整算法 2.3堆的创建2.4有关建堆的时间复杂度 3.堆排序4.C语言堆实现源码 1.堆的概念及结构 堆就是顺序结构二叉树。 如果有一个关键码的集…

操作系统第四章——文件管理(上)

凡所有相&#xff0c;皆是虚妄&#xff0c;若见诸相非相&#xff0c;即见如来 文章目录 4.1.1 初识文件管理前情回顾文件的属性文件内部的数据应该怎样组织起来&#xff1f;文件之间应该怎么样组织起来&#xff1f;操作系统应该向上提供那些功能&#xff1f;文件如何存放在外存…

JOSEF约瑟 JDZY-1440 DC110V 静态中间继电器 导轨安装 常用于电力系统

名称&#xff1a;中间继电器&#xff1b;型号&#xff1a;JDZY-1440&#xff1b;品牌&#xff1a;JOSEF约瑟&#xff1b;额定电压&#xff1a;24,48,110,220VDC/AC380VAC&#xff1b;触点容量&#xff1a;250VAC/5A&#xff1b;功率消耗&#xff1a;2W/3.5W&#xff1b;返回时间…

图数据库实践 - 如何将图数据库应用于身份与访问管理

导读 目前&#xff0c;随着云计算和大数据的快速发展&#xff0c;身份与访问管理&#xff08;Identity and Access Management&#xff0c;IAM&#xff09;系统变得比以往任何时候都更加重要。因为涉密信息可能在几分钟内就被破解&#xff0c;网络犯罪分子仅需要一个员工账号&…

【敬伟ps教程】蒙版和通道的基础知识

文章目录 通道通道面板 Alpha 通道通道和选区的关系编辑 Alpha通道原色通道的利用 图层蒙版编辑图层蒙版快速蒙版 通道 通道是图像文件的一种颜色数据信息存储形式&#xff0c;它与图像文件的颜色模式密切相关 多个分色通道(如图:红R、绿G、蓝B)叠加在一起可以组成一幅具有颜…

通过Python的PIL库给图片添加马赛克

文章目录 前言一、Pillow是什么&#xff1f;二、安装PIL库三、查看PIL库版本四、使用方法1.引入库2.定义图片路径3.打开需要打马赛克的图片4.获取图片尺寸5.创建一个新的图片对象6.定义块的宽高7.循环遍历图片中的每个块进行处理8.保存马赛克图片9.效果 总结 前言 大家好&#…