Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

芯片掉固件 (IDFGH-12826) #13796

Open
WonderfulMoment opened this issue May 16, 2024 · 20 comments
Open

芯片掉固件 (IDFGH-12826) #13796

WonderfulMoment opened this issue May 16, 2024 · 20 comments
Labels
Status: Opened Issue is new

Comments

@WonderfulMoment
Copy link

你好,目前这边遇到个问题,设备烧写程序之后,设备发到现场前测试OK的
设备发到客户现场之后发现起不来了,把esp32的芯片拿回来分析发现log打印如下:
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff

重新烧写程序又是正常的

这个现象不是所有芯片都出现,目前有5芯片出现这个情况

请问一下,我们的esp32-s3在什么情况下会丢固件

@espressif-bot espressif-bot added the Status: Opened Issue is new label May 16, 2024
@github-actions github-actions bot changed the title 芯片掉固件 芯片掉固件 (IDFGH-12826) May 16, 2024
@zztiger123
Copy link

您好,

请问您目前烧录的固件大概是怎样的应用?里面会有 flash 读写操作吗?方便读取这五片芯片和正常的芯片的固件相关信息给我们比对吗?指令如下:
esptool.py read_flash xxxxx // 读取芯片固件,xxx 需要按您实际的 flash 大小填写 offset
esptool.py flash_id // 读取 flash id
esptool.py read_flash_status --bytes 3 // 读取 flash 状态

@pancankun123
Copy link

你好,我这边也遇到了一样的问题,丢固件的芯片的信息如下:
C:\Users\143206\Desktop\ESP TOOL\20240506>esptool.exe read_flash_status --bytes 3
esptool.py v4.6.2
Found 2 serial ports
Serial port COM56
Connecting...
Detecting chip type... ESP32-S3
Chip is ESP32-S3 in Secure Download Mode
WARNING: Stub loader is not supported in Secure Download Mode, setting --no-stub
Enabling default SPI flash mode...
Traceback (most recent call last):
File "esptool.py", line 37, in
File "esptool_init_.py", line 1073, in main
File "esptool_init
.py", line 868, in main
File "esptool\cmds.py", line 1171, in read_flash_status
File "esptool\loader.py", line 1359, in read_status
File "esptool\loader.py", line 1296, in run_spiflash_command
File "esptool\loader.py", line 712, in read_reg
File "esptool\loader.py", line 419, in command
esptool.util.UnsupportedCommandError: This command (0xa) is not supported in Secure Download Mode
[19548] Failed to execute script 'esptool' due to unhandled exception!

C:\Users\143206\Desktop\ESP TOOL\20240506>esptool flash_id
esptool.py v4.6.2
Found 2 serial ports
Serial port COM56
Connecting...
Detecting chip type... ESP32-S3
Chip is ESP32-S3 in Secure Download Mode
WARNING: Stub loader is not supported in Secure Download Mode, setting --no-stub
Enabling default SPI flash mode...
Traceback (most recent call last):
File "esptool.py", line 37, in
File "esptool_init_.py", line 1073, in main
File "esptool_init
.py", line 868, in main
File "esptool\cmds.py", line 1088, in flash_id
File "esptool\loader.py", line 891, in flash_id
File "esptool\loader.py", line 1296, in run_spiflash_command
File "esptool\loader.py", line 712, in read_reg
File "esptool\loader.py", line 419, in command
esptool.util.UnsupportedCommandError: This command (0xa) is not supported in Secure Download Mode
[12152] Failed to execute script 'esptool' due to unhandled exception!

C:\Users\143206\Desktop\ESP TOOL\20240506>esptool.exe read_flash
usage: esptool read_flash [-h] [--spi-connection SPI_CONNECTION] [--no-progress] address size filename
esptool read_flash: error: the following arguments are required: address, size, filename

正常芯片的信息如下:
C:\Users\143206\Desktop\ESP TOOL\20240506>esptool.exe read_flash
usage: esptool read_flash [-h] [--spi-connection SPI_CONNECTION] [--no-progress] address size filename
esptool read_flash: error: the following arguments are required: address, size, filename

C:\Users\143206\Desktop\ESP TOOL\20240506>esptool flash_id
esptool.py v4.6.2
Found 2 serial ports
Serial port COM3
Connecting......................................
COM3 failed to connect: Failed to connect to Espressif device: No serial data received.
For troubleshooting steps visit: https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html
Serial port COM22
Connecting...
Detecting chip type... ESP32-S3
Chip is ESP32-S3 in Secure Download Mode
WARNING: Stub loader is not supported in Secure Download Mode, setting --no-stub
Enabling default SPI flash mode...
Traceback (most recent call last):
File "esptool.py", line 37, in
File "esptool_init_.py", line 1073, in main
File "esptool_init
.py", line 868, in main
File "esptool\cmds.py", line 1088, in flash_id
File "esptool\loader.py", line 891, in flash_id
File "esptool\loader.py", line 1296, in run_spiflash_command
File "esptool\loader.py", line 712, in read_reg
File "esptool\loader.py", line 419, in command
esptool.util.UnsupportedCommandError: This command (0xa) is not supported in Secure Download Mode
[23116] Failed to execute script 'esptool' due to unhandled exception!

C:\Users\143206\Desktop\ESP TOOL\20240506>esptool.exe read_flash_status --bytes 3
esptool.py v4.6.2
Found 2 serial ports
Serial port COM3
Connecting......................................
COM3 failed to connect: Failed to connect to Espressif device: No serial data received.
For troubleshooting steps visit: https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html
Serial port COM22
Connecting...
Detecting chip type... ESP32-S3
Chip is ESP32-S3 in Secure Download Mode
WARNING: Stub loader is not supported in Secure Download Mode, setting --no-stub
Enabling default SPI flash mode...
Traceback (most recent call last):
File "esptool.py", line 37, in
File "esptool_init_.py", line 1073, in main
File "esptool_init
.py", line 868, in main
File "esptool\cmds.py", line 1171, in read_flash_status
File "esptool\loader.py", line 1359, in read_status
File "esptool\loader.py", line 1296, in run_spiflash_command
File "esptool\loader.py", line 712, in read_reg
File "esptool\loader.py", line 419, in command
esptool.util.UnsupportedCommandError: This command (0xa) is not supported in Secure Download Mode
[25172] Failed to execute script 'esptool' due to unhandled exception!

我这里烧录的固件都是烧录密钥后烧断保险丝进行加密的,但有一部分芯片出现了丢固件的问题

@pancankun123
Copy link

另外,我这里还有一部分芯片出现了无法烧断保险丝的情况,烧录情况如下:
企业微信截图_17159164268256

这种问题应该如何解决

@WonderfulMoment
Copy link
Author

您好,

请问您目前烧录的固件大概是怎样的应用?里面会有 flash 读写操作吗?方便读取这五片芯片和正常的芯片的固件相关信息给我们比对吗?指令如下: esptool.py read_flash xxxxx // 读取芯片固件,xxx 需要按您实际的 flash 大小填写 offset esptool.py flash_id // 读取 flash id esptool.py read_flash_status --bytes 3 // 读取 flash 状态

谢谢回复,esp32主要是作为网卡使用的,就是通用的wifi功能+一个外接4G模组,没有特殊的flash读写操作,

  1. flash id和 flash status这两条能正常读取信息,read_flash命令出错(正常芯片和问题芯片都是同样的错误,尝试不同的波特率和读取长度降低,错误是一样的),输出内容如下:

esptool.py -p /dev/ttyACM0 -b 230400 read_flash 0 0x20000 flash_contents.bin

esptool.py v4.7.0
Serial port /dev/ttyACM0
Connecting...
Detecting chip type... ESP32-S3
Chip is ESP32-S3 (QFN56) (revision v0.2)
Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3)
Crystal is 40MHz
MAC: 48:27:e2:2d:7f:f0
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 230400
Changed.

A fatal error occurred: Corrupt data, expected 0x1000 bytes but received 0x7dc bytes

  1. 读取的flash id 和 flash status 的内容如下:

1), 其中一个问题芯片的flash id和flash status的内容
$ esptool.py -p /dev/ttyACM0 flash_id

