解决QCM6125 UEFI XBL开机Logo文件太大导致XBL编译失败的问题

报错如下

Generate Region at Offset 0x0

   Region Size = 0x200000

   Region Name = FV

Generating FVMAIN_COMPACT FV

###

Generating FVMAIN FV

#########

Generating IMAGEFV FV

Generating IMAGEFV_COMPACT FV

#Return Value = 2

GenFv: ERROR 3000: Invalid

  the required fv image size 0x32e8 exceeds the set fv image size 0x2000

在MSM8953 LK Bootloader中使用splash.img保存开机Logo,由于splash.img镜像使用压缩算法,所以即使是1920x1080 24bpp的开机Logo源文件转化为splash.img镜像也不会超过splsah分区大小。但是在QCM6125 UEFI XBl中,开机Logo只支持8-bit BMP 24-bit BMP 32-bit BMP 8-bit indexed BMP这四种格式,并且不支持压缩(参考boot_images/QcomPkg/Docs/CustomSplashLogo.txt),导致开机Logo源文件在比较大时会出现一些问题。如果对于颜色要求不高,可以使用8-bit BMP文件代替24/32-bit BMP,或者使用小尺寸的开机Logo代替大尺寸的开机Logo。如果这两种方法都无法满足要求的话,可以采用以下方案满足大尺寸开机Logo的需求

首先确定imagefv分区的大小

console:/ # ls /dev/block/by-name/imagefv_* -l

lrwxrwxrwx 1 root root 16 1970-01-01 08:32 /dev/block/by-name/imagefv_a -> /dev/block/sde18

lrwxrwxrwx 1 root root 16 1970-01-01 08:32 /dev/block/by-name/imagefv_b -> /dev/block/sde37

console:/ # cat /proc/partitions

major minor  #blocks  name

 259        2       2048 sde18

 259       21       2048 sde37

可见imagefv分区大小为2048K,所以当前imagefv.elf镜像大小不能超过2048K

boot_images/QcomPkg/SocPkg/NicobarPkg/LAA/ImageFv.fdf.inc

[FV.IMAGEFV_COMPACT]

BlockSize          = 0x200

NumBlocks          = 0x10

0x200 * 0x10 = 0x2000 = 8192 = 8K

生成的imagefv.elf镜像大小为20k(还包含其他logo文件)

修改为

[FV.IMAGEFV_COMPACT]

BlockSize          = 0x200

NumBlocks          = 0xF00

0x200 * 0xF00 = 0x1E 0000 = 1966080 = 1920K < 2048K

生成的imagefv.elf镜像大小为1978368=1932K(还包含其他logo文件)

此时开机Logo源文件可以支持更大的尺寸

如果此时开机Logo大小仍然不能满足要求,可以同时调整NumBlocks大小和imagefv分区大小

### 将Android系统移植到QCM6125平台 #### 准备工作 为了顺利进行移植操作,需先准备好开发环境。这包括但不限于安装特定版本的JDK(如1.8),以及安装包含gradle、sdk manager和avd manager在内的Android Studio (例如3.3.1)[^3]。 #### 获取源码及相关资源 对于高通平台上的Android 11(R)系统的编译过程涉及多个方面的工作流概述[^1]。针对具体芯片组如QCM6125,则需要访问官方文档和支持渠道来获取适用于该硬件的具体指导说明与必要的补丁集合。通常情况下,可以从Qualcomm开发者网站下载对应的BSP(Baseband Software Package)包和其他支持材料。 #### 修改内核配置 基于rk3566/rk3568的例子,在处理类似的任务时可能涉及到调整kernel设置以适应新的SoC特性。比如增加USB驱动的支持或是其他外设接口的相关改动[^4]。对于QCM6125而言,重点在于确保其特有的通信模块(如调制解调器)能够被正确识别并正常运作。 #### 编写Makefile及构建脚本 当目标是创建自定义的Linux Kernel Module(KM),则要熟悉`obj-m`变量的应用场景——它用于指定哪些文件会被编译成`.ko`形式加载入内存中作为独立于核心部分运行的服务程序[^5]。同样地,在为QCM6125定制化操作系统镜像的过程中也需要编写相应的规则集以便自动化完成整个组装流程。 #### 测试与调试阶段 最后但同样重要的是,利用Espresso框架下的测试库来进行功能验证是非常有帮助的做法之一[^2]。通过这种方式可以有效地捕捉潜在缺陷从而提高最终产品的质量水平。 ```bash # 示例命令行指令用于启动模拟设备上执行单元测试案例 adb shell am instrument -w -r \ -e debug false \ -e class com.example.MyTestClass \ androidx.test.runner.AndroidJUnitRunner ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值