7.3. 应用示例

可以使用下列接口操作 efuse 区域

  • \ref gx_efuse_init 初始化 efuse 模块

  • \ref gx_efuse_exit 反初始化 efuse 模块

  • \ref gx_efuse_write 写 efuse 数据

  • \ref gx_efuse_reset efuse 复位,复位后写入数据有效

  • \ref gx_efuse_read 读 efuse 数据

  • \ref gx_efuse_get_publicid 读 efuse 数据中的 public id

  • \ref gx_efuse_lock 锁定对应 efuse 分区

  • \ref gx_efuse_get_lock 获取 efuse 分区锁定情况

  • \ref gx_efuse_get_version 获取 efuse 版本信息

7.3.1. 参考代码:

7.3.1.1. 读写 efuse

gx_efuse_init(); //初始化 efuse 模块,操作任何 efuse 接口之前都需要初始化。
gx_efuse_write(start_addr, (unsigned char *)wdata, size); //将wdata buffer中的"size"字节数据写入 efuse 
gx_efuse_reset(); //reset efuse 模块,使写入数据有效
gx_efuse_read(, start_addr, (unsigned char *)rdata, size); //读取 "size" 字节 efuse  数据到 rdata buffer 
gx_efuse_exit(); //反初始化 efuse 模块,当不需要操作 efuse 接口时反初始化

7.3.1.2. Lock efuse 区域

gx_efuse_init(); //初始化 efuse 模块,操作任何 efuse 接口之前都需要初始化。
gx_efuse_lock(section); //lock 对应 section 分区。
gx_efuse_exit(); //反初始化 efuse 模块,当不需要操作 efuse 接口时反初始化

7.3.1.3. 获取 efuse 信息

gx_efuse_init(); //初始化 efuse 模块,操作任何 efuse 接口之前都需要初始化。
gx_efuse_get_publicid(&public_id); //获取 efuse 区域中的 public id 信息。
gx_efuse_get_lock(section); //获取对应 section 的 lock 情况。
gx_efuse_get_version(&version); //获取 efuse 版本信息。
gx_efuse_exit(); //反初始化 efuse 模块,当不需要操作 efuse 接口时反初始化

7.3.1.4. 读取芯片ID和名称

char chipid[CHIP_ID_LEN];
char chipname[CHIP_NAME_LEN];
gx_efuse_init(); //初始化 efuse 模块,操作任何 efuse 接口之前都需要初始化。
gx_efuse_get_chipid(&chipid); //获取 efuse 区域中的芯片ID信息。
gx_efuse_get_chipname(&chipname); //获取 efuse 区域中的芯片名称信息。
gx_efuse_exit(); //反初始化 efuse 模块,当不需要操作 efuse 接口时反初始化

7.3.1.5. 锁定用户区

gx_efuse_init(); //初始化 efuse 模块,操作任何 efuse 接口之前都需要初始化。
gx_efuse_lock_user(); //锁定用户区。
gx_efuse_exit(); //反初始化 efuse 模块,当不需要操作 efuse 接口时反初始化

7.3.1.6. 获取用户区锁定状态

gx_efuse_init(); //初始化 efuse 模块,操作任何 efuse 接口之前都需要初始化。
gx_efuse_get_user_locked(); //获取用户区锁定状态。
gx_efuse_exit(); //反初始化 efuse 模块,当不需要操作 efuse 接口时反初始化

7.3.1.7. 写入用户区

gx_efuse_init(); //初始化 efuse 模块,操作任何 efuse 接口之前都需要初始化。
gx_efuse_write_user_byte(addr, data); //写入用户区。
gx_efuse_exit(); //反初始化 efuse 模块,当不需要操作 efuse 接口时反初始化
addr=6 时,data 最高位是 lock 位,不能写 1,否则写入失败。

7.3.1.8. 读取用户区

gx_efuse_init(); //初始化 efuse 模块,操作任何 efuse 接口之前都需要初始化。
gx_efuse_read_user_byte(addr, data); //读取用户区。
gx_efuse_exit(); //反初始化 efuse 模块,当不需要操作 efuse 接口时反初始化