如何在已经写入的情况下将 ESP8266 回刷?

我是一个 ESP8266 的初学者,我有一个 ESP8266 开发板。我使用 esptools 刷它并使用 ESPlorer 作为集成开发环境。

我经典地犯了无限循环的错误,但我通过擦除闪存 ( erase_flash 命令来自于 esptools) 在整个闪存空间 (包括用户空间) 中成功地解决了这个问题。

为了避免这种情况再次发生,我编写了以下代码

init.lua

dofile('crazy-guard.lua')

crazy-guard.lua

gpio.mode(0,gpio.INPUT)
programPinValue = gpio.read(0)

if(programPinValue == 0) then
    print("程序模式")
    return
else then
    print("运行模式")
    dofile('program.lua')
end

program.lua

while true do

end

这正如预期的那样工作: 如果我将 GPIO0 引脚拉低,当我建立连接时,我在 ESPlorer 控制台上看到“程序模式”这个信息。如果拉高,则会得到“运行模式”的消息。

我以为在程序模式( GPIO0 低电平) 块中的 return 指令会允许我与我的 ESP8266 开发套件(编辑 .lua 文件) 进行通信 ,但自从我上传了这个代码后,我无法在我的开发板上进行任何连接... esptools 返回 :

sudo python ./esptool.py erase_flash

esptool.py v2.4.1

Found 1 serial ports Serial port /dev/ttyUSB0 Connecting........_____....._____....._____....._____....._____....._____....._____ /dev/ttyUSB0 failed to connect: Failed to connect to Espressif device: Timed out waiting for packet header

在 ESPlorer 方面,这是我得到的 :

PORT OPEN 115200

Communication with MCU..Got answer! Communication with MCU established. AutoDetect firmware...

Can't autodetect firmware, because proper answer not received (may be unknown firmware). Please, reset module or continue. l�d����#�n�l�#|���2�{���b��no�lNn���cp��$rdrlp�n��dbN�|��䎟�c��oN�d���$ �no�s$or���Nrld p�n�r�����bN��o�l�p��on���l �oN�ln{���o�l p�N�r�����bN�|l섎p��on���l �no�{lNs�����{${��o�{$����n�{��n|�lll$ b��|{�l�n��n��l ��r�l�$�$ ��{�l�$�l ��{�l���dl rl��o��bc��cp|"p���p����lB��N�Nn��ld��l���d��$����$��d �n�����bl$��2b���"l�crlr

NodeMCU custom build by frightanic.com branch: master commit: 5073c199c01d4d7bbbcd0ae1f761ecc4687f7217 SSL: false modules: file,gpio,http,i2c,mqtt,net,node,ow,tmr,uart,wifi build built on: 2018-03-22 17:00 powered by Lua 5.1.4 on SDK 2.1.0(116b762)

程序模式

然后,如果我通过 ESPlorer 对 USB 发送任何命令,或推送任何文件编辑/创建,我会得到 :

等待 ESP 回答 - 超时已达到。命令中止。

据我所见,我的开发板似乎被砖化了。我该如何重新编程它?我尝试更改波特率,但带有固件详细信息的 NodeMCU 头文件使我认为硬件通信已正确设置。

点赞