Skip to main content

EFUSE

一 相关配置

efuse驱动

1

efuse相关demo

2

二 efuse调试

相关源码见libhardware2/src/cmds/efuse_main.c

2.1 shell 命令

cmd_efuse read_size <segment_name>
功能:读efuse某一段的大小
参数:segment_name //段的名字
example:
cmd_efuse read_size CHIP_ID
cmd_efuse read <segment_name>
功能:读efuse
参数:segment_name //段的名字
example:
cmd_efuse read CHIP_ID
cmd_efuse write <segment_name> <start> <size> <data0>[data...]
功能:写efuse
参数:segment_name //段的名字
start //写入的起始位
size //写入的大小
<data0>[data...] //写入的数据
example:
cmd_efuse write CHIP_ID 0 2 0x10 0x11
cmd_efuse print_segment_info
功能:打印efuse每个段的信息
参数:无
example:
cmd_efuse print_segment_info

2.2 示例

# cmd_efuse read CHIP_ID       //读取芯片chipid
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
bit(0) --> bit(16)
00000000 00000000
00000000 00000000
00000000 00000000
00000000 00000000
00000000 00000000
00000000 00000000
00000000 00000000
00000000 00000000

三 efuse应用接口分析

相关源码见libhardware2/src/lib/efuse/efuse.c

3.1 API详细介绍

int efuse_write(char *name, unsigned char *wr_buf, int start, int size)
功能:写efuse
参数:name //efuse段的名字
wr_buf //写入的数据
start //写入的起始位
size //写入数据的大小
返回值:成功:0
失败:-1
int efuse_read(char *name, unsigned char *buf, int start, int size)
功能:读efuse
参数:name //efuse段的名字
buf //读取数据存放的位置
start //读取的起始位
size //读取数据的大小
返回值:成功:0
失败:-1
int efuse_read_seg_size(char *name)
功能:读efuse某一段的大小
参数:name //efuse段的名字
返回值:成功:0
失败:-1
struct efuse_segment_info *efuse_get_segment_information(void)
功能:获取efuse每个段的信息
参数:无
返回值:成功:存放efuse每个段信息的结构体数组指针
(数组最后一个结构体的segment_name成员为NULL
结构体成员详见中间参数详解
失败:NULL
void efuse_free_information(struct efuse_segment_info *info)
功能:释放存放efuse每个段信息时所申请的空间
参数:info //存放efuse每个段信息的结构体数组指针(结构体成员详见中间参数详解)
返回值:无

中间参数详解

/*efuse段信息结构体*/
struct efuse_segment_info {
unsigned int seg_start; //段的起始位
unsigned int seg_size; //段的大小
char *segment_name; //段的名字
};

efuse使用流程:

  1. efuse_get_segment_information 获取efuse每个段的信息
  2. efuse_write/read efuse读或写
  3. efuse_free_information 释放空间