esptool.py v4.7.0
Serial port /dev/ttyACM0
Connecting...
Detecting chip type... ESP32-S3
Chip is ESP32-S3 (QFN56) (revision v0.2)
Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3)
Crystal is 40MHz
MAC: 80:65:99:d7:81:b8
Uploading stub...
Running stub...
Stub running...
Manufacturer: c8
Device: 4017
Detected flash size: 8MB
Flash type set in eFuse: quad (4 data lines)
Hard resetting via RTS pin...

$ esptool.py -p /dev/ttyACM0 read_flash_status --bytes 3

esptool.py v4.7.0
Serial port /dev/ttyACM0
Connecting...
Detecting chip type... ESP32-S3
Chip is ESP32-S3 (QFN56) (revision v0.2)
Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3)
Crystal is 40MHz
MAC: 80:65:99:d7:81:b8
Uploading stub...
Running stub...
Stub running...
Status value: 0x200200
Hard resetting via RTS pin...

2), 正常使用的卡读取的flash id和flash status 如下:
$ esptool.py -p /dev/ttyACM0 flash_id

esptool.py v4.7.0
Serial port /dev/ttyACM0
Connecting...
Detecting chip type... ESP32-S3
Chip is ESP32-S3 (QFN56) (revision v0.2)
Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3)
Crystal is 40MHz
MAC: 48:27:e2:2d:7f:f0
Uploading stub...
Running stub...
Stub running...
Manufacturer: c8
Device: 4017
Detected flash size: 8MB
Flash type set in eFuse: quad (4 data lines)
Hard resetting via RTS pin...

$ esptool.py -p /dev/ttyACM0 read_flash_status --bytes 3

esptool.py v4.7.0
Serial port /dev/ttyACM0
Connecting...
Detecting chip type... ESP32-S3
Chip is ESP32-S3 (QFN56) (revision v0.2)
Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3)
Crystal is 40MHz
MAC: 48:27:e2:2d:7f:f0
Uploading stub...
Running stub...
Stub running...
Status value: 0x200000
Hard resetting via RTS pin...

@zztiger123
Copy link

另外,我这里还有一部分芯片出现了无法烧断保险丝的情况,烧录情况如下: 企业微信截图_17159164268256

这种问题应该如何解决

这个不算是个问题,从 log 可以看到你要写入的 efuse 位已经都是 1 了,所以默认不做操作。

@zztiger123
Copy link

您好,
请问您目前烧录的固件大概是怎样的应用?里面会有 flash 读写操作吗?方便读取这五片芯片和正常的芯片的固件相关信息给我们比对吗?指令如下: esptool.py read_flash xxxxx // 读取芯片固件,xxx 需要按您实际的 flash 大小填写 offset esptool.py flash_id // 读取 flash id esptool.py read_flash_status --bytes 3 // 读取 flash 状态

谢谢回复,esp32主要是作为网卡使用的,就是通用的wifi功能+一个外接4G模组,没有特殊的flash读写操作,

  1. flash id和 flash status这两条能正常读取信息,read_flash命令出错(正常芯片和问题芯片都是同样的错误,尝试不同的波特率和读取长度降低,错误是一样的),输出内容如下:

esptool.py -p /dev/ttyACM0 -b 230400 read_flash 0 0x20000 flash_contents.bin

esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Changing baud rate to 230400 Changed.

A fatal error occurred: Corrupt data, expected 0x1000 bytes but received 0x7dc bytes

  1. 读取的flash id 和 flash status 的内容如下:

1), 其中一个问题芯片的flash id和flash status的内容 $ esptool.py -p /dev/ttyACM0 flash_id

esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 80:65:99:d7:81:b8 Uploading stub... Running stub... Stub running... Manufacturer: c8 Device: 4017 Detected flash size: 8MB Flash type set in eFuse: quad (4 data lines) Hard resetting via RTS pin...

$ esptool.py -p /dev/ttyACM0 read_flash_status --bytes 3

esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 80:65:99:d7:81:b8 Uploading stub... Running stub... Stub running... Status value: 0x200200 Hard resetting via RTS pin...

2), 正常使用的卡读取的flash id和flash status 如下: $ esptool.py -p /dev/ttyACM0 flash_id

esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Manufacturer: c8 Device: 4017 Detected flash size: 8MB Flash type set in eFuse: quad (4 data lines) Hard resetting via RTS pin...

$ esptool.py -p /dev/ttyACM0 read_flash_status --bytes 3

esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Status value: 0x200000 Hard resetting via RTS pin...

在 read flash 指令里加上 --no-stub 试试。比如 esptool.py --no-stub read_flash 0 0x100000 flash_dump.bin

然后一直是这五个 S3 每过一段时间,固件就会稳定消失吗?有没有一定的规律?

@WonderfulMoment
Copy link
Author

您好,
请问您目前烧录的固件大概是怎样的应用?里面会有 flash 读写操作吗?方便读取这五片芯片和正常的芯片的固件相关信息给我们比对吗?指令如下: esptool.py read_flash xxxxx // 读取芯片固件,xxx 需要按您实际的 flash 大小填写 offset esptool.py flash_id // 读取 flash id esptool.py read_flash_status --bytes 3 // 读取 flash 状态

谢谢回复,esp32主要是作为网卡使用的,就是通用的wifi功能+一个外接4G模组,没有特殊的flash读写操作,

  1. flash id和 flash status这两条能正常读取信息,read_flash命令出错(正常芯片和问题芯片都是同样的错误,尝试不同的波特率和读取长度降低,错误是一样的),输出内容如下:

esptool.py -p /dev/ttyACM0 -b 230400 read_flash 0 0x20000 flash_contents.bin
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Changing baud rate to 230400 Changed.
A fatal error occurred: Corrupt data, expected 0x1000 bytes but received 0x7dc bytes

  1. 读取的flash id 和 flash status 的内容如下:

1), 其中一个问题芯片的flash id和flash status的内容 $ esptool.py -p /dev/ttyACM0 flash_id
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 80:65:99:d7:81:b8 Uploading stub... Running stub... Stub running... Manufacturer: c8 Device: 4017 Detected flash size: 8MB Flash type set in eFuse: quad (4 data lines) Hard resetting via RTS pin...
$ esptool.py -p /dev/ttyACM0 read_flash_status --bytes 3
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 80:65:99:d7:81:b8 Uploading stub... Running stub... Stub running... Status value: 0x200200 Hard resetting via RTS pin...
2), 正常使用的卡读取的flash id和flash status 如下: $ esptool.py -p /dev/ttyACM0 flash_id
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Manufacturer: c8 Device: 4017 Detected flash size: 8MB Flash type set in eFuse: quad (4 data lines) Hard resetting via RTS pin...
$ esptool.py -p /dev/ttyACM0 read_flash_status --bytes 3
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Status value: 0x200000 Hard resetting via RTS pin...

在 read flash 指令里加上 --no-stub 试试。比如 esptool.py --no-stub read_flash 0 0x100000 flash_dump.bin

然后一直是这五个 S3 每过一段时间,固件就会稳定消失吗?有没有一定的规律?

没有专门正对这几个卡做跟踪测试,其中有一个卡重新烧录程序是能正常运行的,其他几个卡没进行恢复,为了保留环境给到你们分析,家里测试的样片没见到丢程序的

生产的情况是,第一批做的小批量验证,上线的200块,运行了两个月没看到有异常的;
前几天重新生产了一千台,部分上电之后就发现有这5块程序掉了,还有大部分没有上电,所以还不知道会不会还有别的掉程序的

附件是读到的flash的数据,一个是有问题的flash内容一个是家里用的没有问题的读出来的内容,应为github不支持bin文件,所以改后缀为txt了,请查阅[
flash_contents.txt
问题芯片-flash_contents.txt
](url)

@pancankun123
Copy link

但是即使efuse 位已经都是 1了,还是无法正确烧录文件,另外,我这边烧录固件的时候,已经在烧录指令里面加 指令里加上 --no-stub和--force,一部分固机烧录重新上电后还是出现了丢固件的问题

另外,我这里还有一部分芯片出现了无法烧断保险丝的情况,烧录情况如下:企业微信截图_17159164268256
这种问题应该如何解决

这个不算是个问题,从 log 可以看到你要写入的 efuse 位已经都是 1 了,所以默认不做操作。

