带有NodeMCU固件的ESP8622在刷新新版固件后开始闪烁(旧版本正在运行)

时间:2016-08-05 12:39:48

标签: esp8266 nodemcu

昨天我尝试从nodemcu-build.com生成新的固件bin,并在使用esptool.py闪烁后,我的esp开始闪烁(esp芯片上的蓝色二极管)并发送(通过USB转换器)垃圾数据。我尝试使用模块组合生成构建,尝试刷新它们(二进制和浮动),它总是开始闪烁并发送垃圾。比我的同事尝试了他的旧版本,一切都工作得很好,而不是他发给我他的旧版本,闪光后一切都很完美。所以闪存工具或系统没有问题(在ma​​c和linux上都经过测试),旧版本也没有问题。任何新的构建都失败了。

我的闪烁命令:

  

esptool.py -p /dev/cu.wchusbserialfa130 write_flash 0x0   nodemcu-master-13-modules-2016-04-09-12-28-55-float.bin --verify

任何人都知道可能出现问题的地方或我们做错了什么?

4 个答案:

答案 0 :(得分:13)

我很确定你错过了NodeMCU flashing docs中解释的两点:

  • esptool.py write_flash选项
  • 闪烁正确的Espressif初始化数据

假设你有一个4MB的设备,如ESP-12E / WeMos D1 mini / NodeMCU devkit v2(comparison),write_flash options-fm dio -fs 32m

你很可能upgrading from an older NodeMCU version。因此,您需要将esp_init_data_default.bin闪存到正确的内存地址。

因此,完整的flash命令应该是这样的:

esptool.py --port /dev/cu.wchusbserialfa130 write_flash -fm dio -fs 32m 0x00000 nodemcu-master-13-modules-2016-04-09-12-28-55-float.bin 0x3fc000 esp_init_data_default.bin

更新2016-10-20

由于固件中的修复,您不必再自己提供init数据,固件会在必要时自动执行。已在dev分支机构中使用了几天,并且还将于2016年12月初在master上。

答案 1 :(得分:2)

我遇到了同样的问题。我做了以下步骤,解决了这个问题。在刷新新固件之前,请确保您的芯片已完全擦除。您可以使用下面的命令“serial-port-of-ESP8266”可能会有所不同:

esptool.py --port <serial-port-of-ESP8266> erase_flash

然后使用与用于刷新nodeMCU 0.9.6相同的技术将固件刷新到芯片。您可以参考下面的命令,这是我用于闪烁的命令。

esptool.py --port /dev/ttyACM0 write_flash -fm qio 0x00000 nodemcu-master-8-modules-2016-12-16-09-52-59-float.bin

答案 2 :(得分:0)

同样的问题并通过Marcel解决方案解决,但请注意闪光选项:-fm dio -fs 32m

我没有尝试,所以只附加了esp_init_data_default.bin,但它不起作用。

你可以检查它,因为esptool在说明flash之前显示了一个十六进制值 Flash参数设置为0x0000(错误) Flash参数设置为0x0240(很好!)

答案 3 :(得分:0)

试图让它运行但我的“WeMos Mini D1”无法使用此行

esptool.py --port /dev/ttyUSB0 write_flash -fm dio -fs 32m 0x00000 my-nodemcu.bin 0x3fc000 esp_init_data_default.bin --verify

答案是:

Wrote 454656 bytes at 0x0 in 39.2 seconds (92.9 kbit/s) 
WARNING: Unlikely to work as data goes beyond end of flash. Hint: Use --flash_size 
Writing 36864 @ 0x3fc000... 16384 (44 %)
A fatal error occurred: Write failure, status: 36'

来自云构建的图像只有6个选项,因此它的图像太大了。