qualcomm导出分区之(UFS篇)

2024-03-25 01:28
文章标签 导出 分区 qualcomm ufs

本文主要是介绍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之类的。

这篇关于qualcomm导出分区之(UFS篇)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/843436

相关文章

MySQL使用mysqldump导出数据

mysql mysqldump只导出表结构或只导出数据的实现方法 备份数据库: #mysqldump 数据库名 >数据库备份名 #mysqldump -A -u用户名 -p密码 数据库名>数据库备份名 #mysqldump -d -A --add-drop-table -uroot -p >xxx.sql 1.导出结构不导出数据 mysqldump --opt -d 数据库名 -u

一步一步将PlantUML类图导出为自定义格式的XMI文件

一步一步将PlantUML类图导出为自定义格式的XMI文件 说明: 首次发表日期:2024-09-08PlantUML官网: https://plantuml.com/zh/PlantUML命令行文档: https://plantuml.com/zh/command-line#6a26f548831e6a8cPlantUML XMI文档: https://plantuml.com/zh/xmi

SpringBoot中利用EasyExcel+aop实现一个通用Excel导出功能

一、结果展示 主要功能:可以根据前端传递的参数,导出指定列、指定行 1.1 案例一 前端页面 传递参数 {"excelName": "导出用户信息1725738666946","sheetName": "导出用户信息","fieldList": [{"fieldName": "userId","fieldDesc": "用户id"},{"fieldName": "age","fieldDe

F12抓包06-4:导出metersphere脚本

metersphere是一站式的开源持续测试平台,我们可以将浏览器请求导出为HAR文件,导入到metersphere,生成接口测试。 metersphere有2种导入入口(方式),导入结果不同:         1.导入到“接口定义”:自动生成接口API和单接口case(接口自动去重;每个请求生成不同case,重复的请求生成重复的case,名称自动加数字后缀,自动与接口关联)。

mysql导出导入数据和修改登录密码

导出表结构: mysqldump -uroot -ppassword -d dbname tablename>db.sql; 导出表数据: mysqldump -t dbname -uroot -ppassword > db.sql 导出表结构和数据(不加-d): mysqldump -uroot -ppassword dbname tablename > db.sql;

.Net Mvc-导出PDF-思路方案

效果图: 导语:     在我们做项目的过程中,经常会遇到一些服务性的需求,感到特别困扰,明明实用的价值不高,但是还是得实现;     因此小客在这里整理一下自己导出PDF的一些思路,供大家参考。     网上有很多导出PDF运用到的插件,大家也可以看看其他插件的使用,学习学习; 提要:     这里我使用的是-iTextSharp,供大家参考参考,借鉴方案,完善思路,补充自己,一起学习

.net MVC 导出Word--思路详解

序言:          一般在项目的开发过程中,总会接收到一个个需求,其中将数据转换成Work来下载,是一个很常见的需求;          那么,我们改如何处理这种需求,并输出实现呢?          在做的过程中,去思考 1、第一步:首先确认,Work的存在位置,并创建字符输出路:             //在的项目中创建一个存储work的文件夹             string

数据库系统 第41节 数据库分区简介

数据库分区是一种数据库设计技术,用于将大型表或索引的数据分布到不同的物理区域,以提高查询性能、优化数据管理、简化维护任务,并提高数据的可用性。下面我将详细介绍每种分区类型,并结合伪代码或概念性的源代码来说明其实现方式。 1. 范围分区 (Range Partitioning) 范围分区是根据某个列的值范围来划分数据。例如,可以按照日期或数值范围来分区。 示例场景:一个订单表,按年份分区。

Windows环境下SD卡多分区 隐藏分区 解决python裸读写扇区失败

SD卡分区 右键“我的电脑”->“管理”->“磁盘管理”; 如果SD卡有文件系统,点击"删除卷",重新做卡; 删除文件系统后如下图,点击“新建简单卷”; 在导航页“指定卷大小”,设置分区的大小,留出剩余的空间; python读写SD卡 这里需要注意的是,写SD卡需要加锁,否则写不成功 #带文件系统,需要锁定卷,否则无法写扇区@contextlib.contextmanagerd

如何将Product依赖的LibraryModule导出成jar

在Android Studio新建Module时可以选择创建的module是工程module还是Android Library。 或者可以在工程module中的build.gradle文件中将 apply plugin: 'com.android.application'改为apply plugin: 'com.android.library' 同时将applicati