但是即使efuse 位已经都是 1了,还是无法正确烧录文件,另外,我这边烧录固件的时候,已经在烧录指令里面加 指令里加上 --no-stub和--force,一部分固机烧录重新上电后还是出现了丢固件的问题

@zztiger123
Copy link

目前你的 efuse summary 是多少?

通过 espefuse.exe summary 查看 SPI_BOOT_CRYPT_CNT 的值

但是即使efuse 位已经都是 1了,还是无法正确烧录文件,另外,我这边烧录固件的时候,已经在烧录指令里面加 指令里加上 --no-stub和--force,一部分固机烧录重新上电后还是出现了丢固件的问题

另外,我这里还有一部分芯片出现了无法烧断保险丝的情况,烧录情况如下:企业微信截图_17159164268256
这种问题应该如何解决

这个不算是个问题,从 log 可以看到你要写入的 efuse 位已经都是 1 了,所以默认不做操作。

但是即使efuse 位已经都是 1了,还是无法正确烧录文件,另外,我这边烧录固件的时候,已经在烧录指令里面加 指令里加上 --no-stub和--force,一部分固机烧录重新上电后还是出现了丢固件的问题

目前你的 efuse summary 是多少?

通过 espefuse.exe summary 查看 SPI_BOOT_CRYPT_CNT 和 DIS_DOWNLOAD_MODE 的值。

目前您的问题直接是没有成功烧录导致芯片里没有固件吗?如果是这样,那和另一个用户的问题有区别

@zztiger123
Copy link

您好,
请问您目前烧录的固件大概是怎样的应用?里面会有 flash 读写操作吗?方便读取这五片芯片和正常的芯片的固件相关信息给我们比对吗?指令如下: esptool.py read_flash xxxxx // 读取芯片固件,xxx 需要按您实际的 flash 大小填写 offset esptool.py flash_id // 读取 flash id esptool.py read_flash_status --bytes 3 // 读取 flash 状态

谢谢回复,esp32主要是作为网卡使用的,就是通用的wifi功能+一个外接4G模组,没有特殊的flash读写操作,

  1. flash id和 flash status这两条能正常读取信息,read_flash命令出错(正常芯片和问题芯片都是同样的错误,尝试不同的波特率和读取长度降低,错误是一样的),输出内容如下:

esptool.py -p /dev/ttyACM0 -b 230400 read_flash 0 0x20000 flash_contents.bin
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Changing baud rate to 230400 Changed.
A fatal error occurred: Corrupt data, expected 0x1000 bytes but received 0x7dc bytes

  1. 读取的flash id 和 flash status 的内容如下:

1), 其中一个问题芯片的flash id和flash status的内容 $ esptool.py -p /dev/ttyACM0 flash_id
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 80:65:99:d7:81:b8 Uploading stub... Running stub... Stub running... Manufacturer: c8 Device: 4017 Detected flash size: 8MB Flash type set in eFuse: quad (4 data lines) Hard resetting via RTS pin...
$ esptool.py -p /dev/ttyACM0 read_flash_status --bytes 3
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 80:65:99:d7:81:b8 Uploading stub... Running stub... Stub running... Status value: 0x200200 Hard resetting via RTS pin...
2), 正常使用的卡读取的flash id和flash status 如下: $ esptool.py -p /dev/ttyACM0 flash_id
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Manufacturer: c8 Device: 4017 Detected flash size: 8MB Flash type set in eFuse: quad (4 data lines) Hard resetting via RTS pin...
$ esptool.py -p /dev/ttyACM0 read_flash_status --bytes 3
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Status value: 0x200000 Hard resetting via RTS pin...

在 read flash 指令里加上 --no-stub 试试。比如 esptool.py --no-stub read_flash 0 0x100000 flash_dump.bin
然后一直是这五个 S3 每过一段时间,固件就会稳定消失吗?有没有一定的规律?

没有专门正对这几个卡做跟踪测试,其中有一个卡重新烧录程序是能正常运行的,其他几个卡没进行恢复,为了保留环境给到你们分析,家里测试的样片没见到丢程序的

生产的情况是,第一批做的小批量验证,上线的200块,运行了两个月没看到有异常的; 前几天重新生产了一千台,部分上电之后就发现有这5块程序掉了,还有大部分没有上电,所以还不知道会不会还有别的掉程序的

附件是读到的flash的数据,一个是有问题的flash内容一个是家里用的没有问题的读出来的内容,应为github不支持bin文件,所以改后缀为txt了,请查阅[ flash_contents.txt 问题芯片-flash_contents.txt ](url)

分析了下您提供的 flash 文件,确实异常的 S3 flash 里面为空了。

您是用的什么方式烧录的固件?如果是 flash download tool,在以下 log 文件夹里可以查询烧录了哪些 mac 地址对应的芯片,可以先看看这些芯片是否真的有成功烧录过固件:
image

@pancankun123
Copy link

espefuse.exe summary

一般情况下,我的设备是需要烧录密钥和熔断保险丝的,espefuse.exe --port COM60 --chip esp32s3 --do-not-confirm burn_key BLOCK_KEY0 CYH00124012202511.bin XTS_AES_128_KEY
espefuse.exe --port COM60 --chip esp32s3 --do-not-confirm burn_efuse DIS_DOWNLOAD_MANUAL_ENCRYPT 1
espefuse.exe --port COM60 --chip esp32s3 --do-not-confirm burn_efuse DIS_DOWNLOAD_DCACHE 1
espefuse.exe --port COM60 --chip esp32s3 --do-not-confirm burn_efuse DIS_DOWNLOAD_ICACHE 1
espefuse.exe --port COM60 --chip esp32s3 --do-not-confirm burn_efuse DIS_USB_JTAG 1
espefuse.exe --port COM60 --chip esp32s3 --do-not-confirm burn_efuse DIS_DIRECT_BOOT 1
espefuse.exe --port COM60 --chip esp32s3 --do-not-confirm burn_efuse HARD_DIS_JTAG 1
espefuse.exe --port COM60 --chip esp32s3 --do-not-confirm burn_bit BLOCK0 1
espefuse.exe --port COM60 --chip esp32s3 --do-not-confirm burn_bit BLOCK0 2
espefuse.exe --port COM60 --chip esp32s3 --do-not-confirm burn_efuse SPI_BOOT_CRYPT_CNT 7
espefuse.exe --port COM60 --chip esp32s3 --do-not-confirm burn_bit BLOCK0 4
执行完以上步骤后,芯片是无法通过efuse summary 查询到里面信息了的,但现在 SPI_BOOT_CRYPT_CNT 的值不可以写入,芯片的信息也可以查询,那就是没有烧断保险丝加密成功,那我应该可以重复上面的步骤,继续烧断保险丝,但是一直显示SPI_BOOT_CRYPT_CNT 的值已经写入1了,不可更改,这个时候如果我强行烧录芯片的固件,烧录后芯片可以启动,但我需要读取到的信息是无法读取的。
另外,我这边也存在另一个用户的问题,我这边的问题和另一个用户的区别就是我这边需要先烧录密钥和保险丝,我这边的问题是烧录密钥和保险丝都是没有问题的通过 espefuse.exe summary 也无法查看芯片的信息,芯片已经加密成功,但是这个时候烧录加密后的固件,就会出现和另一个用户一样的问题。我这边的设备是最开始已经烧录成功了,也正确的读取到了信息,放置一段时间后出现了丢固件的问题,这是一部分的芯片,另一部分芯片是烧录完成后就出现丢固件问题

@zztiger123
Copy link

zztiger123 commented May 20, 2024

espefuse.exe summary

