在把8266的(4M Dio)的固件通过esptool.py烧录到8285(1M)的过程中,发现烧录后不能启动。
8266使用的命令如下:
esptool.py --port com3 write_flash 0x00000 esp.flash.bin 0x10000 esp.irom0text.bin 0x3fc000 esp_init_data_default.bin
8285命令如下:
esptool.py --port com3 write_flash 0x00000 esp.flash.bin 0x10000 esp.irom0text.bin 0xfc000 esp_init_data_default.bin
发现esptool.py对8285也是按8266识别的,这倒也没错。识别出来的存储空间也是1M,没错。
连接8285串口,74880波特率查看BOOT ROM打印的错误,如下:
ets Jan 8 2013,rst cause:2, boot mode:(3,6)<\r><\n>
load 0x40100000, len 32440, room 16 <\r><\n>
tail 8<\r><\n>
chksum 0xef<\r><\n>
load 0x00000000, len 0, room 0 <\r><\n>
tail 0<\r><\n>
chksum 0xef<\r><\n>
load 0x00000000, len 0, room 8 <\r><\n>
tail 0<\r><\n>
chksum 0xef<\r><\n>
csum 0xef<\r><\n>
csum err<\r><\n>
ets_main.c
后面两个load 0x0000000显然是有问题的,拿一个正常的8285试了一下,信息如下:
load 0x40100000, len 29408, room 16 <\r><\n>
tail 0<\r><\n>
chksum 0x70<\r><\n>
load 0x3ffe8000, len 1968, room 8 <\r><\n>
tail 8<\r><\n>
chksum 0x72<\r><\n>
load 0x3ffe87b0, len 692, room 0 <\r><\n>
tail 4<\r><\n>
chksum 0x4c<\r><\n>
csum 0x4c<\r><\n>
<\r><\n>
果然后面两个load的地址是不对的。
网上查了一下,8285应将flash_mode设置为dout,如下:
esptool.py --port com3 write_flash --flash_mode dout 0x00000 esp.flash.bin 0x10000 esp.irom0text.bin 0xfc000 esp_init_data_default.bin
烧录后果然成功了。
几个flash mode的解释:
3.spi mode :
1)QIO ,for flash that support quad r/w operation(e.g. W25Q)
2)QOUT,for flash that support quad read operation(e.g. W25Q)
3)DIO,for flash that support dual r/w operation(e.g. W25Q &W25X)
4)DOUT, for flash that support dual read operation(e.g. W25Q &W25X)