qualcomm导出分区之(UFS篇)

1.前言

这篇关于emmc存储dump flash的blog(高通QFIL 导出所有分区_blank_gpt-CSDN博客)的方法不知道大家是不是都没遇到过问题,前阵我个人在实践UFS 时就遇到UFS直接用QFIL读取不了总blocks数,导致回读flash的大小没办法确定,然后就去查了高通文档,最后实操成功,中间遇到了些小问题,记录下来供大家参考。

2.环境配置

1. 提下QPST的关键文件及目录 C:\Program Files (x86)\Qualcomm\QPST\bin

2. 在此路径下因为没有直接权限创建port_trace.txt文件,这个也是一个关键步骤,需要手动创建一个空文件之后copy到该路径下,此步骤即需要admin权限来copy.

3.获取总blocks数

admin权限下 cd C:\Program Files (x86)\Qualcomm\QPST\bin​, 按照高通文档的介绍,这叫Load device programmer to the IMEM of CPU​.

QSaharaServer.exe -u 3 -s 13:C:\your\prog_firehose_ddr.elf

-u 3 此处的3是9008对应的端口号,大家自行按照实际情况来配,

13 此处暂不确定是什么协议的代号,后面的路径直接就是firehose协议bin的实际路径

给一个执行成功的例子,便于参考
C:\Program Files (x86)\Qualcomm\QPST\bin>QSaharaServer.exe -u 3 -s 13:C:C:\Users\admin\Downloads\test\prog_firehose_ddr.elf
Binary build date: Jun 25 2019 @ 03:16:15
QSAHARASERVER CALLED LIKE THIS: 'QSaharaServer.ex'Current working dir: C:\Program Files (x86)\Qualcomm\QPST\bin
Sahara mappings:
2: amss.mbn
6: apps.mbn
8: dsp1.mbn
10: dbl.mbn
11: osbl.mbn
12: dsp2.mbn
16: efs1.mbn
17: efs2.mbn
20: efs3.mbn
21: sbl1.mbn
22: sbl2.mbn
23: rpm.mbn
25: tz.mbn
28: dsp3.mbn
29: acdb.mbn
30: wdt.mbn
31: mba.mbn
13: C:\Users\admin\Downloads\test\prog_firehose_ddr.elf19:33:43: Requested ID 13, file: "C:\Users\admin\Downloads\test\prog_firehose_ddr.elf"19:33:43: 683028 bytes transferred in 0.156000 seconds (4.1756MBps)19:33:43: File transferred successfully19:33:43: Sahara protocol completed

关键的读取storageinfo的命令​,当然,大家执行这条命令能获取很多UFS flash的信息,这边就不一一放上来占用篇幅了

fh_loader.exe --port=\\.\COM3 --getstorageinfo=0 --memoryname=UFS --noprompt

由此,我们在log中就拿到了 total_blocks":14024704

{"storage_info": {"total_blocks":14024704, "block_size":4096, "page_size":4096, "num_physical":6, "manufacturer_id":462, "serial_num":1297306958, "fw_version":"100","mem_type":"UFS","prod_name":"KM5P9001DM-B424"}}'

4.UFS导出实例

拿到上面的storageInfo,那我们最重要的一步也算是完成了,那么接下来就是回读xml配置的制作了,这里我们也没有用之前的方式读取,而是用高通文档直接调用fh_load来读

注意的细节

  • UFS的sector是按4096KB作为一个sector,所以

num_partition_sectors 是14024704, size_in_KB= 14024704 x 4K = 56098816

<?xml version="1.0" ?>
<data>
<read SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="partition.bin" label="entire_partition" num_partition_sectors="14024704" partofsingleimage="true" physical_partition_number="0" readbackverify="false" size_in_KB="56098816" sparse="false" start_byte_hex="0." start_sector="0"/>
</data>
  • 最关键的回读命令
fh_loader.exe --port=\\.\COM5 --sendxml=lun0.xml --search_path=C:\your\xml\path --convertprogram2read ----memoryname=UFS --noprompt --showpercentagecomplete