一般情况下,我的设备是需要烧录密钥和熔断保险丝的,espefuse.exe --port COM60 --chip esp32s3 --do-not-confirm burn_key BLOCK_KEY0 CYH00124012202511.bin XTS_AES_128_KEY espefuse.exe --port COM60 --chip esp32s3 --do-not-confirm burn_efuse DIS_DOWNLOAD_MANUAL_ENCRYPT 1 espefuse.exe --port COM60 --chip esp32s3 --do-not-confirm burn_efuse DIS_DOWNLOAD_DCACHE 1 espefuse.exe --port COM60 --chip esp32s3 --do-not-confirm burn_efuse DIS_DOWNLOAD_ICACHE 1 espefuse.exe --port COM60 --chip esp32s3 --do-not-confirm burn_efuse DIS_USB_JTAG 1 espefuse.exe --port COM60 --chip esp32s3 --do-not-confirm burn_efuse DIS_DIRECT_BOOT 1 espefuse.exe --port COM60 --chip esp32s3 --do-not-confirm burn_efuse HARD_DIS_JTAG 1 espefuse.exe --port COM60 --chip esp32s3 --do-not-confirm burn_bit BLOCK0 1 espefuse.exe --port COM60 --chip esp32s3 --do-not-confirm burn_bit BLOCK0 2 espefuse.exe --port COM60 --chip esp32s3 --do-not-confirm burn_efuse SPI_BOOT_CRYPT_CNT 7 espefuse.exe --port COM60 --chip esp32s3 --do-not-confirm burn_bit BLOCK0 4 执行完以上步骤后,芯片是无法通过efuse summary 查询到里面信息了的,但现在 SPI_BOOT_CRYPT_CNT 的值不可以写入,芯片的信息也可以查询,那就是没有烧断保险丝加密成功,那我应该可以重复上面的步骤,继续烧断保险丝,但是一直显示SPI_BOOT_CRYPT_CNT 的值已经写入1了,不可更改,这个时候如果我强行烧录芯片的固件,烧录后芯片可以启动,但我需要读取到的信息是无法读取的。 另外,我这边也存在另一个用户的问题,我这边的问题和另一个用户的区别就是我这边需要先烧录密钥和保险丝,我这边的问题是烧录密钥和保险丝都是没有问题的通过 espefuse.exe summary 也无法查看芯片的信息,芯片已经加密成功,但是这个时候烧录加密后的固件,就会出现和另一个用户一样的问题。我这边的设备是最开始已经烧录成功了,也正确的读取到了信息,放置一段时间后出现了丢固件的问题,这是一部分的芯片,另一部分芯片是烧录完成后就出现丢固件问题

这几个损坏的板子,此时下载固件和芯片运行的 log 分别是怎样的?

@WonderfulMoment
Copy link
Author

您好,
请问您目前烧录的固件大概是怎样的应用?里面会有 flash 读写操作吗?方便读取这五片芯片和正常的芯片的固件相关信息给我们比对吗?指令如下: esptool.py read_flash xxxxx // 读取芯片固件,xxx 需要按您实际的 flash 大小填写 offset esptool.py flash_id // 读取 flash id esptool.py read_flash_status --bytes 3 // 读取 flash 状态

谢谢回复,esp32主要是作为网卡使用的,就是通用的wifi功能+一个外接4G模组,没有特殊的flash读写操作,

  1. flash id和 flash status这两条能正常读取信息,read_flash命令出错(正常芯片和问题芯片都是同样的错误,尝试不同的波特率和读取长度降低,错误是一样的),输出内容如下:

esptool.py -p /dev/ttyACM0 -b 230400 read_flash 0 0x20000 flash_contents.bin
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Changing baud rate to 230400 Changed.
A fatal error occurred: Corrupt data, expected 0x1000 bytes but received 0x7dc bytes

  1. 读取的flash id 和 flash status 的内容如下:

1), 其中一个问题芯片的flash id和flash status的内容 $ esptool.py -p /dev/ttyACM0 flash_id
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 80:65:99:d7:81:b8 Uploading stub... Running stub... Stub running... Manufacturer: c8 Device: 4017 Detected flash size: 8MB Flash type set in eFuse: quad (4 data lines) Hard resetting via RTS pin...
$ esptool.py -p /dev/ttyACM0 read_flash_status --bytes 3
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 80:65:99:d7:81:b8 Uploading stub... Running stub... Stub running... Status value: 0x200200 Hard resetting via RTS pin...
2), 正常使用的卡读取的flash id和flash status 如下: $ esptool.py -p /dev/ttyACM0 flash_id
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Manufacturer: c8 Device: 4017 Detected flash size: 8MB Flash type set in eFuse: quad (4 data lines) Hard resetting via RTS pin...
$ esptool.py -p /dev/ttyACM0 read_flash_status --bytes 3
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Status value: 0x200000 Hard resetting via RTS pin...

在 read flash 指令里加上 --no-stub 试试。比如 esptool.py --no-stub read_flash 0 0x100000 flash_dump.bin
然后一直是这五个 S3 每过一段时间,固件就会稳定消失吗?有没有一定的规律?

没有专门正对这几个卡做跟踪测试,其中有一个卡重新烧录程序是能正常运行的,其他几个卡没进行恢复,为了保留环境给到你们分析,家里测试的样片没见到丢程序的
生产的情况是,第一批做的小批量验证,上线的200块,运行了两个月没看到有异常的; 前几天重新生产了一千台,部分上电之后就发现有这5块程序掉了,还有大部分没有上电,所以还不知道会不会还有别的掉程序的
附件是读到的flash的数据,一个是有问题的flash内容一个是家里用的没有问题的读出来的内容,应为github不支持bin文件,所以改后缀为txt了,请查阅[ flash_contents.txt 问题芯片-flash_contents.txt ](url)

分析了下您提供的 flash 文件,确实异常的 S3 flash 里面为空了。

您是用的什么方式烧录的固件?如果是 flash download tool,在以下 log 文件夹里可以查询烧录了哪些 mac 地址对应的芯片,可以先看看这些芯片是否真的有成功烧录过固件: image

工厂那边说,他们电脑坏了,所以部分升级的日志没有找到,还有其它方式可以确认是否烧写过固件么?

@zztiger123
Copy link

您好,
请问您目前烧录的固件大概是怎样的应用?里面会有 flash 读写操作吗?方便读取这五片芯片和正常的芯片的固件相关信息给我们比对吗?指令如下: esptool.py read_flash xxxxx // 读取芯片固件,xxx 需要按您实际的 flash 大小填写 offset esptool.py flash_id // 读取 flash id esptool.py read_flash_status --bytes 3 // 读取 flash 状态

谢谢回复,esp32主要是作为网卡使用的,就是通用的wifi功能+一个外接4G模组,没有特殊的flash读写操作,

  1. flash id和 flash status这两条能正常读取信息,read_flash命令出错(正常芯片和问题芯片都是同样的错误,尝试不同的波特率和读取长度降低,错误是一样的),输出内容如下:

esptool.py -p /dev/ttyACM0 -b 230400 read_flash 0 0x20000 flash_contents.bin
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Changing baud rate to 230400 Changed.
A fatal error occurred: Corrupt data, expected 0x1000 bytes but received 0x7dc bytes

  1. 读取的flash id 和 flash status 的内容如下:

1), 其中一个问题芯片的flash id和flash status的内容 $ esptool.py -p /dev/ttyACM0 flash_id
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 80:65:99:d7:81:b8 Uploading stub... Running stub... Stub running... Manufacturer: c8 Device: 4017 Detected flash size: 8MB Flash type set in eFuse: quad (4 data lines) Hard resetting via RTS pin...
$ esptool.py -p /dev/ttyACM0 read_flash_status --bytes 3
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 80:65:99:d7:81:b8 Uploading stub... Running stub... Stub running... Status value: 0x200200 Hard resetting via RTS pin...
2), 正常使用的卡读取的flash id和flash status 如下: $ esptool.py -p /dev/ttyACM0 flash_id
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Manufacturer: c8 Device: 4017 Detected flash size: 8MB Flash type set in eFuse: quad (4 data lines) Hard resetting via RTS pin...
$ esptool.py -p /dev/ttyACM0 read_flash_status --bytes 3
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Status value: 0x200000 Hard resetting via RTS pin...

在 read flash 指令里加上 --no-stub 试试。比如 esptool.py --no-stub read_flash 0 0x100000 flash_dump.bin
然后一直是这五个 S3 每过一段时间,固件就会稳定消失吗?有没有一定的规律?

没有专门正对这几个卡做跟踪测试,其中有一个卡重新烧录程序是能正常运行的,其他几个卡没进行恢复,为了保留环境给到你们分析,家里测试的样片没见到丢程序的
生产的情况是,第一批做的小批量验证,上线的200块,运行了两个月没看到有异常的; 前几天重新生产了一千台,部分上电之后就发现有这5块程序掉了,还有大部分没有上电,所以还不知道会不会还有别的掉程序的
附件是读到的flash的数据,一个是有问题的flash内容一个是家里用的没有问题的读出来的内容,应为github不支持bin文件,所以改后缀为txt了,请查阅[ flash_contents.txt 问题芯片-flash_contents.txt ](url)

