跳转至

eFuse

eFuse 是芯片内一次性可编程(OTP)存储单元。每个 bit 初始值为 0,编程后不可逆地熔断为 1,用于永久存储设备身份标识(Die-ID/Chip-ID/SoC-ID)、出厂校准参数等不可更改的信息。

支持按 bit 或按字节读写,提供写保护标志位防止误操作。

头文件清单

#include "include/driver/efuse.h"
#include "include/driver/efuse_user.h"

接口清单

接口名称 功能简述
uapi_efuse_init 初始化eFuse模块
uapi_efuse_deinit 去初始化eFuse模块
uapi_efuse_read_bit 从eFuse中读取指定位
uapi_efuse_read_buffer 从eFuse中读取多个字节
uapi_efuse_write_bit 向eFuse写入一位
uapi_efuse_write_bit_with_flag 在保护标志正确的情况下向eFuse写入一位
uapi_efuse_write_buffer 从缓冲区向eFuse写入多个字节
uapi_efuse_write_buffer_with_flag 在保护标志正确的情况下从缓冲区向eFuse写入多个字节
uapi_efuse_get_die_id 获取eFuse的Die-ID
uapi_efuse_get_chip_id 获取eFuse的Chip-ID
uapi_efuse_calc_crc 计算eFuse零计数CRC
uapi_soc_read_id 获取SoC-ID
uapi_efuse_user_read_buffer 从用户预留的eFuse空间中读取多个字节到缓冲区
uapi_efuse_user_write_buffer 从缓冲区向用户预留的eFuse空间写入多个字节
uapi_efuse_user_write_bit 向用户预留eFuse空间中的对应bit写1
uapi_efuse_user_read_bit 从用户预留的eFuse空间中读取一位

Functions

uapi_efuse_init

errcode_t uapi_efuse_init(void)

头文件清单

#include "include/driver/efuse.h"

功能说明

  • 初始化eFuse模块,注册HAL层函数并完成底层硬件初始化
  • 调用前需确保eFuse模块未被初始化,不可重复调用
  • 初始化完成后方可调用其他eFuse读写接口

前置条件

  • eFuse模块未初始化,调用本接口前不可调用其他eFuse接口
  • 硬件eFuse外设时钟已使能

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x0) 执行成功 初始化成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_EFUSE 功能宏 支持eFuse接口功能 n

uapi_efuse_deinit

errcode_t uapi_efuse_deinit(void)

头文件清单

#include "include/driver/efuse.h"

功能说明

  • 去初始化eFuse模块,注销HAL层函数并释放底层资源
  • 调用后不可再调用其他eFuse读写接口,需重新初始化
  • 去初始化始终返回成功

前置条件

  • eFuse模块已通过uapi_efuse_init()初始化完成

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x0) 执行成功 去初始化成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_EFUSE 功能宏 支持eFuse接口功能 n

uapi_efuse_read_bit

errcode_t uapi_efuse_read_bit(uint8_t *value, uint32_t byte_number, uint8_t bit_pos)

头文件清单

#include "include/driver/efuse.h"

功能说明

  • 从eFuse指定字节地址的指定位位置读取单个位值
  • 读取操作在关中断上下文中执行,保证原子性
  • 仅在EFUSE_BIT_OPERATION宏定义启用时可用

前置条件

  • eFuse模块已通过uapi_efuse_init()初始化完成
  • byte_number不超过EFUSE_MAX_BYTES(256),bit_pos不超过EFUSE_MAX_BIT_POS(8)
  • value指针不为NULL

入参

名称 参数类型 详细说明 约束取值范围
value uint8_t * 保存读取的位值(0或1) 指针不为NULL
byte_number uint32_t 要读取位的源eFuse字节地址 0 ~ 255(EFUSE_MAX_BYTES - 1)
bit_pos uint8_t 位的位置 0 ~ 7(EFUSE_MAX_BIT_POS - 1)

出参

名称 数据类型 输出说明
value uint8_t * 读取的位值,0或1

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x0) 执行成功 读取成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_EFUSE 功能宏 支持eFuse接口功能 n
CONFIG_EFUSE_BIT_OPERATION 功能宏 支持eFuse位操作接口功能 y

