跳转至

user

efuse提供用户预留空间的数据读写能力,支持按字节和按位两种操作粒度。

头文件清单

#include "include/driver/efuse_user.h"

接口清单

接口名称 功能简述
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_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为一次性可编程存储器,读取操作不影响已有数据

前置条件

  • 调用时序约束:eFuse模块已通过uapi_efuse_init()成功初始化
  • 依赖关系:用户预留eFuse空间已配置(CUSTOMER_RSVD_EFUSE_START_BIT和CUSTOMER_RSVD_EFUSE_BIT_LEN已定义)

入参

名称 参数类型 详细说明 约束取值范围
offset uint32_t 待读取的eFuse空间在用户预留区域中的起始偏移地址,以字节为单位 (length + offset) * 8 ≤ CUSTOMER_RSVD_EFUSE_BIT_LEN
buffer uint8_t * 保存读取数据的缓冲区 非NULL,长度不小于length
length uint16_t 数据的长度,以字节为单位 (length + offset) * 8 ≤ CUSTOMER_RSVD_EFUSE_BIT_LEN

出参

名称 数据类型 输出说明
buffer uint8_t * 读取到的eFuse数据存储缓冲区

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 读取操作成功完成
ERRCODE_EFUSE_NOT_INIT(0x80001391) eFuse未初始化 eFuse模块未初始化
ERRCODE_EFUSE_INVALID_PARAM(0x80001390) 参数无效 偏移地址加长度超出用户预留区域范围
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
DRIVER_SUPPORT_EFUSE 编译参与宏 控制efuse.c参与编译 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为一次性可编程存储器,已写入的bit无法从1恢复为0,仅可将0写为1

前置条件

  • 调用时序约束:eFuse模块已通过uapi_efuse_init()成功初始化
  • 依赖关系:用户预留eFuse空间已配置(CUSTOMER_RSVD_EFUSE_START_BIT和CUSTOMER_RSVD_EFUSE_BIT_LEN已定义)

入参

名称 参数类型 详细说明 约束取值范围
offset uint32_t 待写入的eFuse空间在用户预留区域中的起始偏移地址,以字节为单位 (length + offset) * 8 ≤ CUSTOMER_RSVD_EFUSE_BIT_LEN
buffer const uint8_t * 包含要写入的数据的缓冲区 非NULL,长度不小于length
length uint16_t 数据的长度,以字节为单位 (length + offset) * 8 ≤ CUSTOMER_RSVD_EFUSE_BIT_LEN

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 写入操作成功完成
ERRCODE_EFUSE_NOT_INIT(0x80001391) eFuse未初始化 eFuse模块未初始化
ERRCODE_EFUSE_INVALID_PARAM(0x80001390) 参数无效 偏移地址加长度超出用户预留区域范围,或已写入数据与待写入数据冲突
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
DRIVER_SUPPORT_EFUSE 编译参与宏 控制efuse.c参与编译 n
CONFIG_EFUSE_REWRITE_PROTECTION 特性宏 支持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
  • 操作基于用户预留空间的字节偏移地址和bit位置
  • eFuse为一次性可编程存储器,已写入为1的bit不可重复写入

前置条件

  • 调用时序约束:eFuse模块已通过uapi_efuse_init()成功初始化
  • 依赖关系:用户预留eFuse空间已配置(CUSTOMER_RSVD_EFUSE_START_BIT和CUSTOMER_RSVD_EFUSE_BIT_LEN已定义)
  • 依赖关系:EFUSE_BIT_OPERATION宏已定义(接口声明受条件编译控制)

入参

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

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 写入操作成功完成
ERRCODE_EFUSE_NOT_INIT(0x80001391) eFuse未初始化 eFuse模块未初始化
ERRCODE_EFUSE_INVALID_PARAM(0x80001390) 参数无效 偏移地址超出用户预留区域范围,或目标bit已为1
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
DRIVER_SUPPORT_EFUSE 编译参与宏 控制efuse.c参与编译 n
CONFIG_EFUSE_REWRITE_PROTECTION 特性宏 支持eFuse写入保护特性 n

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空间中读取一位
  • 操作基于用户预留空间的字节偏移地址和bit位置
  • 读取操作不影响已有数据

前置条件

  • 调用时序约束:eFuse模块已通过uapi_efuse_init()成功初始化
  • 依赖关系:用户预留eFuse空间已配置(CUSTOMER_RSVD_EFUSE_START_BIT和CUSTOMER_RSVD_EFUSE_BIT_LEN已定义)
  • 依赖关系:EFUSE_BIT_OPERATION宏已定义(接口声明受条件编译控制)

入参

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

出参

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

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 读取操作成功完成
ERRCODE_EFUSE_NOT_INIT(0x80001391) eFuse未初始化 eFuse模块未初始化
ERRCODE_EFUSE_INVALID_PARAM(0x80001390) 参数无效 偏移地址超出用户预留区域范围
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
DRIVER_SUPPORT_EFUSE 编译参与宏 控制efuse.c参与编译 n

Type definitions

errcode_t

typedef uint32_t errcode_t;

使用说明

本模块所有接口的返回值类型,表示操作执行结果。[SDK公共基础类型]

Macros

ERRCODE_SUCC

#define ERRCODE_SUCC                                        0UL

ERRCODE_EFUSE_INVALID_PARAM

#define ERRCODE_EFUSE_INVALID_PARAM                         0x80001390

ERRCODE_EFUSE_NOT_INIT

#define ERRCODE_EFUSE_NOT_INIT                              0x80001391