分析了下您提供的 flash 文件,确实异常的 S3 flash 里面为空了。
您是用的什么方式烧录的固件?如果是 flash download tool,在以下 log 文件夹里可以查询烧录了哪些 mac 地址对应的芯片,可以先看看这些芯片是否真的有成功烧录过固件: image

工厂那边说,他们电脑坏了,所以部分升级的日志没有找到,还有其它方式可以确认是否烧写过固件么?

目前应该没有别的方法了,因为 flash 里的记录是可以被全部擦除的。不过您重新烧录固件后恢复正常的那片 S3,目前是否继续复现问题?

@WonderfulMoment
Copy link
Author

您好,
请问您目前烧录的固件大概是怎样的应用?里面会有 flash 读写操作吗?方便读取这五片芯片和正常的芯片的固件相关信息给我们比对吗?指令如下: esptool.py read_flash xxxxx // 读取芯片固件,xxx 需要按您实际的 flash 大小填写 offset esptool.py flash_id // 读取 flash id esptool.py read_flash_status --bytes 3 // 读取 flash 状态

谢谢回复,esp32主要是作为网卡使用的,就是通用的wifi功能+一个外接4G模组,没有特殊的flash读写操作,

  1. flash id和 flash status这两条能正常读取信息,read_flash命令出错(正常芯片和问题芯片都是同样的错误,尝试不同的波特率和读取长度降低,错误是一样的),输出内容如下:

esptool.py -p /dev/ttyACM0 -b 230400 read_flash 0 0x20000 flash_contents.bin
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Changing baud rate to 230400 Changed.
A fatal error occurred: Corrupt data, expected 0x1000 bytes but received 0x7dc bytes

  1. 读取的flash id 和 flash status 的内容如下:

1), 其中一个问题芯片的flash id和flash status的内容 $ esptool.py -p /dev/ttyACM0 flash_id
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 80:65:99:d7:81:b8 Uploading stub... Running stub... Stub running... Manufacturer: c8 Device: 4017 Detected flash size: 8MB Flash type set in eFuse: quad (4 data lines) Hard resetting via RTS pin...
$ esptool.py -p /dev/ttyACM0 read_flash_status --bytes 3
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 80:65:99:d7:81:b8 Uploading stub... Running stub... Stub running... Status value: 0x200200 Hard resetting via RTS pin...
2), 正常使用的卡读取的flash id和flash status 如下: $ esptool.py -p /dev/ttyACM0 flash_id
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Manufacturer: c8 Device: 4017 Detected flash size: 8MB Flash type set in eFuse: quad (4 data lines) Hard resetting via RTS pin...
$ esptool.py -p /dev/ttyACM0 read_flash_status --bytes 3
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Status value: 0x200000 Hard resetting via RTS pin...

在 read flash 指令里加上 --no-stub 试试。比如 esptool.py --no-stub read_flash 0 0x100000 flash_dump.bin
然后一直是这五个 S3 每过一段时间,固件就会稳定消失吗?有没有一定的规律?

没有专门正对这几个卡做跟踪测试,其中有一个卡重新烧录程序是能正常运行的,其他几个卡没进行恢复,为了保留环境给到你们分析,家里测试的样片没见到丢程序的
生产的情况是,第一批做的小批量验证,上线的200块,运行了两个月没看到有异常的; 前几天重新生产了一千台,部分上电之后就发现有这5块程序掉了,还有大部分没有上电,所以还不知道会不会还有别的掉程序的
附件是读到的flash的数据,一个是有问题的flash内容一个是家里用的没有问题的读出来的内容,应为github不支持bin文件,所以改后缀为txt了,请查阅[ flash_contents.txt 问题芯片-flash_contents.txt ](url)

分析了下您提供的 flash 文件,确实异常的 S3 flash 里面为空了。
您是用的什么方式烧录的固件?如果是 flash download tool,在以下 log 文件夹里可以查询烧录了哪些 mac 地址对应的芯片,可以先看看这些芯片是否真的有成功烧录过固件: image

工厂那边说,他们电脑坏了,所以部分升级的日志没有找到,还有其它方式可以确认是否烧写过固件么?

目前应该没有别的方法了,因为 flash 里的记录是可以被全部擦除的。不过您重新烧录固件后恢复正常的那片 S3,目前是否继续复现问题?

你好,目前有一块料是客户现场上用了一段时间才出问题的,所以这块料肯定是正常烧录过的,log打印也是 invalid header: 0xffffffff,但是这颗料出问题之后,usb-jtag口也无法识别了,目前只能看到串口打印,但是用打印的串口进行flash内容读取没有成功,请问有没有办法从串口读取flash内容?

@WonderfulMoment
Copy link
Author

您好,
请问您目前烧录的固件大概是怎样的应用?里面会有 flash 读写操作吗?方便读取这五片芯片和正常的芯片的固件相关信息给我们比对吗?指令如下: esptool.py read_flash xxxxx // 读取芯片固件,xxx 需要按您实际的 flash 大小填写 offset esptool.py flash_id // 读取 flash id esptool.py read_flash_status --bytes 3 // 读取 flash 状态

谢谢回复,esp32主要是作为网卡使用的,就是通用的wifi功能+一个外接4G模组,没有特殊的flash读写操作,

  1. flash id和 flash status这两条能正常读取信息,read_flash命令出错(正常芯片和问题芯片都是同样的错误,尝试不同的波特率和读取长度降低,错误是一样的),输出内容如下:

esptool.py -p /dev/ttyACM0 -b 230400 read_flash 0 0x20000 flash_contents.bin
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Changing baud rate to 230400 Changed.
A fatal error occurred: Corrupt data, expected 0x1000 bytes but received 0x7dc bytes

  1. 读取的flash id 和 flash status 的内容如下:

1), 其中一个问题芯片的flash id和flash status的内容 $ esptool.py -p /dev/ttyACM0 flash_id
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 80:65:99:d7:81:b8 Uploading stub... Running stub... Stub running... Manufacturer: c8 Device: 4017 Detected flash size: 8MB Flash type set in eFuse: quad (4 data lines) Hard resetting via RTS pin...
$ esptool.py -p /dev/ttyACM0 read_flash_status --bytes 3
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 80:65:99:d7:81:b8 Uploading stub... Running stub... Stub running... Status value: 0x200200 Hard resetting via RTS pin...
2), 正常使用的卡读取的flash id和flash status 如下: $ esptool.py -p /dev/ttyACM0 flash_id
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Manufacturer: c8 Device: 4017 Detected flash size: 8MB Flash type set in eFuse: quad (4 data lines) Hard resetting via RTS pin...
$ esptool.py -p /dev/ttyACM0 read_flash_status --bytes 3
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Status value: 0x200000 Hard resetting via RTS pin...

在 read flash 指令里加上 --no-stub 试试。比如 esptool.py --no-stub read_flash 0 0x100000 flash_dump.bin
然后一直是这五个 S3 每过一段时间,固件就会稳定消失吗?有没有一定的规律?

没有专门正对这几个卡做跟踪测试,其中有一个卡重新烧录程序是能正常运行的,其他几个卡没进行恢复,为了保留环境给到你们分析,家里测试的样片没见到丢程序的
生产的情况是,第一批做的小批量验证,上线的200块,运行了两个月没看到有异常的; 前几天重新生产了一千台,部分上电之后就发现有这5块程序掉了,还有大部分没有上电,所以还不知道会不会还有别的掉程序的
附件是读到的flash的数据,一个是有问题的flash内容一个是家里用的没有问题的读出来的内容,应为github不支持bin文件,所以改后缀为txt了,请查阅[ flash_contents.txt 问题芯片-flash_contents.txt ](url)

分析了下您提供的 flash 文件,确实异常的 S3 flash 里面为空了。
您是用的什么方式烧录的固件?如果是 flash download tool,在以下 log 文件夹里可以查询烧录了哪些 mac 地址对应的芯片,可以先看看这些芯片是否真的有成功烧录过固件: image

