主要参考资料:
eFuse 管理器: https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-reference/system/efuse.html
技术参考手册 > eFuse控制器: https://www.espressif.com.cn/sites/default/files/documentation/esp32_technical_reference_manual_cn.pdf#efuse
简介
eFuse 是一种微型的一次性可编程保险丝,可以通过“烧录”(即编程)将数据存储到 ESP32 中。
ESP32 有 4 个 eFuse 块,每个块的大小为 256 位(并非所有位都可用于用户参数):
- EFUSE_BLK0 完全用于系统用途;
- EFUSE_BLK1 用于 flash 加密密钥。如果不使用 flash 加密功能,此块也可以用于用户参数;
- EFUSE_BLK2 用于安全启动密钥。如果不使用安全启动功能,此块也可以用于用户参数;
- EFUSE_BLK3 可以部分保留,以存储自定义 MAC 地址,或者完全用于用户参数。请注意,一些位已经用于 ESP-IDF。
eFuse 管理器组件中集合了多种工具和 API,可帮助定义、烧录和访问 eFuse 参数。常用的工具和 API 包括:
- 表格格式,用于在 CSV 文件中定义 eFuse 数据字段
- efuse_table_gen.py 工具,用于生成 CSV 文件指定的 eFuse 数据字段对应的 C 结构体
- 用于读/写 eFuse 数据字段的 C API 集合
下面依次介绍。
表格格式
efuse_table_gen.py 工具
efuse_table_gen.py 工具能够从 CSV 文件生成 C 源文件,其中包含 CSV 文件中定义的 eFuse 字段的对应 C 结构体(类型为 esp_efuse_desc_t)。此外,该工具还会在生成 C 源文件前对 CSV 文件进行检查,以确保:
- eFuse 字段的名称唯一
- eFuse 字段使用的位不重叠
用于读/写 eFuse 数据字段的 C API 集合
可以通过指向描述结构的指针来访问 eFuse 字段。API 函数可以实现一些基本操作: