Rob*_*ert 1 firmware bootloader nodemcu esp8266 esp-12f
我是这些设备的新手,即使它们非常便宜,我也不会不必要地想要它们.
我用esptool将NodeMCU固件刷到我的模块上.这样做时,我需要指定文件写入的地址,通常是0x00000.这是否意味着固件实际上包含引导加载程序?或者它位于闪光灯的单独区域?
如果引导加载程序本身包含在固件文件中,那么中断的闪存过程会使模块无效,我想?
谢谢你的澄清!
您不能以这种方式损坏模块.我可能做了一百次闪烁,其中一些失败(例如由于波特率太高).固件本身确实包含引导加载程序0x000000,但这是一个可以任意交换的第二阶段引导加载程序.您应该无法覆盖第一阶段引导加载程序.引自创建的人,http : rBoot//richard.burtons.org/上的Espressif booatloader的开源替代品:
引导加载程序被写入SPI闪存的第一个扇区并像任何其他程序一样执行,内置的第一阶段引导加载程序不知道它正在加载第二阶段加载程序而不是任何其他程序.
接下来会发生什么?那么第二阶段引导加载程序不是开源的,它作为二进制blob提供给我们盲目使用.
简而言之:你不能通过写废话来破坏你的模块0x00000.它可能会在找到无效的操作码之前执行一些任意代码,但这还不足以使CPU爆炸或模块被损坏.重新刷新固件足以从损坏的第二阶段引导加载程序中恢复.
那么第一阶段的引导加载程序到底在哪里呢?根据richard.burtons.org/2015/05/17/esp8266-boot-process的评论,创作者自己回答:
评论员:我一直在弄清楚第一阶段引导加载程序是在处理器ROM还是在Flash中.我猜它在ROM中.如果这是在ROM中,那么就没有弄乱闪存的风险并使设备无用.你能否确认一下.
理查德:那是对的.第一阶段是在rom,你无法做任何事情来打破它.