工厂那边说,他们电脑坏了,所以部分升级的日志没有找到,还有其它方式可以确认是否烧写过固件么?

目前应该没有别的方法了,因为 flash 里的记录是可以被全部擦除的。不过您重新烧录固件后恢复正常的那片 S3,目前是否继续复现问题?

你好,目前有一块料是客户现场上用了一段时间才出问题的,所以这块料肯定是正常烧录过的,log打印也是 invalid header: 0xffffffff,但是这颗料出问题之后,usb-jtag口也无法识别了,目前只能看到串口打印,但是用打印的串口进行flash内容读取没有成功,请问有没有办法从串口读取flash内容?

=================================

项目上运行一段时间之后才出问题的这科料的状态和flash也读出来了,内容如下及附件,麻烦看一下是什么问题,谢谢
flash_dump.txt

PS C:\Espressif\frameworks\esp-idf-v4.4.5> esptool.py -p COM24 flash_id
esptool.py v3.3.4-dev
Serial port COM24
Connecting....
Detecting chip type... ESP32-S3
Chip is ESP32-S3 (revision v0.2)
Features: WiFi, BLE
Crystal is 40MHz
MAC: 80:65:99:d7:7e:e8
Uploading stub...
Running stub...
Stub running...
Manufacturer: c8
Device: 4017
Detected flash size: 8MB
Hard resetting via RTS pin...
PS C:\Espressif\frameworks\esp-idf-v4.4.5>
PS C:\Espressif\frameworks\esp-idf-v4.4.5> esptool.py -p COM24 read_flash_status --bytes 3
esptool.py v3.3.4-dev
Serial port COM24
Connecting...
Detecting chip type... ESP32-S3
Chip is ESP32-S3 (revision v0.2)
Features: WiFi, BLE
Crystal is 40MHz
MAC: 80:65:99:d7:7e:e8
Stub is already running. No upload is necessary.
Status value: 0x200200
Hard resetting via RTS pin...

@zztiger123
Copy link

您好,
请问您目前烧录的固件大概是怎样的应用?里面会有 flash 读写操作吗?方便读取这五片芯片和正常的芯片的固件相关信息给我们比对吗?指令如下: esptool.py read_flash xxxxx // 读取芯片固件,xxx 需要按您实际的 flash 大小填写 offset esptool.py flash_id // 读取 flash id esptool.py read_flash_status --bytes 3 // 读取 flash 状态

谢谢回复,esp32主要是作为网卡使用的,就是通用的wifi功能+一个外接4G模组,没有特殊的flash读写操作,

  1. flash id和 flash status这两条能正常读取信息,read_flash命令出错(正常芯片和问题芯片都是同样的错误,尝试不同的波特率和读取长度降低,错误是一样的),输出内容如下:

esptool.py -p /dev/ttyACM0 -b 230400 read_flash 0 0x20000 flash_contents.bin
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Changing baud rate to 230400 Changed.
A fatal error occurred: Corrupt data, expected 0x1000 bytes but received 0x7dc bytes

  1. 读取的flash id 和 flash status 的内容如下:

1), 其中一个问题芯片的flash id和flash status的内容 $ esptool.py -p /dev/ttyACM0 flash_id
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 80:65:99:d7:81:b8 Uploading stub... Running stub... Stub running... Manufacturer: c8 Device: 4017 Detected flash size: 8MB Flash type set in eFuse: quad (4 data lines) Hard resetting via RTS pin...
$ esptool.py -p /dev/ttyACM0 read_flash_status --bytes 3
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 80:65:99:d7:81:b8 Uploading stub... Running stub... Stub running... Status value: 0x200200 Hard resetting via RTS pin...
2), 正常使用的卡读取的flash id和flash status 如下: $ esptool.py -p /dev/ttyACM0 flash_id
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Manufacturer: c8 Device: 4017 Detected flash size: 8MB Flash type set in eFuse: quad (4 data lines) Hard resetting via RTS pin...
$ esptool.py -p /dev/ttyACM0 read_flash_status --bytes 3
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Status value: 0x200000 Hard resetting via RTS pin...

在 read flash 指令里加上 --no-stub 试试。比如 esptool.py --no-stub read_flash 0 0x100000 flash_dump.bin
然后一直是这五个 S3 每过一段时间,固件就会稳定消失吗?有没有一定的规律?

没有专门正对这几个卡做跟踪测试,其中有一个卡重新烧录程序是能正常运行的,其他几个卡没进行恢复,为了保留环境给到你们分析,家里测试的样片没见到丢程序的
生产的情况是,第一批做的小批量验证,上线的200块,运行了两个月没看到有异常的; 前几天重新生产了一千台,部分上电之后就发现有这5块程序掉了,还有大部分没有上电,所以还不知道会不会还有别的掉程序的
附件是读到的flash的数据,一个是有问题的flash内容一个是家里用的没有问题的读出来的内容,应为github不支持bin文件,所以改后缀为txt了,请查阅[ flash_contents.txt 问题芯片-flash_contents.txt ](url)

分析了下您提供的 flash 文件,确实异常的 S3 flash 里面为空了。
您是用的什么方式烧录的固件?如果是 flash download tool,在以下 log 文件夹里可以查询烧录了哪些 mac 地址对应的芯片,可以先看看这些芯片是否真的有成功烧录过固件: image

工厂那边说,他们电脑坏了,所以部分升级的日志没有找到,还有其它方式可以确认是否烧写过固件么?

目前应该没有别的方法了,因为 flash 里的记录是可以被全部擦除的。不过您重新烧录固件后恢复正常的那片 S3,目前是否继续复现问题?

你好,目前有一块料是客户现场上用了一段时间才出问题的,所以这块料肯定是正常烧录过的,log打印也是 invalid header: 0xffffffff,但是这颗料出问题之后,usb-jtag口也无法识别了,目前只能看到串口打印,但是用打印的串口进行flash内容读取没有成功,请问有没有办法从串口读取flash内容?

=================================

项目上运行一段时间之后才出问题的这科料的状态和flash也读出来了,内容如下及附件,麻烦看一下是什么问题,谢谢 flash_dump.txt : PS C:\Espressif\frameworks\esp-idf-v4.4.5> esptool.py -p COM24 flash_id esptool.py v3.3.4-dev Serial port COM24 Connecting.... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (revision v0.2) Features: WiFi, BLE Crystal is 40MHz MAC: 80:65:99:d7:7e:e8 Uploading stub... Running stub... Stub running... Manufacturer: c8 Device: 4017 Detected flash size: 8MB Hard resetting via RTS pin... PS C:\Espressif\frameworks\esp-idf-v4.4.5> PS C:\Espressif\frameworks\esp-idf-v4.4.5> esptool.py -p COM24 read_flash_status --bytes 3 esptool.py v3.3.4-dev Serial port COM24 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (revision v0.2) Features: WiFi, BLE Crystal is 40MHz MAC: 80:65:99:d7:7e:e8 Stub is already running. No upload is necessary. Status value: 0x200200 Hard resetting via RTS pin...

Hi @WonderfulMoment 这样的话,您方便发送邮件到 sales@espressif.com 吗?记得在邮件里提到当前这个 github 链接,他们会进一步接手并分析您这个问题。

@WonderfulMoment
Copy link
Author

您好,
请问您目前烧录的固件大概是怎样的应用?里面会有 flash 读写操作吗?方便读取这五片芯片和正常的芯片的固件相关信息给我们比对吗?指令如下: esptool.py read_flash xxxxx // 读取芯片固件,xxx 需要按您实际的 flash 大小填写 offset esptool.py flash_id // 读取 flash id esptool.py read_flash_status --bytes 3 // 读取 flash 状态

谢谢回复,esp32主要是作为网卡使用的,就是通用的wifi功能+一个外接4G模组,没有特殊的flash读写操作,

  1. flash id和 flash status这两条能正常读取信息,read_flash命令出错(正常芯片和问题芯片都是同样的错误,尝试不同的波特率和读取长度降低,错误是一样的),输出内容如下:

esptool.py -p /dev/ttyACM0 -b 230400 read_flash 0 0x20000 flash_contents.bin
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Changing baud rate to 230400 Changed.
A fatal error occurred: Corrupt data, expected 0x1000 bytes but received 0x7dc bytes

  1. 读取的flash id 和 flash status 的内容如下:

