EFUSE
一 相关配置
efuse驱动
efuse相关demo
二 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使用流程:
- efuse_get_segment_information 获取efuse每个段的信息
- efuse_write/read efuse读或写
- efuse_free_information 释放空间