uapi_efuse_read_buffer

errcode_t uapi_efuse_read_buffer(uint8_t *buffer, uint32_t byte_number, uint16_t length)

头文件清单

#include "include/driver/efuse.h"

功能说明

  • 从eFuse指定字节地址起连续读取多个字节到缓冲区
  • 逐字节读取,读取操作在关中断上下文中执行,保证原子性
  • 读取范围不得超过eFuse最大字节地址空间

前置条件

  • eFuse模块已通过uapi_efuse_init()初始化完成
  • buffer指针不为NULL,length不为0
  • byte_number + length不超过EFUSE_MAX_BYTES(256)

入参

名称 参数类型 详细说明 约束取值范围
buffer uint8_t * 保存读取数据的缓冲区 指针不为NULL,长度不小于length
byte_number uint32_t 要读取数据的初始源eFuse字节地址 0 ~ 255(EFUSE_MAX_BYTES - 1)
length uint16_t 数据的长度,以字节为单位 1 ~ 256,且byte_number + length ≤ 256

出参

名称 数据类型 输出说明
buffer uint8_t * 读取到的eFuse数据

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x0) 执行成功 读取成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_EFUSE 功能宏 支持eFuse接口功能 n

uapi_efuse_write_bit

errcode_t uapi_efuse_write_bit(uint32_t byte_number, uint8_t bit_pos)

头文件清单

#include "include/driver/efuse.h"

功能说明

  • 向eFuse指定字节地址的指定位位置写入一位(仅可将位从0写为1,eFuse不可逆)
  • 若目标位已为1,则返回ERRCODE_INVALID_PARAM
  • 写入操作在关中断上下文中执行,保证原子性
  • 仅在EFUSE_BIT_OPERATION宏定义启用时可用

前置条件

  • eFuse模块已通过uapi_efuse_init()初始化完成
  • byte_number不超过EFUSE_MAX_BYTES(256),bit_pos不超过EFUSE_MAX_BIT_POS(8)
  • 目标位当前值为0(eFuse只能从0写为1)

入参

名称 参数类型 详细说明 约束取值范围
byte_number uint32_t 要写入位的目标eFuse字节地址 0 ~ 255(EFUSE_MAX_BYTES - 1)
bit_pos uint8_t 位的位置,非零值表示将设置该位 0 ~ 7(EFUSE_MAX_BIT_POS - 1)

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x0) 执行成功 写入成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_EFUSE 功能宏 支持eFuse接口功能 n
CONFIG_EFUSE_BIT_OPERATION 功能宏 支持eFuse位操作接口功能 y

uapi_efuse_write_bit_with_flag

errcode_t uapi_efuse_write_bit_with_flag(uint32_t byte_number, uint8_t bit_pos, uint32_t flag)

头文件清单

#include "include/driver/efuse.h"

功能说明

  • 在保护标志正确的情况下向eFuse写入一位,flag必须等于EFUSE_WRITE_PROTECT_FLAG(0x5A5A5A5A)
  • 若flag不匹配,直接返回ERRCODE_EFUSE_INVALID_PARAM,防止误写
  • 若目标位已为1,则返回ERRCODE_INVALID_PARAM
  • 写入操作在关中断上下文中执行,保证原子性
  • 仅在EFUSE_BIT_OPERATION宏定义启用时可用

前置条件

  • eFuse模块已通过uapi_efuse_init()初始化完成
  • byte_number不超过EFUSE_MAX_BYTES(256),bit_pos不超过EFUSE_MAX_BIT_POS(8)
  • 目标位当前值为0(eFuse只能从0写为1)

入参

名称 参数类型 详细说明 约束取值范围
byte_number uint32_t 要写入位的目标eFuse字节地址 0 ~ 255(EFUSE_MAX_BYTES - 1)
bit_pos uint8_t 位的位置,非零值表示将设置该位 0 ~ 7(EFUSE_MAX_BIT_POS - 1)
flag uint32_t 保护标志 必须为0x5A5A5A5A(EFUSE_WRITE_PROTECT_FLAG)

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x0) 执行成功 写入成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_EFUSE 功能宏 支持eFuse接口功能 n
CONFIG_EFUSE_BIT_OPERATION 功能宏 支持eFuse位操作接口功能 y