1), 其中一个问题芯片的flash id和flash status的内容 $ esptool.py -p /dev/ttyACM0 flash_id
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 80:65:99:d7:81:b8 Uploading stub... Running stub... Stub running... Manufacturer: c8 Device: 4017 Detected flash size: 8MB Flash type set in eFuse: quad (4 data lines) Hard resetting via RTS pin...
$ esptool.py -p /dev/ttyACM0 read_flash_status --bytes 3
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 80:65:99:d7:81:b8 Uploading stub... Running stub... Stub running... Status value: 0x200200 Hard resetting via RTS pin...
2), 正常使用的卡读取的flash id和flash status 如下: $ esptool.py -p /dev/ttyACM0 flash_id
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Manufacturer: c8 Device: 4017 Detected flash size: 8MB Flash type set in eFuse: quad (4 data lines) Hard resetting via RTS pin...
$ esptool.py -p /dev/ttyACM0 read_flash_status --bytes 3
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Status value: 0x200000 Hard resetting via RTS pin...

在 read flash 指令里加上 --no-stub 试试。比如 esptool.py --no-stub read_flash 0 0x100000 flash_dump.bin
然后一直是这五个 S3 每过一段时间,固件就会稳定消失吗?有没有一定的规律?

没有专门正对这几个卡做跟踪测试,其中有一个卡重新烧录程序是能正常运行的,其他几个卡没进行恢复,为了保留环境给到你们分析,家里测试的样片没见到丢程序的
生产的情况是,第一批做的小批量验证,上线的200块,运行了两个月没看到有异常的; 前几天重新生产了一千台,部分上电之后就发现有这5块程序掉了,还有大部分没有上电,所以还不知道会不会还有别的掉程序的
附件是读到的flash的数据,一个是有问题的flash内容一个是家里用的没有问题的读出来的内容,应为github不支持bin文件,所以改后缀为txt了,请查阅[ flash_contents.txt 问题芯片-flash_contents.txt ](url)

分析了下您提供的 flash 文件,确实异常的 S3 flash 里面为空了。
您是用的什么方式烧录的固件?如果是 flash download tool,在以下 log 文件夹里可以查询烧录了哪些 mac 地址对应的芯片,可以先看看这些芯片是否真的有成功烧录过固件: image

工厂那边说,他们电脑坏了,所以部分升级的日志没有找到,还有其它方式可以确认是否烧写过固件么?

目前应该没有别的方法了,因为 flash 里的记录是可以被全部擦除的。不过您重新烧录固件后恢复正常的那片 S3,目前是否继续复现问题?

你好,目前有一块料是客户现场上用了一段时间才出问题的,所以这块料肯定是正常烧录过的,log打印也是 invalid header: 0xffffffff,但是这颗料出问题之后,usb-jtag口也无法识别了,目前只能看到串口打印,但是用打印的串口进行flash内容读取没有成功,请问有没有办法从串口读取flash内容?

=================================
项目上运行一段时间之后才出问题的这科料的状态和flash也读出来了,内容如下及附件,麻烦看一下是什么问题,谢谢 flash_dump.txt : PS C:\Espressif\frameworks\esp-idf-v4.4.5> esptool.py -p COM24 flash_id esptool.py v3.3.4-dev Serial port COM24 Connecting.... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (revision v0.2) Features: WiFi, BLE Crystal is 40MHz MAC: 80:65:99:d7:7e:e8 Uploading stub... Running stub... Stub running... Manufacturer: c8 Device: 4017 Detected flash size: 8MB Hard resetting via RTS pin... PS C:\Espressif\frameworks\esp-idf-v4.4.5> PS C:\Espressif\frameworks\esp-idf-v4.4.5> esptool.py -p COM24 read_flash_status --bytes 3 esptool.py v3.3.4-dev Serial port COM24 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (revision v0.2) Features: WiFi, BLE Crystal is 40MHz MAC: 80:65:99:d7:7e:e8 Stub is already running. No upload is necessary. Status value: 0x200200 Hard resetting via RTS pin...

Hi @WonderfulMoment 这样的话,您方便发送邮件到 sales@espressif.com 吗?记得在邮件里提到当前这个 github 链接,他们会进一步接手并分析您这个问题。

之前有同步发邮件的,就是邮件反应比较慢,所以才到这上面来问,现在量上来了,担心线上大批量出现类似问题,这样售后就特别麻烦,所以比较着急。

@zztiger123
Copy link

您好,
请问您目前烧录的固件大概是怎样的应用?里面会有 flash 读写操作吗?方便读取这五片芯片和正常的芯片的固件相关信息给我们比对吗?指令如下: esptool.py read_flash xxxxx // 读取芯片固件,xxx 需要按您实际的 flash 大小填写 offset esptool.py flash_id // 读取 flash id esptool.py read_flash_status --bytes 3 // 读取 flash 状态

谢谢回复,esp32主要是作为网卡使用的,就是通用的wifi功能+一个外接4G模组,没有特殊的flash读写操作,

  1. flash id和 flash status这两条能正常读取信息,read_flash命令出错(正常芯片和问题芯片都是同样的错误,尝试不同的波特率和读取长度降低,错误是一样的),输出内容如下:

esptool.py -p /dev/ttyACM0 -b 230400 read_flash 0 0x20000 flash_contents.bin
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Changing baud rate to 230400 Changed.
A fatal error occurred: Corrupt data, expected 0x1000 bytes but received 0x7dc bytes

  1. 读取的flash id 和 flash status 的内容如下:

1), 其中一个问题芯片的flash id和flash status的内容 $ esptool.py -p /dev/ttyACM0 flash_id
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 80:65:99:d7:81:b8 Uploading stub... Running stub... Stub running... Manufacturer: c8 Device: 4017 Detected flash size: 8MB Flash type set in eFuse: quad (4 data lines) Hard resetting via RTS pin...
$ esptool.py -p /dev/ttyACM0 read_flash_status --bytes 3
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 80:65:99:d7:81:b8 Uploading stub... Running stub... Stub running... Status value: 0x200200 Hard resetting via RTS pin...
2), 正常使用的卡读取的flash id和flash status 如下: $ esptool.py -p /dev/ttyACM0 flash_id
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Manufacturer: c8 Device: 4017 Detected flash size: 8MB Flash type set in eFuse: quad (4 data lines) Hard resetting via RTS pin...
$ esptool.py -p /dev/ttyACM0 read_flash_status --bytes 3
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Status value: 0x200000 Hard resetting via RTS pin...

在 read flash 指令里加上 --no-stub 试试。比如 esptool.py --no-stub read_flash 0 0x100000 flash_dump.bin
然后一直是这五个 S3 每过一段时间,固件就会稳定消失吗?有没有一定的规律?

没有专门正对这几个卡做跟踪测试,其中有一个卡重新烧录程序是能正常运行的,其他几个卡没进行恢复,为了保留环境给到你们分析,家里测试的样片没见到丢程序的
生产的情况是,第一批做的小批量验证,上线的200块,运行了两个月没看到有异常的; 前几天重新生产了一千台,部分上电之后就发现有这5块程序掉了,还有大部分没有上电,所以还不知道会不会还有别的掉程序的
附件是读到的flash的数据,一个是有问题的flash内容一个是家里用的没有问题的读出来的内容,应为github不支持bin文件,所以改后缀为txt了,请查阅[ flash_contents.txt 问题芯片-flash_contents.txt ](url)

分析了下您提供的 flash 文件,确实异常的 S3 flash 里面为空了。
您是用的什么方式烧录的固件?如果是 flash download tool,在以下 log 文件夹里可以查询烧录了哪些 mac 地址对应的芯片,可以先看看这些芯片是否真的有成功烧录过固件: image

工厂那边说,他们电脑坏了,所以部分升级的日志没有找到,还有其它方式可以确认是否烧写过固件么?

目前应该没有别的方法了,因为 flash 里的记录是可以被全部擦除的。不过您重新烧录固件后恢复正常的那片 S3,目前是否继续复现问题?

