一. 文章目的
实践:通过 esp-idf 自带的 espefuse.py 工具自定义 efuse 里的客户 MAC 地址。
注: efuse 里的修改是不可逆的(efuse 里的位变成 1 后不能再次变成 0,所以在同一块 ESP32 上我们基本上只有一次自定义客户 MAC 地址的机会)
二. 操作环境
为了保证测试结果的一致性,采用以下测试环境:
-
esp-idf
编写本文时,使用的 esp-idf release 版本对应的 commit 为 2befd5c。可通过以下命令确认:git log --oneline -1
结果为:
2befd5c Merge branch 'feature/wifi_prov_ext_httpd_v3.3' into 'release/v3.3'
三. 实践过程
-
打开终端,进入到 esp-idf 自带的 espefuse.py 对应目录下,以下是参考指令:
cd esp/esp-idf/components/esptool_py/esptool
在这里,我们可以使用 python espefuse.py --port /dev/ttyUSB0 summary 指令来查询 efuse 当前的状态,在对应的输出中我们主要看 BLK3 的开头部分:
BLK3 Variable Block 3 = 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 R/W
第一组数据 00 代表 CRC 校验,第二到七组 00 00 00 00 00 00 代表客户 MAC 地址。这样说明 BLK3 还处在最初的干净状态。
-
使用 espefuse.py 自定义客户 MAC 地址,指令如下:
python espefuse.py --port /dev/ttyUSB0 burn_custom_mac 11:22:33:44:55:66
然后我们会在终端里看到以下信息:
espefuse.py v2.8 Connecting..... Burning efuse for custom MAC address 00:00:00:00:00:00 (version 0, CRC 0x0) -> 11:22:33:44:55:66 (version 1, CRC 0x48). This is an irreversible operation. Type 'BURN' (all capitals) to continue.
此时在终端里输入 BURN,注意字母要全部大写,输入完成后按下回车即可。
-
确认 客户 MAC 地址是否已经被正确的自定义,在终端里再次使用查询 efuse 当前的状态指令:
python espefuse.py --port /dev/ttyUSB0 summary
在对应的输出中我们主要看 BLK3 的开头部分如下:
BLK3 Variable Block 3 = 48 11 22 33 44 55 66 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 R/W
第一组数据 48 代表 CRC 校验,第二到七组 11 22 33 44 55 66 代表客户 MAC 地址,可以看到我们已经成功进行自定义客户 MAC 地址。这部分对应的软件 API 指南请查看 eFuse Manager 官方文档。
注:如果需要查看对应的指令帮助,可以在指令最后加上 -h,如需要查看招录客户 MAC 地址的指令细节,可以输入 python espefuse.py --port /dev/ttyUSB0 burn_custom_mac -h,这样就能迅速的获得对应的帮助。
来源:CSDN
作者:BigZombieZ
链接:https://blog.csdn.net/zztiger123/article/details/103915844