目录

导出为一个partition.bin的方案

导出所有分区的方案


导出为一个partition.bin的方案

通常QFIL下载的xml,我们使用高通提供的ptool工具(本人之前的文章中有提到)生成的rawprogram0_BLANK_GPT.xml可以派上用场,另外需要普及一个简单的概念

program 在高通的xml配置中表示下载;

read 表示读取.

<?xml version="1.0" ?>
<data><!--NOTE: This is an ** Autogenerated file **--><!--NOTE: This file writes a VALID but EMPTY partition table to sector 0 **--><!--NOTE: Sector size is 512bytes--><program SECTOR_SIZE_IN_BYTES="512" file_sector_offset="0" filename="gpt_empty0.bin" label="PrimaryGPT" num_partition_sectors="33" partofsingleimage="false" physical_partition_number="0" readbackverify="false" size_in_KB="16.5" sparse="false" start_byte_hex="0x0" start_sector="0"/>
</data>

我们想备份dump整个emmc的数据,下面几个点需要关注:

  1. emmc的总大小

关于flash的总大小,QFIL工具可以很容易的读取出,但是需要注意,机器切换至EDL模式后,先load一个和该设备对应的firmware的版本,然后

比如,当前我这边设备的总block数是0x747c000,16进制换算为10进制数为 122142720此处就代表整个flash的sectors扇区

而根据xml的配置

我们的num_partition_sectors = 122142720

单位 SECTOR_IN_BYTES为512Byte,所以,我们对应的flash总大小size_in_KB

(122142720 * 512)/1024 = 122142720/2 = 61071360KB

于是,我们最后得到的dump整个emmc为一个镜像的二进制文件配置

<?xml version="1.0" ?>
<data><!--NOTE: This is an ** Autogenerated file **--><!--NOTE: Sector size is 512bytes--><read SECTOR_SIZE_IN_BYTES="512" file_sector_offset="0" filename="partition.bin" label="PrimaryGPT" num_partition_sectors="122142720" physical_partition_number="0" size_in_KB="61071360.0" sparse="false" start_byte_hex="0x0" start_sector="0"/>
</data>

接下来主要是一样选择patch0.xml及漫长的等待读取过程.

2. 高通gpt分区表的格式和算法

SECTOR_SIZE_IN_BYTES="512"  每个扇区的字节数,flash的type为emmc一般是512,之前做过的的UFS项目为4096

filename="partition.bin" 分区的名称

num_partition_sectors="122142720"  分区的总扇区数

size_in_KB="61071360.0" 分区的实际大小,单位为KB

sparse="false" 是否以打散的方式read或program

start_byte_hex="0x0" 起始地址

start_sector 起始扇区

通常情况下,有分区表前提下,对于dump flash数据而言,基本需要计算的主要是sectors或者是实际的大小即可.

通常 下一分区的start_sector - 上一分区的start_sector = 上一分区的num_partition_sectors

导出所有分区的方案

对于所有分区导出,稍微比oneimage麻烦一些,

1. 需要原始的未被打散的rawprogram0.xml

2. 所有分区的filename都必须填充,只要是partition.xml里的分区,都要加上

A/B分区的填写相应的a/b 镜像,非A/B的直接bak镜像,总而言及就是filename 不能空.

3. 最重要的userdata大小的计算

方便说明,我上传了处理项目对应的计算举例,

  • 以sectors的计算如下:

读取的sectors数,从上面我们通过QFIL拿到了sector数为122142720

userdata的扇区数 为 122142720-33-21758464 = 100384223

<program SECTOR_SIZE_IN_BYTES="512" file_sector_offset="0" filename="userdata.img" label="userdata" num_partition_sectors="100384223" partofsingleimage="false" physical_partition_number="0" programbackverify="false" size_in_KB="50192112.0" sparse="false" start_byte_hex="0x298040000" start_sector="21758464"/><program SECTOR_SIZE_IN_BYTES="512" file_sector_offset="0" filename="gpt_main0.bin" label="PrimaryGPT" num_partition_sectors="34" partofsingleimage="true" physical_partition_number="0" programbackverify="false" size_in_KB="17.0" sparse="false" start_byte_hex="0x0" start_sector="0"/><program SECTOR_SIZE_IN_BYTES="512" file_sector_offset="0" filename="gpt_backup0.bin" label="BackupGPT" num_partition_sectors="33" partofsingleimage="true" physical_partition_number="0" programbackverify="false" size_in_KB="16.5" sparse="false" start_byte_hex="(512*NUM_DISK_SECTORS)-16896." start_sector="NUM_DISK_SECTORS-33."/>

size_in_KB = (100384351 * 512) / 2 = 50192111.5KB

  • 以读取partition方式计算:

adb shell

ls -al /dev/block/by-name/userdata

lrwxrwxrwx 1 root root 21 1970-01-01 08:41 /dev/block/by-name/userdata -> /dev/block/mmcblk0p87

cat /proc/partitions 查看对应blk的大小

cat /proc/partitions | grep mmcblk0p87

259       55   50192111 mmcblk0p87

50192111KB即是userdata对应size的大小.

