高通的编译烧写流程

脚本来自:pds/sh/turbox/tools/build_script/common/turbox_build.sh at master · sghong/pds · GitHub

唉,最后还是来看这个,这次就好好总结一下吧。。以最常用的QFIL的FLAT包为例。

从脚本可以看出模块的划分

build_all(){

build_bl

build_uefi

build_rpm

build_aop

build_tz

build_adsp

build_cdsp

build_mpss

build_slpi

build_hlos

update_common_info

}

1 HLOS

source build/envsetup.sh

lunch qssi-userdebug

bash build.sh -j32 dist --qssi_only EXPERIMENTAL_USE_OPENJDK9=1.8

source build/envsetup.sh

lunch <target>-userdebug

bash build.sh -j8 dist --target_only EXPERIMENTAL_USE_OPENJDK9=1.8

这一步可以生成boot.img, system.img, userdata.img

如果是安装好的设备,可以使用fastboot刷写。

复制代码
# 烧录 boot.img
fastboot flash boot out/target/product/DEVICE/boot.img

# 烧录 system.img
fastboot flash system out/target/product/DEVICE/system.img

# 烧录 userdata.img
fastboot flash userdata out/target/product/DEVICE/userdata.img

# 烧录 recovery.img (可选)
fastboot flash recovery out/target/product/DEVICE/recovery.img

2 非HLOS

MPSS

Build images -- ./build_variant.py divar.gen.prod bparams=-k

Clean the build -- ./build_variant.py divar.gen.prod --clean

烧写

复制代码
fastboot flash modem modem.mbn

Bootloader

Trustzone

RPM

aDSP

cDSP

WLAN

video

3 分区

这个要单独制作一个partition.xml,这个好像是专供高通平台用的。

复制代码
<?xml version="1.0" encoding="UTF-8" ?>
<data>
    <partition>
        <label>boot</label>
        <filename>boot.img</filename>
        <physical_partition_number>0</physical_partition_number>
        <start_sector>32768</start_sector>
        <size_in_KB>8192</size_in_KB>
    </partition>
    <partition>
        <label>modem</label>
        <filename>modem.mbn</filename>
        <physical_partition_number>0</physical_partition_number>
        <start_sector>65536</start_sector>
        <size_in_KB>16384</size_in_KB>
    </partition>
    <!-- 更多分区定义 -->
</data>

4 打包

将所有文件放在一个文件夹,如下:

复制代码
/flat_install_package/
  ├── boot.img
  ├── emmc_appsboot.mbn
  ├── modem.mbn
  ├── rpm.mbn
  ├── tz.mbn
  ├── sbl1.mbn
  ├── system.img
  ├── userdata.img
  ├── partition.xml   # 分区表描述文件 (QFIL 等工具需要的文件)

之后直接使用zip压缩即可。

5 烧写

烧写的时候选中分区xml文件。

相关推荐
潘潘的嵌入式日记11 小时前
改完Keil工程文件被缓存覆盖?——uvprojx编辑的进阶四坑
xml·嵌入式·keil·调试·mdk·工程文件
ICECREAM15 小时前
嵌入式 —— 串口与 UART 深入详解 —— i.MX6ULL 实战
嵌入式
浅止菌20 小时前
嵌入式Linux内存优化:从OOM到稳定运行的6个实战技巧
嵌入式
大辉狼_音频架构20 小时前
Vol.05 VendorHAL-NXP
嵌入式·音视频开发
声讯电子21 小时前
AU-60 VS A-59F 语音模组完整对比(研发选型专用)
嵌入式·ai降噪·回声消除·语音模组
Highcharts21 小时前
用 Highcharts 构建交互式 ICU 实时生命体征监护仪表盘
嵌入式·数据可视化
左手厨刀右手茼蒿4 天前
PCIe设备驱动开发:从枚举到DMA传输的完整链路
linux·嵌入式·系统内核
济6174 天前
I.MX6U Linux 驱动开发篇---零基础必看!中断实验(按键中断 + 定时器消抖 + 设备树配置实战教程)--- Ubuntu20.04
linux·驱动开发·嵌入式·嵌入式linux驱动开发
凉、介4 天前
Linux 设备驱动匹配机制
linux·笔记·单片机·学习·操作系统·嵌入式
凉、介5 天前
Virtio 系列(一):框架概览
笔记·学习·嵌入式·虚拟化·virtio