eFuse
eFuse 是芯片内一次性可编程(OTP)存储单元。每个 bit 初始值为 0,编程后不可逆地熔断为 1,用于永久存储设备身份标识(Die-ID/Chip-ID/SoC-ID)、出厂校准参数等不可更改的信息。
支持按 bit 或按字节读写,提供写保护标志位防止误操作。
头文件清单
接口清单
接口名称 功能简述 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
头文件清单
功能说明
- 初始化eFuse模块,注册HAL层函数并完成底层硬件初始化
- 调用前需确保eFuse模块未被初始化,不可重复调用
- 初始化完成后方可调用其他eFuse读写接口
前置条件
- eFuse模块未初始化,调用本接口前不可调用其他eFuse接口
- 硬件eFuse外设时钟已使能
返回值
- 返回类型:errcode_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 执行成功 初始化成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 CONFIG_DRIVER_SUPPORT_EFUSE 功能宏 支持eFuse接口功能 n
uapi_efuse_deinit
头文件清单
功能说明
- 去初始化eFuse模块,注销HAL层函数并释放底层资源
- 调用后不可再调用其他eFuse读写接口,需重新初始化
- 去初始化始终返回成功
前置条件
- eFuse模块已通过uapi_efuse_init()初始化完成
返回值
- 返回类型:errcode_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 执行成功 去初始化成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 CONFIG_DRIVER_SUPPORT_EFUSE 功能宏 支持eFuse接口功能 n
uapi_efuse_read_bit
头文件清单
功能说明
- 从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_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 执行成功 读取成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 CONFIG_DRIVER_SUPPORT_EFUSE 功能宏 支持eFuse接口功能 n CONFIG_EFUSE_BIT_OPERATION 功能宏 支持eFuse位操作接口功能 y
uapi_efuse_read_buffer
头文件清单
功能说明
- 从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_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 执行成功 读取成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 CONFIG_DRIVER_SUPPORT_EFUSE 功能宏 支持eFuse接口功能 n
uapi_efuse_write_bit
头文件清单
功能说明
- 向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_t
返回值 文字含义 触发场景 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
头文件清单
功能说明
- 在保护标志正确的情况下向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_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 执行成功 写入成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 CONFIG_DRIVER_SUPPORT_EFUSE 功能宏 支持eFuse接口功能 n CONFIG_EFUSE_BIT_OPERATION 功能宏 支持eFuse位操作接口功能 y
uapi_efuse_write_buffer
头文件清单
功能说明
- 从缓冲区向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_t
返回值 文字含义 触发场景 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)
头文件清单
功能说明
- 在保护标志正确的情况下从缓冲区向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_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 执行成功 写入成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 CONFIG_DRIVER_SUPPORT_EFUSE 功能宏 支持eFuse接口功能 n
uapi_efuse_get_die_id
头文件清单
功能说明
- 获取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_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 执行成功 获取成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 CONFIG_DRIVER_SUPPORT_EFUSE 功能宏 支持eFuse接口功能 n
uapi_efuse_get_chip_id
头文件清单
功能说明
- 获取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_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 执行成功 获取成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 CONFIG_DRIVER_SUPPORT_EFUSE 功能宏 支持eFuse接口功能 n
uapi_efuse_calc_crc
头文件清单
功能说明
- 计算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_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 执行成功 计算成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 CONFIG_DRIVER_SUPPORT_EFUSE 功能宏 支持eFuse接口功能 n
uapi_soc_read_id
头文件清单
功能说明
- 获取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_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 执行成功 获取成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 CONFIG_DRIVER_SUPPORT_EFUSE 功能宏 支持eFuse接口功能 n
uapi_efuse_user_read_buffer
头文件清单
功能说明
- 从用户预留的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
头文件清单
功能说明
- 从提供的缓冲区向用户预留的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
头文件清单
功能说明
- 向用户预留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
头文件清单
功能说明
- 从用户预留的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
使用说明:所有eFuse接口的返回值类型,表示接口执行结果
Enumerations
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
使用说明:该类型作为本模块所有接口的返回值类型使用
参考案例
#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()初始化。