ESP8266 固件刷新后无法启动,串口输出致命异常(28)

ESP8266 固件刷新后无法启动,串口输出致命异常(28)

我开始在从 AI-Thinker 购买的 ESP8266 上进行实验,wiki 链接在这里,ESP8266另一个是节点MCU

我已经熟悉了 Lua 固件,因此刷新了 Lua 节点固件并能够成功,但我遇到了内存问题Lua 固件。然后我想到用 C 而不是 Lua 编程。我的开发环境是 Ubuntu 14.0。我从这里遵循的步骤如下:https://github.com/SuperHouse/esp-open-rtos

我成功在文件夹gen_misc.sh中构建了固件examples/project_template,并使用默认构建选项生成了下面提到的 bin:

eagle.flash.bin
eagle.irom0text.bin

esptool.py然后使用以下命令进行闪烁:

./esptool.py write_flash 0x00000 ESPWorkspace/esp-open-sdk/ESP8266_RTOS_SDK/esp8266_bin/eagle.flash.bin 0x20000 ESPWorkspace/esp-open-sdk/ESP8266_RTOS_SDK/esp8266_bin/eagle.irom0text.bin

并且从电路板闪烁后的输出为:

  Fatal exception (28): epc1=0x40001800, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00007ff0, depc=0x00000000

它只是反复打印在屏幕上,我在 Ubuntu 上使用 minicom,以/dev/ttyUSB0115200 波特率使用 USB 电缆连接设备。奇怪的是,在电源关闭/打开循环后,我在 minicom 上收到垃圾数据。

网上有些文章直接用eagle.dump文件和进行调试eagle.s。我也没有解决这个问题。

有人可以指导我解决这个问题吗?

答案1

我找到了使用 esp-free-rtos 刷新 esp-8266 的方法,如果有人从我的回答中受益,我会很高兴。我使用的是 NodeMcu WiFi 开发板 - ESP8266(ESP-12E)。我遇到的问题与致命异常 (28) 有关,因为相关内存位置不可用(可能不是,我只是初学者)。

我误以为两个独立的项目是相同的,但 ESP8266_RTOS_SDK 和 esp-open-rtos 却截然不同。

因此经过一番搜索后我选择继续使用 esp-open-rtos,然后出现错误,它与闪存大小有关,来自这里:https://nodemcu.readthedocs.io/en/master/en/flash/我得到了答案。

在 esp-open-rtos 根文件夹中编辑参数文件,将其更改为 FLASH_SIZE ?= 8、FLASH_MODE ?= dout,甚至我将波特率增加到 ESPBAUD ?= 1500000。

我刷入了固件并将我的 C 程序放入 esp8266 中。

下面我列出了将 C 程序刷入 esp8266 的分步指南。我的开发系统是 Ubuntu 14.04 LTS。

1. 下载 esp-open-sdk 并构建

确保您的开发系统具备其 GitHub 页面上提到的所有要求和依赖项。

$ git clone --recursive https://github.com/pfalcon/esp-open-sdk.git

$ make STANDALONE=n 

设置导出路径:

$ export PATH=/path_to_Workspace/esp-open-sdk/xtensa-lx106-elf/bin:$PATH

2. 下载 esp-open-rtos 并制作 flash

$ git clone --recursive https://github.com/Superhouse/esp-open-rtos.git

$ cd esp-open-rtos

$ make flash -j4 -C examples/http_get ESPPORT=/dev/ttyUSB0 

答案2

@Glorfindel 的答案是正确的,但只是为了澄清一下。

确定你的主板的闪存大小:

https://stackoverflow.com/questions/39631011/how-to-determine-flash-size-of-nodemcu

(我有一个 HiLetGo nodemcu - 32Mb)

编辑文件:esp-open-rtos/parameters.mk

  • FLASH_SIZE ?= <N> (其中 N 是闪存的兆比特数)
  • FLASH_MODE ?= dio

(请注意,我还发现了迪奥这里:https://groups.google.com/forum/#!topic/esp-open-rtos/-MNCe1NyVKA

这两个改变帮我解决了这个问题。

相关内容