uapi_efuse_write_buffer

errcode_t uapi_efuse_write_buffer(uint32_t byte_number, const uint8_t *buffer, uint16_t length)

头文件清单

#include "include/driver/efuse.h"

功能说明

  • 从缓冲区向eFuse指定字节地址起连续写入多个字节
  • eFuse为一次性可编程存储器,写入不可逆,仅可将位从0写为1
  • 写入操作在关中断上下文中执行,保证原子性
  • 写入范围不得超过eFuse最大字节地址空间

前置条件

  • eFuse模块已通过uapi_efuse_init()初始化完成
  • buffer指针不为NULL,length不为0
  • byte_number + length不超过EFUSE_MAX_BYTES(256)

入参

名称 参数类型 详细说明 约束取值范围
byte_number uint32_t 要写入数据的初始目的eFuse字节地址 0 ~ 255(EFUSE_MAX_BYTES - 1)
buffer const uint8_t * 包含要写入的数据的缓冲区 指针不为NULL,长度不小于length
length uint16_t 数据的长度,以字节为单位 1 ~ 256,且byte_number + length ≤ 256

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x0) 执行成功 写入成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_EFUSE 功能宏 支持eFuse接口功能 n

uapi_efuse_write_buffer_with_flag

errcode_t uapi_efuse_write_buffer_with_flag(uint32_t byte_number, const uint8_t *buffer, uint16_t length, uint32_t flag)

头文件清单

#include "include/driver/efuse.h"

功能说明

  • 在保护标志正确的情况下从缓冲区向eFuse写入多个字节,flag必须等于EFUSE_WRITE_PROTECT_FLAG(0x5A5A5A5A)
  • 若flag不匹配,直接返回ERRCODE_EFUSE_INVALID_PARAM,防止误写
  • eFuse为一次性可编程存储器,写入不可逆
  • 写入操作在关中断上下文中执行,保证原子性

前置条件

  • eFuse模块已通过uapi_efuse_init()初始化完成
  • buffer指针不为NULL,length不为0
  • byte_number + length不超过EFUSE_MAX_BYTES(256)

入参

名称 参数类型 详细说明 约束取值范围
byte_number uint32_t 要写入数据的初始目的eFuse字节地址 0 ~ 255(EFUSE_MAX_BYTES - 1)
buffer const uint8_t * 包含要写入的数据的缓冲区 指针不为NULL,长度不小于length
length uint16_t 数据的长度,以字节为单位 1 ~ 256,且byte_number + length ≤ 256
flag uint32_t 保护标志 必须为0x5A5A5A5A(EFUSE_WRITE_PROTECT_FLAG)

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x0) 执行成功 写入成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_EFUSE 功能宏 支持eFuse接口功能 n

uapi_efuse_get_die_id

errcode_t uapi_efuse_get_die_id(uint8_t *buffer, uint16_t length)

头文件清单

#include "include/driver/efuse.h"

功能说明

  • 获取eFuse的Die-ID,Die-ID为芯片晶粒唯一标识
  • 通过HAL层读取Die-ID对应的eFuse区域数据
  • Die-ID在eFuse中的起始位地址为8,长度为160位(20字节)

前置条件

  • eFuse模块已通过uapi_efuse_init()初始化完成
  • buffer指针不为NULL,length不为0

入参

名称 参数类型 详细说明 约束取值范围
buffer uint8_t * 保存读取数据的缓冲区 指针不为NULL,长度不小于length
length uint16_t Die-ID数据的长度,以字节为单位 ≥ 20(Die-ID占160位即20字节)

出参

名称 数据类型 输出说明
buffer uint8_t * 读取到的Die-ID数据

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x0) 执行成功 获取成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_EFUSE 功能宏 支持eFuse接口功能 n

uapi_efuse_get_chip_id

errcode_t uapi_efuse_get_chip_id(uint8_t *buffer, uint16_t length)

头文件清单

#include "include/driver/efuse.h"

功能说明

  • 获取eFuse的Chip-ID,Chip-ID为芯片版本唯一标识
  • 通过HAL层读取Chip-ID对应的eFuse区域数据
  • Chip-ID在eFuse中的起始位地址为0,长度为8位(1字节)

