我会不小心破坏 ESP8266 ESP-12F 模块的引导加载程序吗?

Can I accidentally destroy an ESP8266 ESP-12F module's bootloader?

我是这些设备的新手,即使它们很便宜,我也不想把它们变成砖头。

我已经使用 esptool 将 NodeMCU 固件刷写到我的模块上。这样做时,我需要指定写入文件的地址,通常是 0x00000。这是否意味着固件实际上 包含 引导加载程序?或者它位于闪存的单独区域?

如果引导加载程序本身包含在固件文件中,我想中断的闪烁过程会使模块无法使用?

感谢您的澄清!

这样不会损坏模块。我大概做了一百次闪光,其中一些失败了(例如由于波特率太高)。固件本身 确实0x000000 包含引导加载程序,但这是可以任意交换的第二阶段引导加载程序。您不应该能够覆盖第一阶段的引导加载程序。引用创建 rBoot 的人的话,http://richard.burtons.org/ 上专有的 Espressif booatloader 的开源替代品:

The boot loader is written to the first sector of the SPI flash and is executed like any other program, the built in first stage boot loader does not know it is loading a second stage loader rather than any other program.

So what happens next? Well the second stage boot loader isn’t open source, it’s provided to us as a binary blob to use blindly.

简而言之:您不能通过向 0x00000 写入废话来损坏您的模块。它可能会在找到无效操作码之前执行一些任意代码,但这不足以使 CPU 爆炸或模块损坏。刷新固件足以从损坏的第二阶段引导加载程序中恢复。

那么第一阶段引导加载程序到底在哪里?根据 richard.burtons.org/2015/05/17/esp8266-boot-process 的评论,创作者自己回答为:

Commentator: I have been figuring out if the first stage boot loader is in the processors ROM or in the Flash. I guess it is in the ROM. If this is in ROM then there is no risk of messing flash and leave the device useless. Could you please confirm it.

Richard: That’s correct. Stage one is in rom and you can’t do anything to break it.