发现了一个小问题,以sector计算的大小实际是50192111.5,但读取partition的值是50192111,最终填了50192111.5,然后导出的usserdata大小50192112KB.

高通QFIL 导出所有分区相关推荐

  1. [2018.10.25]高通QFIL刷机:高通sdm845_la2.0用QFIL软件meta_build和flat_build刷机

    [1 代码准备] (i)amss_standard_oem:高通源码 (ii)test_device:amss_standard_oem对应的二进制文件(高通已经编译) (iii)caf:高通源码对应 ...

  2. 高通 2290平台 新增分区

    本文用于说明高通2290平台新增分区信息. 新增分区 新增了两个分区:privdata1和privdata2,这两个分区刷入的镜像为编译系统释出的两个格式为sparse类型的镜像文件privdata1 ...

  3. 高通QFIL版本烧录过程

    QFIL 版本烧录: (1) 下载并安装QPST工具,安装成功后,安装列表内就可以看到 QFIL工具了: (2) 启动QFIL工具,界面如下: 烧录过程: (a)SelectPort 进行端口选择,一 ...

  4. 高通ar 导出android apk报错 Assets/Vuforia/Scripts/Utilities/VRIntegrationHelper.cs(99,29): error CS1061

    问题:(错误在VRIntegrationHelper.cs脚本中) error CS1061: Type UnityEngine.Camera' does not contain a definiti ...

  5. android加载efi分区,高通Android UEFI XBL 代码流程分析

    高通Android UEFI XBL 代码流程分析 背景 之前学习的lk阶段点亮LCD的流程算是比较经典,但是高通已经推出了很多种基于UEFI方案的启动架构. 所以需要对这块比较新的技术进行学习.在学 ...

  6. android 高通分区表,高通msm8994平台的NV到底是储存在哪个分区?

    网上有人说是Modemst1,modemst2,但是实际上这只是两个缓存分区,fsg是所谓的golden backup,我wipe掉这三个分区,开机用qpst依然能备份出来正常的NV,有没有真的做平台 ...

  7. twrp调整分区_让TWRP支持解密高通data分区

    现在新出品的手机,基本都加密了data分区,旨在保障用户数据的安全.其中高通方案的手机使用的加密方案是QSEE(高通安全执行环境,Qualcomm Security Executing Environ ...

  8. 高通 mtk 展讯等芯片机型读取 备份手机全字库分区 的一些操作解析

    这个工具结合mtkclient对软件修改了多机型支持,支持 高通 mtk 展讯等芯片的字库备份等其他多功能选项 通过个人实测图示展现以下软件的几个功能 1---安卓各选项简单说明 第一个安卓界面是读取 ...

  9. 高通机型刷机包的分区解析 了解分区基本常识

    目前国内机型大都常见的一般就是MTK与高通芯片.今天的帖子给友友梦简单说明下高通刷机包中一些分区的作用和说明.了解分区基本常识  有些分区只是个人对其的理解.可能不是那么贴切.请不要在意 NON-HL ...

  10. 又见高通板子flash分区问题。

    高通的4028芯片. 板子是:IPQ40xx/AP-DK01.1-C2 Uboot可能见到128Mflash linux系统只看到64M ,见下图的mtd8 看到uboot代码,bootipq命令的过 ...

最新文章

  1. .net数据控件的冒泡事件
  2. git push 如何同时推送至两个git仓库
  3. C#中在多个地方调用同一个触发器从而触发同一个自定义委托的事件
  4. 关于photoshop
  5. C++智能指针(一)智能指针的简单介绍
  6. Android Studio1.4.x JNI开发基础 - 简单实例
  7. 在输出终端中消除多余空格
  8. 【004】vim 和 他的辅助工具们
  9. SpringCloud创建Gateway模块
  10. android学习日记15--WebView(网络视图)
  11. 关于Java中的对象的哈希值何时相等
  12. 西南科技大学OJ题 图的按录入顺序深度优先搜索1068
  13. 苹果电脑系统重装 —— U盘操作
  14. 【论文阅读】MobileNet V2——MobileNetV2: Inverted Residuals and Linear Bottlenecks
  15. fiddler证书生成ca证书命令及抓包配置
  16. 常用python编程软件-现在编程软件有哪些?常用是哪一种?
  17. CAD中如何删除顽固图层?
  18. win7电脑最新版微信卡死问题的解决
  19. 删除 List 元素的几种方法
  20. 深入浅出工控机加固的那点事

热门文章

  1. cmd 文本文件分割_通过split命令分割大文件
  2. Dreamweaver文字或图片如何添加空链接代码
  3. c语言矩阵键盘反转法扫描,行列扫描法,反转法,状态机法三种矩阵键盘扫描方法详解 带程序...
  4. 使用Python防止SQL注入攻击
  5. windows自带黑体_window自带字体
  6. dex2jar 和 jd-gui 的安装与使用
  7. WPF 登录界面跳转代码
  8. LitePal数据的存储
  9. 利用JavaScript实现在网页上图片上一张下一张的操作
  10. win10管理员权限怎么获得_终于解决了:你需要来自XXX的权限才能对此文件进行更改