前置条件

  • eFuse模块已通过uapi_efuse_init()初始化完成
  • buffer指针不为NULL,length不为0

入参

名称 参数类型 详细说明 约束取值范围
buffer uint8_t * 保存读取数据的缓冲区 指针不为NULL,长度不小于length
length uint16_t Chip-ID数据的长度,以字节为单位 ≥ 1(Chip-ID占8位即1字节)

出参

名称 数据类型 输出说明
buffer uint8_t * 读取到的Chip-ID数据

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x0) 执行成功 获取成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_EFUSE 功能宏 支持eFuse接口功能 n

uapi_efuse_calc_crc

errcode_t uapi_efuse_calc_crc(const uint8_t *buffer, uint8_t length, uint8_t *crc)

头文件清单

#include "include/driver/efuse.h"

功能说明

  • 计算eFuse零计数CRC,统计缓冲区数据中每字节0位的个数之和
  • 最大支持32字节(256位)数据的CRC计算
  • CRC值为所有字节中0位个数的累加和

前置条件

  • buffer指针不为NULL,crc指针不为NULL
  • length不超过32(EFUSE_CALC_CRC_MAX_LEN)

入参

名称 参数类型 详细说明 约束取值范围
buffer const uint8_t * 保存读取数据的缓冲区 指针不为NULL
length uint8_t 数据长度,以字节为单位 1 ~ 32(EFUSE_CALC_CRC_MAX_LEN)
crc uint8_t * 保存CRC值的缓冲区 指针不为NULL

出参

名称 数据类型 输出说明
crc uint8_t * 计算得到的零计数CRC值

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x0) 执行成功 计算成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_EFUSE 功能宏 支持eFuse接口功能 n

uapi_soc_read_id

errcode_t uapi_soc_read_id(uint8_t *id, uint16_t id_length)

头文件清单

#include "include/driver/efuse.h"

功能说明

  • 获取SoC-ID,内部调用uapi_efuse_get_die_id实现
  • SoC-ID为长度20字节的数组,id_length必须大于等于20字节
  • SoC-ID与Die-ID内容相同,提供兼容性接口

前置条件

  • eFuse模块已通过uapi_efuse_init()初始化完成
  • id指针不为NULL,id_length不小于20字节

入参

名称 参数类型 详细说明 约束取值范围
id uint8_t * 用于存储返回的ID,ID是长度为20字节的数组 指针不为NULL,长度≥ 20字节
id_length uint16_t ID数组的长度 ≥ 20

出参

名称 数据类型 输出说明
id uint8_t * 读取到的SoC-ID数据,长度为20字节

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x0) 执行成功 获取成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_EFUSE 功能宏 支持eFuse接口功能 n

uapi_efuse_user_read_buffer

errcode_t uapi_efuse_user_read_buffer(uint32_t offset, uint8_t *buffer, uint16_t length)

头文件清单

#include "include/driver/efuse_user.h"

功能说明

  • 从用户预留的eFuse空间中读取多个字节,进入提供的缓冲区
  • 读取范围为用户预留区域,偏移地址相对于用户预留区域起始位置计算
  • 调用前需确保eFuse模块已初始化,且offset与length不超过用户预留空间大小

前置条件

  • 模块初始化状态:该接口所属模块已通过 uapi_efuse_init() 初始化完成,返回初始化成功状态(返回值为ERRCODE_SUCC)
  • 依赖资源状态:offset与length之和不超过用户预留eFuse空间大小(CUSTOMER_RSVD_EFUSE_BIT_LEN / 8 = 16字节)

入参

名称 参数类型 详细说明 约束取值范围
offset uint32_t 待读取的eFuse空间在用户预留区域中的起始偏移地址,以字节为单位 [0, 15]
buffer uint8_t * 保存读取数据的缓冲区 不为NULL,且指向内存空间已申请成功,长度不小于length规定值
length uint16_t 数据的长度,以字节为单位 [1, 16],且 offset + length ≤ 16

出参

名称 数据类型 输出说明
buffer uint8_t * 读取到的eFuse用户预留空间数据,长度为length字节

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x0) 执行成功 读取成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
DRIVER_SUPPORT_EFUSE 功能宏 支持EFUSE接口功能 n