你好,目前有一块料是客户现场上用了一段时间才出问题的,所以这块料肯定是正常烧录过的,log打印也是 invalid header: 0xffffffff,但是这颗料出问题之后,usb-jtag口也无法识别了,目前只能看到串口打印,但是用打印的串口进行flash内容读取没有成功,请问有没有办法从串口读取flash内容?

=================================
项目上运行一段时间之后才出问题的这科料的状态和flash也读出来了,内容如下及附件,麻烦看一下是什么问题,谢谢 flash_dump.txt : PS C:\Espressif\frameworks\esp-idf-v4.4.5> esptool.py -p COM24 flash_id esptool.py v3.3.4-dev Serial port COM24 Connecting.... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (revision v0.2) Features: WiFi, BLE Crystal is 40MHz MAC: 80:65:99:d7:7e:e8 Uploading stub... Running stub... Stub running... Manufacturer: c8 Device: 4017 Detected flash size: 8MB Hard resetting via RTS pin... PS C:\Espressif\frameworks\esp-idf-v4.4.5> PS C:\Espressif\frameworks\esp-idf-v4.4.5> esptool.py -p COM24 read_flash_status --bytes 3 esptool.py v3.3.4-dev Serial port COM24 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (revision v0.2) Features: WiFi, BLE Crystal is 40MHz MAC: 80:65:99:d7:7e:e8 Stub is already running. No upload is necessary. Status value: 0x200200 Hard resetting via RTS pin...

Hi @WonderfulMoment 这样的话,您方便发送邮件到 sales@espressif.com 吗?记得在邮件里提到当前这个 github 链接,他们会进一步接手并分析您这个问题。

之前有同步发邮件的,就是邮件反应比较慢,所以才到这上面来问,现在量上来了,担心线上大批量出现类似问题,这样售后就特别麻烦,所以比较着急。

方便重新再发一封新的邮件并附上此 github issue 链接吗?在 github 上我们需要保护客户的信息,所以不方便问您的邮箱来在邮件系统里查询。您未来的新邮件我已经通知商务要内部提高优先级尽快处理。

@WonderfulMoment
Copy link
Author

您好,
请问您目前烧录的固件大概是怎样的应用?里面会有 flash 读写操作吗?方便读取这五片芯片和正常的芯片的固件相关信息给我们比对吗?指令如下: esptool.py read_flash xxxxx // 读取芯片固件,xxx 需要按您实际的 flash 大小填写 offset esptool.py flash_id // 读取 flash id esptool.py read_flash_status --bytes 3 // 读取 flash 状态

谢谢回复,esp32主要是作为网卡使用的,就是通用的wifi功能+一个外接4G模组,没有特殊的flash读写操作,

  1. flash id和 flash status这两条能正常读取信息,read_flash命令出错(正常芯片和问题芯片都是同样的错误,尝试不同的波特率和读取长度降低,错误是一样的),输出内容如下:

esptool.py -p /dev/ttyACM0 -b 230400 read_flash 0 0x20000 flash_contents.bin
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Changing baud rate to 230400 Changed.
A fatal error occurred: Corrupt data, expected 0x1000 bytes but received 0x7dc bytes

  1. 读取的flash id 和 flash status 的内容如下:

1), 其中一个问题芯片的flash id和flash status的内容 $ esptool.py -p /dev/ttyACM0 flash_id
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 80:65:99:d7:81:b8 Uploading stub... Running stub... Stub running... Manufacturer: c8 Device: 4017 Detected flash size: 8MB Flash type set in eFuse: quad (4 data lines) Hard resetting via RTS pin...
$ esptool.py -p /dev/ttyACM0 read_flash_status --bytes 3
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 80:65:99:d7:81:b8 Uploading stub... Running stub... Stub running... Status value: 0x200200 Hard resetting via RTS pin...
2), 正常使用的卡读取的flash id和flash status 如下: $ esptool.py -p /dev/ttyACM0 flash_id
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Manufacturer: c8 Device: 4017 Detected flash size: 8MB Flash type set in eFuse: quad (4 data lines) Hard resetting via RTS pin...
$ esptool.py -p /dev/ttyACM0 read_flash_status --bytes 3
esptool.py v4.7.0 Serial port /dev/ttyACM0 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (QFN56) (revision v0.2) Features: WiFi, BLE, Embedded PSRAM 2MB (AP_3v3) Crystal is 40MHz MAC: 48:27:e2:2d:7f:f0 Uploading stub... Running stub... Stub running... Status value: 0x200000 Hard resetting via RTS pin...

在 read flash 指令里加上 --no-stub 试试。比如 esptool.py --no-stub read_flash 0 0x100000 flash_dump.bin
然后一直是这五个 S3 每过一段时间,固件就会稳定消失吗?有没有一定的规律?

没有专门正对这几个卡做跟踪测试,其中有一个卡重新烧录程序是能正常运行的,其他几个卡没进行恢复,为了保留环境给到你们分析,家里测试的样片没见到丢程序的
生产的情况是,第一批做的小批量验证,上线的200块,运行了两个月没看到有异常的; 前几天重新生产了一千台,部分上电之后就发现有这5块程序掉了,还有大部分没有上电,所以还不知道会不会还有别的掉程序的
附件是读到的flash的数据,一个是有问题的flash内容一个是家里用的没有问题的读出来的内容,应为github不支持bin文件,所以改后缀为txt了,请查阅[ flash_contents.txt 问题芯片-flash_contents.txt ](url)

分析了下您提供的 flash 文件,确实异常的 S3 flash 里面为空了。
您是用的什么方式烧录的固件?如果是 flash download tool,在以下 log 文件夹里可以查询烧录了哪些 mac 地址对应的芯片,可以先看看这些芯片是否真的有成功烧录过固件: image

工厂那边说,他们电脑坏了,所以部分升级的日志没有找到,还有其它方式可以确认是否烧写过固件么?

目前应该没有别的方法了,因为 flash 里的记录是可以被全部擦除的。不过您重新烧录固件后恢复正常的那片 S3,目前是否继续复现问题?

你好,目前有一块料是客户现场上用了一段时间才出问题的,所以这块料肯定是正常烧录过的,log打印也是 invalid header: 0xffffffff,但是这颗料出问题之后,usb-jtag口也无法识别了,目前只能看到串口打印,但是用打印的串口进行flash内容读取没有成功,请问有没有办法从串口读取flash内容?

=================================
项目上运行一段时间之后才出问题的这科料的状态和flash也读出来了,内容如下及附件,麻烦看一下是什么问题,谢谢 flash_dump.txt : PS C:\Espressif\frameworks\esp-idf-v4.4.5> esptool.py -p COM24 flash_id esptool.py v3.3.4-dev Serial port COM24 Connecting.... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (revision v0.2) Features: WiFi, BLE Crystal is 40MHz MAC: 80:65:99:d7:7e:e8 Uploading stub... Running stub... Stub running... Manufacturer: c8 Device: 4017 Detected flash size: 8MB Hard resetting via RTS pin... PS C:\Espressif\frameworks\esp-idf-v4.4.5> PS C:\Espressif\frameworks\esp-idf-v4.4.5> esptool.py -p COM24 read_flash_status --bytes 3 esptool.py v3.3.4-dev Serial port COM24 Connecting... Detecting chip type... ESP32-S3 Chip is ESP32-S3 (revision v0.2) Features: WiFi, BLE Crystal is 40MHz MAC: 80:65:99:d7:7e:e8 Stub is already running. No upload is necessary. Status value: 0x200200 Hard resetting via RTS pin...

Hi @WonderfulMoment 这样的话,您方便发送邮件到 sales@espressif.com 吗?记得在邮件里提到当前这个 github 链接,他们会进一步接手并分析您这个问题。

之前有同步发邮件的,就是邮件反应比较慢,所以才到这上面来问,现在量上来了,担心线上大批量出现类似问题,这样售后就特别麻烦,所以比较着急。

方便重新再发一封新的邮件并附上此 github issue 链接吗?在 github 上我们需要保护客户的信息,所以不方便问您的邮箱来在邮件系统里查询。您未来的新邮件我已经通知商务要内部提高优先级尽快处理。

已经发了,麻烦查收一下,有什么需要配合的,及时回复邮件,谢谢;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Status: Opened Issue is new
Projects
None yet
Development

No branches or pull requests

4 participants