接着就是静静的等待在C:\Program Files (x86)\Qualcomm\QPST\bin下生成的partitions.bin.

5. 潜在已知问题

大家如果在执行每一步命令的过程中,遇到什么问题,欢迎留言交流,按照上述步骤其实已经可以逃避一些坑了,比如以admin的权限运行和提前创建port_trace.txt之类的。

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

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

相关文章

SAP BAS开发Fiori项目中的各种文件详解(manifest.json, package.json, ui5.yaml, i18n等)

1. 背景 在SAP BAS中新建好一个Fiori项目后&#xff0c;系统会自动生成一系列的文件&#xff0c;例如package.json, ui5.yaml, manifest.json, i18n等。对于不熟悉web应用程序开发的同学&#xff0c;这些文件理解起来会很困惑。 在这篇文章中&#xff0c;我会详细介绍这些文件…

Elasticsearch:将 ILM 管理的数据流迁移到数据流生命周期

警告&#xff1a;此功能处于技术预览阶段&#xff0c;可能会在未来版本中更改或删除。 Elastic 将努力解决任何问题&#xff0c;但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。目前的最新版本为 8.12。 在本教程中&#xff0c;我们将了解如何将现有数据流&#xff0…

系统架构设计师考试论文2020:论数据分片技术及其应用

数据分片就是按照一定的规则&#xff0c;将数据集划分成相互独立正交的数据子集。然后将数据子集分布到不同的节点上&#xff0c;通过设计合理的数据分片规则&#xff0c;可将系统中的数据分布在不同的物理数据库中&#xff0c;达到提升应用系统数据处理速度的目的。 请围绕“论…

Replidec:使用朴素贝叶斯分类器从宏基因组数据中识别病毒生命周期

Replidec - Use naive Bayes classifier to identify virus lifecycle from metagenomics data | bioRxivReplidec - Use naive Bayes classifier to identify virus lifecycle from metagenomics data | bioRxiv 安装 docker pull denglab/replidec 使用 for i in *_vOT…

协同过滤前置条件

一、前置知识 什么是集体智慧 集体智慧是一种共享或群体的智能&#xff0c;它通过结合多个人的知识、数据、技能和智力&#xff0c;协同解决社会问题。在移动互联网时代&#xff0c;集体智慧在Web应用中发挥着重要作用&#xff0c;表现为群体决策、众包、在线知识社区等多种形…

【算法】小强爱数学(迭代公式+数论取模)

文章目录 1. 问题2. 输入3. 输出4. 示例5. 分析6. 思路7. 数论&#xff0c;取模相关公式8. 数论&#xff0c;同余定理9. 代码 1. 问题 小强发现当已知 x y B xyB xyB以及 x y A xyA xyA时,能很轻易的算出 x n x_ {n} xn​ y n y_ {n} yn​ 的值.但小强想请你在已知A和B的…

编程生活day1--个位数统计、考试座位号、A-B、计算阶乘和

个位数统计 题目描述&#xff1a; 定一个 k 位整数 Ndk−1​10k−1⋯d1​101d0​ (0≤di​≤9, i0,⋯,k−1, dk−1​>0)&#xff0c;请编写程序统计每种不同的个位数字出现的次数。例如&#xff1a;给定 N100311&#xff0c;则有 2 个 0&#xff0c;3 个 1&#xff0c;和 …

NAA参数放到哪个数据结构中,有什么作用

在eUICC配置文件包中&#xff0c;NAA&#xff08;Network Access Application&#xff09;参数通常放置在特定的ProfileElement中&#xff0c;这个ProfileElement被称为PE-AKAParameter或PE-CDMAParameter&#xff0c;具体取决于所使用的认证算法类型。这些参数对于设置和配置N…

当贝的操作系统

当贝盒子是什么&#xff1f; 当贝盒子&#xff08;Dangbei Box&#xff09;是一款基于 Android 系统定制的智能电视盒子&#xff0c;主要用于连接到电视上&#xff0c;提供丰富的视频、音乐、游戏等娱乐内容。当贝盒子通常配备了强大的硬件性能和定制的用户界面&#xff0c;以更…

Linux线程补充之——同步