uapi_efuse_user_write_buffer

errcode_t uapi_efuse_user_write_buffer(uint32_t offset, const uint8_t *buffer, uint16_t length)

头文件清单

#include "include/driver/efuse_user.h"

功能说明

  • 从提供的缓冲区向用户预留的eFuse空间写入多个字节
  • 写入范围为用户预留区域,偏移地址相对于用户预留区域起始位置计算
  • eFuse为一次性可编程存储器,已写入的位无法从1改回0,重复写入仅可将0位写为1

前置条件

  • 模块初始化状态:该接口所属模块已通过 uapi_efuse_init() 初始化完成,返回初始化成功状态(返回值为ERRCODE_SUCC)
  • 依赖资源状态:offset与length之和不超过用户预留eFuse空间大小(CUSTOMER_RSVD_EFUSE_BIT_LEN / 8 = 16字节)

入参

名称 参数类型 详细说明 约束取值范围
offset uint32_t 待写入的eFuse空间在用户预留区域中的起始偏移地址,以字节为单位 [0, 15]
buffer const uint8_t * 包含要写入的数据的缓冲区 不为NULL,且指向内存空间已申请成功,长度不小于length规定值
length uint16_t 数据的长度,以字节为单位 [1, 16],且 offset + length ≤ 16

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x0) 执行成功 写入成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
DRIVER_SUPPORT_EFUSE 功能宏 支持EFUSE接口功能 n

uapi_efuse_user_write_bit

errcode_t uapi_efuse_user_write_bit(uint32_t byte_offset, uint8_t bit_pos)

头文件清单

#include "include/driver/efuse_user.h"

功能说明

  • 向用户预留eFuse空间中的对应bit写1
  • 写入位置由字节偏移地址和位位置共同确定
  • eFuse为一次性可编程存储器,已写入的位无法从1改回0

前置条件

  • 模块初始化状态:该接口所属模块已通过 uapi_efuse_init() 初始化完成,返回初始化成功状态(返回值为ERRCODE_SUCC)
  • 依赖资源状态:byte_offset与bit_pos对应的位地址不超过用户预留eFuse空间大小(CUSTOMER_RSVD_EFUSE_BIT_LEN = 128位)

入参

名称 参数类型 详细说明 约束取值范围
byte_offset uint32_t 待写入位在用户预留空间中的字节偏移地址 [0, 15],且 byte_offset × 8 + bit_pos ≤ 128
bit_pos uint8_t 待写入位在用户预留空间中对应字节中的bit位置 [0, 7]

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x0) 执行成功 写入成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
DRIVER_SUPPORT_EFUSE 功能宏 支持EFUSE接口功能 n
EFUSE_BIT_OPERATION 特性宏 支持eFuse位操作特性 y

uapi_efuse_user_read_bit

errcode_t uapi_efuse_user_read_bit(uint32_t byte_offset, uint8_t bit_pos, uint8_t *value)

头文件清单

#include "include/driver/efuse_user.h"

功能说明

  • 从用户预留的eFuse空间中读取一位
  • 读取位置由字节偏移地址和位位置共同确定
  • 读取的位值通过输出参数value返回

前置条件

  • 模块初始化状态:该接口所属模块已通过 uapi_efuse_init() 初始化完成,返回初始化成功状态(返回值为ERRCODE_SUCC)
  • 依赖资源状态:byte_offset与bit_pos对应的位地址不超过用户预留eFuse空间大小(CUSTOMER_RSVD_EFUSE_BIT_LEN = 128位)

入参

名称 参数类型 详细说明 约束取值范围
byte_offset uint32_t 待读取位在用户预留空间中的字节偏移地址 [0, 15],且 byte_offset × 8 + bit_pos ≤ 128
bit_pos uint8_t 待读取位在用户预留空间中对应字节中的bit位置 [0, 7]

出参

名称 数据类型 输出说明
value uint8_t * 读取的位值

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x0) 执行成功 读取成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
DRIVER_SUPPORT_EFUSE 功能宏 支持EFUSE接口功能 n
EFUSE_BIT_OPERATION 特性宏 支持eFuse位操作特性 y

Type definitions

