我开始在从 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/ttyUSB0
115200 波特率使用 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
- 安装esptool.py
- 运行
esptool.py -p <serial-port> flash_id
(为您提供十六进制制造商和芯片 ID)- 查找芯片 https://code.coreboot.org/p/flashrom/source/tree/HEAD/trunk/flashchips.h
(我有一个 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)
这两个改变帮我解决了这个问题。