1、文档简介
本文档介绍了
XR806 平台上 EFPG 模块的使用方法。
2、概述
2.1 背景说明
EFPG(eFuse Programming)模块主要用于 OEM(Original Equipment Manufacturer)端对 eFuse 相应区域 进行烧写和读取。OEM 端烧写的 eFuse 区域主要有:HOSC(HOSC TYPE)、BOOT(SECURE BOOT)、 DCXO(DCXO TRIM)、POUT(POUT CAL)、MAC 以及 USER AREA(用户区域)。EFPG 模块对上述区域 的烧写和读取功能可分为三类:
1. 配合 OEM 端 eFuse 烧写工具烧写 HOSC、BOOT、DCXO、POUT 和 MAC 数据。
2. 提供接口读取 eFuse 上 HOSC、BOOT、DCXO、POUT、MAC 以及 CHIPID 数据。
3. 提供接口读取 eFuse 上 USER AREA 区域,且可配合 eFuse 烧写工具对 USER AREA 区域进行烧写。
2.2 规格特性
EFPG 中间件模块提供了以下功能特性。
规格类型 | 规格描述 |
为eFuse烧写工具提供功能命令 | 支持读取CHIPID |
支持烧写、读取HOSC |
支持烧写、读取BOOT |
支持烧写、读取DCXO |
支持烧写、读取POUT |
支持烧写、读取MAC |
支持烧写、读取USER AREA |
为用户提供功能接口 | 支持读取CHIPID |
支持读取HOSC |
支持读取BOOT |
支持读取DCXO |
支持读取POUT |
支持读取MAC |
支持读取USER AREA |
2.3 文件位置
以 SDK 包为根目录,本中间件涉及到的主要文件位置如下。
EFPG:
源码文件 ./src/efpg
头文件 ./include/efpg.h
示例工程 ./project/example/efpg/
3、技术说明
3.1 OEM 端 eFuse 烧写方案
使用 OEM 端 eFuse 烧写工具可以实现对 HOSC、BOOT、DCXO、POUT 和 MAC 参数的烧写,该烧写方案 的整体结构如下图所示。
OEM 端 eFuse 烧写工具通过 UART 与 EFPG 模块通信,传输烧写区域和数据等信息。EFPG 模块对工具发 送的信息校验通过后,将数据烧写到 eFuse 相应的区域。 OEM 端 eFuse 烧写工具的具体使用可参考《XR806_eFuse 工具_使用指南》文档。为防止 eFuse 相应区 域被任意烧写,烧写工具中需输入与代码中相同的 Key,代码中 key 在 SDK/project/common/cmd/cmd_efpg.c 文件中(如下所示)。Key 的最大长度由宏 EFPG_KEY_LEN_MAX 定义,默认为 64。
const char *efpg_key = "efpgtest";
3.2 EFPG Field 定义
EFPG Field 表示通过 EFPG 模块可以直接读取的已定义区域的数据。这些已定义区域包括 OEM 端负责烧 写的 HOSC、BOOT、DCXO、POUT 和 MAC,此外还包括 CHIPID。代码中对 EFPG Field 的定义为:
typedef enum efpg_field {
EFPG_FIELD_HOSC = 0, /* data buffer size: 1 byte */
EFPG_FIELD_BOOT, /* data buffer size: 32 bytes */
EFPG_FIELD_MAC_
WLAN, /* data buffer size: 6 bytes */
EFPG_FIELD_DCXO, /* data buffer size: 1 byte */
EFPG_FIELD_POUT_WLAN, /* data buffer size: 3 bytes */
EFPG_FIELD_CHIPID, /* data buffer size: 16 bytes */
EFPG_FIELD_UA, /* data buffer size: V1(1447~2047) : V2(765~1023 bit) : V3(954~1022 bit)*/
EFPG_FIELD_POUT_BT, /* data buffer size: 3 bytes */
EFPG_FIELD_MAC_BT, /* data buffer size: 6 bytes */
EFPG_FIELD_SECRETKEY, /* data buffer size: 16 bytes */
EFPG_FIELD_SECURESWD, /* data buffer size: 1 bytes */
EFPG_FIELD_ALL, /* data buffer size: 128 bytes */
EFPG_FIELD_NUM,} efpg_field_t;
4、应用说明
4.1 应用简述
EFPG 中间件模块已经内嵌到 XR806 SDK,应用步骤如下:
1. 若需要使用 EFPG 模块对 eFuse 区域进行烧写,则只需使用 eFuse 烧写工具进行操作即可(烧写前
开发板要正常启动平台初始化,且支持 cmd_efpg 命令,可参见《XR806_eFuse 工具_使用指南》文 档)。
2. 若用户需要使用 EFPG 模块的接口,对 eFuse 区域进行读取,则需在用户应用代码中添加 EFPG 模块 头文件(参见“2.3 文件位置”章节),调用 EFPG 接口进行使用(接口使用参见“4.3 接口说明” 章节)。
更多详细内容请下载附件查看