errcode_t

typedef uint32_t errcode_t;

使用说明:所有eFuse接口的返回值类型,表示接口执行结果

Enumerations

hal_efuse_region_t

typedef enum {
    HAL_EFUSE_REGION_0,
    HAL_EFUSE_REGION_MAX,
} hal_efuse_region_t;
枚举成员 取值 描述
HAL_EFUSE_REGION_0 0 eFuse区域0
HAL_EFUSE_REGION_MAX 1 eFuse区域上限

efuse_idx

typedef enum {
    EFUSE_CHIP_ID = 0,
    EFUSE_DIE_ID = 1,
    EFUSE_MCU_VER_ID = 2,
    EFUSE_FLASHBOOT_VER_ID = 3,
    EFUSE_PARAMS_VER_ID = 4,
    EFUSE_HASH_ROOT_PUBLIC_KEY_ID = 5,
    EFUSE_MSID_ID = 6,
    EFUSE_SEC_VERIFY_ENABLE = 7,
    EFUSE_TYPE_ID = 8,
    EFUSE_MAC_ADDR_01_ID = 9,
    EFUSE_MAC_ADDR_02_ID = 10,
    EFUSE_MAC_ADDR_03_ID = 11,
    EFUSE_MAC_ADDR_LAST_ID = 12,
    EFUSE_CUSTOM_RESVED_ID = 13,
    EFUSE_CUSTOM_RESVED2_ID = 14,
    EFUSE_GET_S_ID = 15,
    EFUSE_GET_B_ID = 16,
    EFUSE_GET_K_ID = 17,
    EFUSE_MAC_SLE_ADDR_ID = 18,
    EFUSE_IDX_MAX,
} efuse_idx;
枚举成员 取值 描述
EFUSE_CHIP_ID 0 Chip-ID索引
EFUSE_DIE_ID 1 Die-ID索引
EFUSE_MCU_VER_ID 2 MCU版本索引
EFUSE_FLASHBOOT_VER_ID 3 Flashboot版本索引
EFUSE_PARAMS_VER_ID 4 参数版本索引
EFUSE_HASH_ROOT_PUBLIC_KEY_ID 5 根公钥哈希索引
EFUSE_MSID_ID 6 MSID索引
EFUSE_SEC_VERIFY_ENABLE 7 安全验证使能索引
EFUSE_TYPE_ID 8 类型ID索引
EFUSE_MAC_ADDR_01_ID 9 MAC地址1索引
EFUSE_MAC_ADDR_02_ID 10 MAC地址2索引
EFUSE_MAC_ADDR_03_ID 11 MAC地址3索引
EFUSE_MAC_ADDR_LAST_ID 12 最后MAC地址索引
EFUSE_CUSTOM_RESVED_ID 13 用户保留区索引
EFUSE_CUSTOM_RESVED2_ID 14 用户保留区2索引
EFUSE_GET_S_ID 15 电压校准S值索引
EFUSE_GET_B_ID 16 电压校准B值索引
EFUSE_GET_K_ID 17 电压校准K值索引
EFUSE_MAC_SLE_ADDR_ID 18 SLE MAC地址索引
EFUSE_IDX_MAX 19 eFuse索引上限

Type definitions (User)

errcode_t

typedef uint32_t errcode_t;

使用说明:该类型作为本模块所有接口的返回值类型使用

参考案例

#include "include/driver/efuse.h"
#include "include/driver/efuse_user.h"

void efuse_example(void)
{
    errcode_t ret;
    uint8_t data[8] = {0};

    /* 初始化 eFuse */
    ret = uapi_efuse_init();
    if (ret != ERRCODE_SUCC) {
        return;
    }

    /* Core API: 读取 eFuse Die-ID */
    uint32_t die_id = 0;
    uapi_efuse_get_die_id(&die_id);

    /* User API: 读取用户预留区域 */
    ret = uapi_efuse_user_read_buffer(0, data, sizeof(data));
    if (ret == ERRCODE_SUCC) {
        /* 使用读取的数据 */
    }

    uapi_efuse_deinit();
}

Core API 操作 eFuse 物理区域,User API 封装了对用户预留空间的读写。使用前需调用 uapi_efuse_init() 初始化。