一、Linux线程同步 ​ 同步是相对于竞争的概念&#xff1b; ​ 同步就是在保证安全的前提下啊&#xff0c;按照一定的顺序访问临界资源&#xff1b; ​ 所有的资源一定是先访问的临界资源&#xff0c;申请失败然后才进行排队的&#xff1b;互斥锁保证的是来访问的进程只允许…

《边缘计算:连接未来的智慧之桥》

随着物联网、5G等技术的快速发展&#xff0c;边缘计算作为一种新兴的计算模式&#xff0c;正逐渐引起人们的广泛关注。边缘计算通过将数据处理和存储功能放置在距离数据产生源头更近的位置&#xff0c;实现了更快速、更可靠的数据处理和交换&#xff0c;为各行各业带来了前所未…

jasmine学习(二)--API

jasmine基本结构&#xff1a; describe(当前测试标题/描述 , ()>{let num &#xff1a; number;beforeEach(()>{// 这个是在每个it之前执行的num 0;num 1;});afterEach(()>{// 每个it之后执行的num 0;});it(该测试用例要测试的内容文本描述, ()>{expect(true).t…

【项目设计】基于MVC的负载均衡式的在线OJ

项目代码&#xff08;可直接下载运行&#xff09; 一、项目的相关背景 学习编程的小伙伴&#xff0c;大家对力扣、牛客或其他在线编程的网站一定都不陌生&#xff0c;这些编程网站除了提供了在线编程&#xff0c;还有其他的一些功能。我们这个项目只是做出能够在线编程的功能。…

详解JavaScript中this指向

this 原理 this 是一个指针型变量&#xff0c;它指向当前函数的运行环境。 1.内存的数据结构 var obj { foo: 5 };2.函数 var obj { foo: function () {} };引擎会将函数单独保存在内存中&#xff0c;然后再将函数的地址赋值给foo属性的value属性。 由于函数是一个单独的…

代码随想录day28(1)二叉树:二叉搜索树中的插入操作(leetcode701)

题目要求&#xff1a;给定二叉搜索树&#xff08;BST&#xff09;的根节点和要插入树中的值&#xff0c;将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据保证&#xff0c;新值和原始二叉搜索树中的任意节点值都不同。 思路&#xff1a;对于二叉搜索树来说&…

【深度解析算法】散列表 上

8 散列表 如果所有的键都是小整数&#xff0c;我们可以用一个数组来实现无序的符号表&#xff0c;将键作为数组的索引而数组中键i处储存的就是它对应的值。这样我们就可以快速访问任意键的值。在本节中我们将要学习散列表。它是这种简易方法的扩展并能够处理更加复杂的类型的键…

常见技术难点及方案

1. 分布式锁 1.1 难点 1.1.1 锁延期 同一时间内不允许多个客户端同时获得锁&#xff1b; 1.1.2 防止死锁 需要确保在任何故障场景下&#xff0c;都不会出现死锁&#xff1b; 1.2.3 可重入 特殊的锁机制&#xff0c;它允许同一个线程多次获取同一个锁而不会被阻塞。 1.2…

Web前端Html的表单

表单的关键字&#xff1a; form标签表示一个表单区域 action“后端地址” method“提交数据方式:get/post” input 单行输入框 type“text” 文本 name“定义名称 名字自定义” 向后端提交的键 readonly“readonly” 只读&#xff0c;不可修改&#xff0c;但是可以提交 disab…

C语言学习-day22-函数递归1

程序调用自身的编程技巧被称为递归。举个例子&#xff1a; int main() { printf("hehe\n"); main(); return 0; } 比如这种&#xff0c;自己调用自己后每次都打印一个hehe。 递归的核心思考方式在于&#xff1a;大事化小。 做个练习&#xff1a;接收一个整型值&a…

鸿蒙Harmony应用开发—ArkTS-类型定义

说明&#xff1a; 本模块首批接口从API version 7开始支持&#xff0c;后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 Resource 资源引用类型&#xff0c;用于设置组件属性的值。 可以通过$r或者$rawfile创建Resource类型对象&#xff0c;不可以修改Res…