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

相关文章

Mac备忘录怎么导出/备份和云同步? Mac备忘录使用技巧

《Mac备忘录怎么导出/备份和云同步?Mac备忘录使用技巧》备忘录作为iOS里简单而又不可或缺的一个系统应用,上手容易,可以满足我们日常生活中各种记录的需求,今天我们就来看看Mac备忘录的导出、... 「备忘录」是 MAC 上的一款常用应用,它可以帮助我们捕捉灵感、记录待办事项或保存重要信息。为了便于在不同

MySQL数据库实现批量表分区完整示例

《MySQL数据库实现批量表分区完整示例》通俗地讲表分区是将一大表,根据条件分割成若干个小表,:本文主要介绍MySQL数据库实现批量表分区的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录一、表分区条件二、常规表和分区表的区别三、表分区的创建四、将既有表转换分区表脚本五、批量转换表为分区

MySQL Workbench工具导出导入数据库方式

《MySQLWorkbench工具导出导入数据库方式》:本文主要介绍MySQLWorkbench工具导出导入数据库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录mysql Workbench工具导出导入数据库第一步 www.chinasem.cn数据库导出第二步

Java如何根据word模板导出数据

《Java如何根据word模板导出数据》这篇文章主要为大家详细介绍了Java如何实现根据word模板导出数据,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... pom.XML文件导入依赖 <dependency> <groupId>cn.afterturn</groupId>

C#实现高性能Excel百万数据导出优化实战指南

《C#实现高性能Excel百万数据导出优化实战指南》在日常工作中,Excel数据导出是一个常见的需求,然而,当数据量较大时,性能和内存问题往往会成为限制导出效率的瓶颈,下面我们看看C#如何结合EPPl... 目录一、技术方案核心对比二、各方案选型建议三、性能对比数据四、核心代码实现1. MiniExcel

POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能

《POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能》ApachePOI是一个流行的Java库,用于处理MicrosoftOffice格式文件,提供丰富API来创建、读取和修改O... 目录前言:Apache POIEasyPoiEasyExcel一、EasyExcel1.1、核心特性

MySQL 分区与分库分表策略应用小结

《MySQL分区与分库分表策略应用小结》在大数据量、复杂查询和高并发的应用场景下,单一数据库往往难以满足性能和扩展性的要求,本文将详细介绍这两种策略的基本概念、实现方法及优缺点,并通过实际案例展示如... 目录mysql 分区与分库分表策略1. 数据库水平拆分的背景2. MySQL 分区策略2.1 分区概念

Mysql表如何按照日期字段的年月分区

《Mysql表如何按照日期字段的年月分区》:本文主要介绍Mysql表如何按照日期字段的年月分区的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、创键表时直接设置分区二、已有表分区1、分区的前置条件2、分区操作三、验证四、注意总结一、创键表时直接设置分区

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方