乐鑫技术交流
直播中

吴湛

11年用户 807经验值
擅长:可编程逻辑
私信 关注
[问答]

为什么无法将主机生成的密钥写入esp32?

开发板型号:esp32s3 n16r8
idf版本:ESP-IDF v5.3-dev-2218-g7cf8cc79a1-dirty

问题描述: 无法在使用手动flash加密时,将主机生成的密码bin文件写入esp32。 报错摘要:“espefuse.py burn_key: error: argument block: invalid choice:” 'flash_encryption'

报错反馈:

espefuse.py --port /dev/ttyACM0 burn_key flash_encryption my_flash_encryption_key.bin


espefuse.py vv4.8.dev1
Connecting....
Detecting chip type... ESP32-S3
usage: espefuse.py burn_key [-h] [--no-write-protect] [--no-read-protect]
                            [--force-write-always] [--show-sensitive-info]
                            {MAC_SPI_8M_0,BLOCK1,BLOCK_SYS_DATA,BLOCK2,BLOCK_USR_DATA,BLOCK3,BLOCK_KEY0,BLOCK4,BLOCK_KEY1,BLOCK5,BLOCK_KEY2,BLOCK6,BLOCK_KEY3,BLOCK7,BLOCK_KEY4,BLOCK8,BLOCK_KEY5,BLOCK9,BLOCK_SYS_DATA2,BLOCK10}
                            keyfile
                            {USER,RESERVED,XTS_AES_256_KEY_1,XTS_AES_256_KEY_2,XTS_AES_128_KEY,HMAC_DOWN_ALL,HMAC_DOWN_JTAG,HMAC_DOWN_DIGITAL_SIGNATURE,HMAC_UP,SECURE_BOOT_DIGEST0,SECURE_BOOT_DIGEST1,SECURE_BOOT_DIGEST2,XTS_AES_256_KEY}
                            [BLOCK] [KEYFILE] [KEYPURPOSE] [BLOCK] [KEYFILE]
                            [KEYPURPOSE] [BLOCK] [KEYFILE] [KEYPURPOSE]
                            [BLOCK] [KEYFILE] [KEYPURPOSE] [BLOCK] [KEYFILE]
                            [KEYPURPOSE] [BLOCK] [KEYFILE] [KEYPURPOSE]
                            [BLOCK] [KEYFILE] [KEYPURPOSE] [BLOCK] [KEYFILE]
                            [KEYPURPOSE] [BLOCK] [KEYFILE] [KEYPURPOSE]
                            [BLOCK] [KEYFILE] [KEYPURPOSE] [BLOCK] [KEYFILE]
                            [KEYPURPOSE] [BLOCK] [KEYFILE] [KEYPURPOSE]
                            [BLOCK] [KEYFILE] [KEYPURPOSE] [BLOCK] [KEYFILE]
                            [KEYPURPOSE] [BLOCK] [KEYFILE] [KEYPURPOSE]
                            [BLOCK] [KEYFILE] [KEYPURPOSE] [BLOCK] [KEYFILE]
                            [KEYPURPOSE] [BLOCK] [KEYFILE] [KEYPURPOSE]
                            [BLOCK] [KEYFILE] [KEYPURPOSE] [BLOCK] [KEYFILE]
                            [KEYPURPOSE]
espefuse.py burn_key: error: argument block: invalid choice: 'flash_encryption' (choose from 'MAC_SPI_8M_0', 'BLOCK1', 'BLOCK_SYS_DATA', 'BLOCK2', 'BLOCK_USR_DATA', 'BLOCK3', 'BLOCK_KEY0', 'BLOCK4', 'BLOCK_KEY1', 'BLOCK5', 'BLOCK_KEY2', 'BLOCK6', 'BLOCK_KEY3', 'BLOCK7', 'BLOCK_KEY4', 'BLOCK8', 'BLOCK_KEY5', 'BLOCK9', 'BLOCK_SYS_DATA2', 'BLOCK10')



[已解决] 后来发现是官方网站有更新的操作命令,将写入命令改为:
espefuse.py --port /dev/ttyACM0 burn_key BLOCK_KEY1 my_n16r8_key.bin XTS_AES_128_KEY
就可以正常写入了。
                           

回帖(1)

小香干

2024-7-19 17:33:43
这个问题可能是由于以下几个原因导致的:

1. **命令格式错误**:在使用`espefuse.py`工具时,确保你遵循了正确的命令格式。根据你提供的错误信息,看起来命令格式可能有问题。正确的命令格式应该是:

   ```bash
   espefuse.py --port /dev/ttyACM0 burn_key flash_encryption my_flash_encryption_key.bin
   ```

   注意,不要在`flash_encryption`和`my_flash_encryption_key.bin`之间添加空格。

2. **参数错误**:错误信息中提到`invalid choice: 'flash_encryption'`,这可能是因为`burn_key`命令的参数不正确。确保你使用的参数是正确的,并且与你使用的ESP-IDF版本兼容。

3. **ESP-IDF版本问题**:你提到使用的是`ESP-IDF v5.3-dev-2218-g7cf8cc79a1-dirty`版本,这是一个开发版本,可能存在一些不稳定因素。尝试使用一个稳定的ESP-IDF版本,例如v4.4或v5.0,看看问题是否仍然存在。

4. **密钥文件格式问题**:确保你的密钥文件(`my_flash_encryption_key.bin`)是正确的格式。密钥文件应该是一个二进制文件,长度为32字节(256位)。

5. **串口连接问题**:确保你的ESP32开发板与计算机之间的串口连接是正确的,并且`/dev/ttyACM0`是正确的设备路径。你可以通过在终端运行`ls /dev/tty.*`来检查可用的串口设备。

6. **烧录权限问题**:确保你有足够的权限来执行烧录操作。在某些情况下,你可能需要使用`sudo`来运行`espefuse.py`命令。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分