8.1.5. 设计说明¶
8.1.5.1. 源码说明¶
源代码位于 bsp/artinchip/
:
bsp/artinchip/drv/efuse/drv_efuse.c,eFuse Driver 层实现
bsp/artinchip/drv/efuse/efuse_cmds.c,eFuse Command 实现
bsp/artinchip/hal/efuse/hal_efuse.c,eFuse HAL 层实现
bsp/artinchip/include/hal/hal_efuse.h,eFuse HAL 层接口头文件
8.1.5.2. 模块架构¶
eFuse 驱动 Driver 层采用 直接调用 HAL 层的接口,并将 Driver 层封装成 Command,如果只使用HAL层也可以支持 baremetal 方式的应用场景。

图 8.24 eFuse驱动的软件架构图¶
8.1.5.3. 关键流程设计¶
8.1.5.3.1. 初始化流程¶
eFuse 驱动初始化接口通过命令完成,使用 efuse init 命令。
eFuse 初始化过程,主要步骤有:
初始化模块的clk
导出 Command 到 MSH 节点
8.1.5.4. Driver 层接口设计¶
8.1.5.4.1. drv_efuse_read¶
函数原型 |
int drv_efuse_read(u32 addr, void *data, u32 size) |
---|---|
功能说明 |
eFuse 读取接口 |
参数定义 |
addr - 读取的地址
data - 输出缓冲区
size - 读取数据的长度
|
返回值 |
<= 0,读取失败;其它,成功读取到的数据长度 |
注意事项 |
8.1.5.4.2. drv_efuse_program¶
函数原型 |
int drv_efuse_program(u32 addr, const void *data, u32 size) |
---|---|
功能说明 |
eFuse 写入接口 |
参数定义 |
addr - 写入的地址
data - 输入缓冲区
size - 写入数据的长度
|
返回值 |
<= 0,写入失败;其它,成功写入的数据长度 |
注意事项 |
8.1.5.5. HAL 层接口设计¶
HAL 层的函数接口声明存放在 hal_efuse.h 中,主要接口有:
int hal_efuse_init(void);
int hal_efuse_deinit(void);
int hal_efuse_wait_ready(void);
int hal_efuse_read(u32 wid, u32 *wval);
int hal_efuse_write(u32 wid, u32 wval);