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

相关文章

springboot集成easypoi导出word换行处理过程

《springboot集成easypoi导出word换行处理过程》SpringBoot集成Easypoi导出Word时,换行符n失效显示为空格,解决方法包括生成段落或替换模板中n为回车,同时需确... 目录项目场景问题描述解决方案第一种:生成段落的方式第二种:替换模板的情况,换行符替换成回车总结项目场景s

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

Qt中实现多线程导出数据功能的四种方式小结

《Qt中实现多线程导出数据功能的四种方式小结》在以往的项目开发中,在很多地方用到了多线程,本文将记录下在Qt开发中用到的多线程技术实现方法,以导出指定范围的数字到txt文件为例,展示多线程不同的实现方... 目录前言导出文件的示例工具类QThreadQObject的moveToThread方法实现多线程QC

SpringBoot集成EasyExcel实现百万级别的数据导入导出实践指南

《SpringBoot集成EasyExcel实现百万级别的数据导入导出实践指南》本文将基于开源项目springboot-easyexcel-batch进行解析与扩展,手把手教大家如何在SpringBo... 目录项目结构概览核心依赖百万级导出实战场景核心代码效果百万级导入实战场景监听器和Service(核心

使用Python开发一个Ditto剪贴板数据导出工具

《使用Python开发一个Ditto剪贴板数据导出工具》在日常工作中,我们经常需要处理大量的剪贴板数据,下面将介绍如何使用Python的wxPython库开发一个图形化工具,实现从Ditto数据库中读... 目录前言运行结果项目需求分析技术选型核心功能实现1. Ditto数据库结构分析2. 数据库自动定位3

shell脚本批量导出redis key-value方式

《shell脚本批量导出rediskey-value方式》为避免keys全量扫描导致Redis卡顿,可先通过dump.rdb备份文件在本地恢复,再使用scan命令渐进导出key-value,通过CN... 目录1 背景2 详细步骤2.1 本地docker启动Redis2.2 shell批量导出脚本3 附录总

SpringBoot集成EasyPoi实现Excel模板导出成PDF文件

《SpringBoot集成EasyPoi实现Excel模板导出成PDF文件》在日常工作中,我们经常需要将数据导出成Excel表格或PDF文件,本文将介绍如何在SpringBoot项目中集成EasyPo... 目录前言摘要简介源代码解析应用场景案例优缺点分析类代码方法介绍测试用例小结前言在日常工作中,我们经

SpringBoot+EasyPOI轻松实现Excel和Word导出PDF

《SpringBoot+EasyPOI轻松实现Excel和Word导出PDF》在企业级开发中,将Excel和Word文档导出为PDF是常见需求,本文将结合​​EasyPOI和​​Aspose系列工具实... 目录一、环境准备与依赖配置1.1 方案选型1.2 依赖配置(商业库方案)二、Excel 导出 PDF

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并