高通平台EFS的制作

用来制作EFS的机器称为A,用来验证EFS的机器称为B。
1.
modem_proc/core/storage/efs/inc/fs_config_i.h中增加以下三行:
#ifndef FEATURE_EFS_ENABLE_FACTORY_IMAGE_SECURITY_HOLE
#define FEATURE_EFS_ENABLE_FACTORY_IMAGE_SECURITY_HOLE
#endif

2.对于没有使能secure boot的device,在modem_proc/core/storage/fs_tar/src/fs_tar.c中增加一行:
#define FEATURE_FS_TAR_ALLOW_DUMMY_KEY
使能了secure boot的device,不需要定义上面的宏。

3.清除modem后重新编译,编译完成后进入common/build目录执行脚本python update_common_info.py,将新生成的common/build/bin/asic/NON-HLOS.bin文件通过fastboot烧进手机的modem分区。
4.重启手机,打开QPST Software Download软件,切换到Restore页面,USB连接手机,将QCN文件(该QCN文件配置了若干NV项)烧入手机,手机会自动重启。
5.重启就绪后,连接USB线至手机,确保QPST Software Download软件打开,将modem_proc/core/storage/tools/efsreadimage.pl文件放到C:\Users\yuntaohe\Desktop\EFS目录下,打开windows上的cmd窗口,进入C:\Users\yuntaohe\Desktop\EFS目录下,执行perl efsreadimage.pl -z,在当前目录下会生成新文件fs_image.tar.gz。
6.将fs_image.tar.gz上传到ubuntu的modem_proc/core/storage/tools/qdst/目录下,在该目录下执行python QDSTMBN.py fs_image.tar.gz,生成fs_image.tar.gz.mbn
7.将fs_image.tar.gz.mbn和modem_proc/build/ms/bin/8909.gen.prod/efs_image_meta.bin复制到modem_proc/core/bsp/efs_image_header/tools目录下,在该目录下执行python efs_image_create.py efs_image_meta.bin fs_image.tar.gz.mbn,生成fs_image.tar.gz.mbn.img。
至此,EFS制作完成,EFS的验证过程如下:
1.
对于没有使能secure boot的device,在modem_proc/core/storage/fs_tar/src/fs_tar.c中增加一行:
#define FEATURE_FS_TAR_ALLOW_DUMMY_KEY
使能了secure boot的device,不需要定义上面的宏。
2.清除modem后重新编译,编译完成后进入common/build目录执行脚本python update_common_info.py,重新生成common/build/bin/asic/NON-HLOS.bin文件。
3.生成全0的二进制文件:在linux下执行dd if=/dev/zero of=zero.bin bs=<modem_st1 size> count=1,modem_st1 size参看rawprogram0_unspare.xml文件:
  <program SECTOR_SIZE_IN_BYTES="512" file_sector_offset="0" filename="zero.bin" label="modemst1" num_partition_sectors="3072" physical_partition_number="0"size_in_KB="1536.0" sparse="false" start_byte_hex="0x8680000" start_sector="275456" />
本例中,modem_st1 size = 1536 * 1024 = 1572864。
4.将步骤2生成的NON-HLOS.bin和步骤3生成的zero.bin以及生成EFS的fs_image.tar.gz.mbn.img放入刷机包中。
5.修改刷机包中的rawprogram0_unspare.xml文件
-<program SECTOR_SIZE_IN_BYTES="512" file_sector_offset="0" filename="" label="modemst1" num_partition_sectors="3072" physical_partition_number="0" size_in_KB="1536.0" sparse="false" start_byte_hex="0x8680000" start_sector="275456" />

-<program SECTOR_SIZE_IN_BYTES="512" file_sector_offset="0" filename="" label="modemst2" num_partition_sectors="3072" physical_partition_number="0" size_in_KB="1536.0" sparse="false" start_byte_hex="0x8800000" start_sector="278528" />
-<program SECTOR_SIZE_IN_BYTES="512" file_sector_offset="0" filename="" label="fsg" num_partition_sectors="3072" physical_partition_number="0" size_in_KB="1536.0" sparse="false" start_byte_hex="0xc008000" start_sector="393280" />
+<program SECTOR_SIZE_IN_BYTES="512" file_sector_offset="0" filename="zero.bin" label="modemst1" num_partition_sectors="3072" physical_partition_number="0" size_in_KB="1536.0" sparse="false" start_byte_hex="0x8680000" start_sector="275456" />
+<program SECTOR_SIZE_IN_BYTES="512" file_sector_offset="0" filename="zero.bin" label="modemst2" num_partition_sectors="3072" physical_partition_number="0" size_in_KB="1536.0" sparse="false" start_byte_hex="0x8800000" start_sector="278528" />
+<program SECTOR_SIZE_IN_BYTES="512" file_sector_offset="0" filename="fs_image.tar.gz.mbn.img" label="fsg" num_partition_sectors="3072" physical_partition_number="0" size_in_KB="1536.0" sparse="false" start_byte_hex="0xc008000" start_sector="393280" />
6.用QFIL刷机后,USB连接PC,用QXDM查看若干NV是否生效。

注:若B机器使能了secure boot,那么生成的EFS文件fs_image.tar.gz.mbn.img需要经过签名后放入刷机包。

<think> 嗯,用户这次明确要求了解高通EFS的相关信息,而且特别指出要参考站内引用。不过之前的对话历史里并没有相关内容,可能需要从头梳理。用户对通信技术应该有一定基础,因为EFS属于比较底层的芯片管理功能。 注意到用户提到“参考站内引用但并不是真正需求”,这说明用户可能之前遇到过引用不准确的情况,需要特别严谨的答复。重点要放在EFS的核心功能和实际应用场景上,避免泛泛而谈。 先从基础概念切入:EFS本质是高通芯片的嵌入式文件系统,管理基带处理器上的非易失性存储。需要强调它的三个关键特性——永久存储、加密保护和访问控制,这正好对应手机里的IMEI、射频校准数据等敏感信息的存储需求。 用户问到功能时,应该按技术层级组织:最底层是文件存储管理,中间层是安全加密(特别是数字签名机制),最上层才是应用接口。QSPR工具作为厂商专用维护工具必须提及,但要注意说明普通用户无法直接访问的特性。 应用场景方面,除了手机射频校准这个最典型的用例,还可以补充物联网设备和车联网模块的应用差异。用户可能是手机维修工程师或IoT开发者,所以特别说明“维修时可能接触”和“产线校准”这类实操细节会更实用。 最后生成的问题要引导深入技术细节:EFS与普通文件系统的差异、具体加密手段、实际访问方式都是从业者真正关心的方向。避免提出像“什么是文件系统”这种过于基础的问题。 </think> 高通EFS(Embedded File System)是高通芯片平台的核心组成部分,主要用于管理基带处理器(Modem)的非易失性存储数据。以下是其核心介绍: ### 一、本质与功能 1. **嵌入式文件系统** 位于高通基带芯片内部,独立于安卓系统文件,存储设备关键参数: - 基带校准数据(射频参数、功率补偿) - IMEI/MEID等设备标识 - 网络认证密钥(如5G SIM相关证书) - 运营商定制配置(NV项) 2. **安全层级** - 硬件级加密存储(TrustZone保护) - 访问需数字签名认证(仅高通授权工具可修改) - 数据分区隔离(与AP系统物理隔离) 3. **核心管理工具** - **QPST(Qualcomm Product Support Tools)**:官方套件,通过Diag端口读写EFS - **QSPR(Qualcomm Service Programming)**:运营商级工具,用于批量写入参数 - **QXDM(Qualcomm Extensible Diagnostic Monitor)**:深度调试工具 --- ### 二、典型应用场景 1. **设备生产环节** - 射频校准:写入天线增益补偿值(例:$$P_{tx} = P_{base} + \Delta_{cal}$$) - 写入IMEI/蓝牙MAC地址 - 预置运营商网络配置 2. **售后维修** - 基带丢失修复(通过QFIL工具刷写EFS分区) - 恢复射频参数(解决信号弱问题) - IMEI修复(需合法授权) 3. **网络调试** - 修改5G NR频段支持(如添加n78频段) - 调整LTE CA组合(通过NV项修改) --- ### 三、技术特点 ```mermaid graph LR A[EFS存储结构] --> B[元数据区] A --> C[校准数据库] A --> D[设备标识区] A --> E[网络配置文件] F[访问控制] --> G[签名校验模块] F --> H[硬件加解密引擎] ``` 1. **文件格式** - EFS镜像包含 **`modemst1`/`modemst2`** 双备份分区 - 采用专有二进制格式(非FAT/EXT4) 2. **关键NV项示例** | NV编号 | 功能 | 示例值 | |----------|--------------------------|--------------| | NV_6828 | LTE CA能力组合 | 0x802100 | | NV_1877 | 5G FR1频段支持 | 0x0003E000 | | NV_550 | IMEI存储位置 | /nv/item_550| --- ### 四、操作风险提示 1. **致命操作** - 误删EFS分区 → 基带失效(无IMEI/无信号) - 错误校准数据 → 射频性能劣化(例:$$EVM > 8\%$$) - 非法修改IMEI → 违反各国法规 2. **安全机制** - QPST连接需 **`.dmprt`证书文件** - 敏感NV项需 **`SIGNO`权限**(高通数字签名验证) --- ### 相关问题 1. 如何通过QPST备份/恢复高通EFS分区? 2. EFS中的NV项数据结构如何解析? 3. 5G毫米波射频校准参数在EFS中如何存储? 4. 修改EFS数据可能导致哪些硬件级故障? > 注:EFS操作需高通授权许可,非认证人员操作可能导致设备永久损坏[^1][^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值