无法修改乐鑫提供的 ESP8266 示例

Cannot modify example for ESP8266 provided by espressif

我的设置包括使用 eclipse 的 Espressif SDK 和我想在 C 中编程的 nodemcu。

我已经按照他的所有步骤进行了操作,我可以从 eclipse 环境中编译和刷写电路板。我不按任何按钮来加载闪光灯,因为电路板可以自行处理(至少我是这么读的)。根据 this 显然我有一个 nodemcu 0.9,但是我的电路板看起来不太像图片中的那个(微带天线看起来很奇怪..并且在电路板的背面写着 www.doit.am ESP12E devkit V2 ...我的天线看起来甚至不像网站上列出的电路板后面的天线)。

我看了过去的一切并继续前进。我在 espressif 上编译了 blinky 示例并闪现了它。我看到它创建了 eagle.flash.bin 和 eagle.irom0text.bin 并分别将它们加载到 0x00000 和 0x10000 中(根据我读过的文档,这是可以的)。当我重置电路板时,我可以看到它真的闪烁了,并且因为 LED 灯在闪烁,所以里面有一个程序。然后我尝试了 hello_world 示例。一切都进行得很顺利,在我重置电路板后,我看到 LED 灯以相同的频率持续闪烁,当我通过 espressif 提供的 terminal.exe 连接到电路板时,我只能在输出中看到垃圾,即使根据代码,波特率是正确的(尽管如此,我在 terminal.exe 中尝试了所有可能的波特率)。

好的……然后我又回到了眨眼的例子,增加了眨眼之间的延迟。闪烁它,频率保持不变。我知道它创建了新的 .bin 文件,但仍然没有任何改变。这促使我创建了一个新项目。我按照 Mikhail Grigorev 提供的说明进行了操作。我只是放了一个无限循环,希望什么也得不到,但是在刷新新编译的固件后,我仍然可以看到 LED 以相同的频率闪烁,即使代码中绝对没有,我什至之前擦掉了闪光灯(是的,我验证闪存为空)。

所以这让我测试了我可以编译的每一个例子。我注意到有些 LED 灯没有闪烁,而另一些则闪烁,就像什么也没发生一样。之后我下载了 nodemcu 固件,加载后我注意到它工作正常,我什至可以在可用的 wifi 网络中看到 ESP。

我真的不明白这是怎么回事。为什么有些示例有效而其他示例无效?为什么我不能修改一个简单的 blinky 的源代码并看到更改?我真的更喜欢以这种方式使用 esp 模块,因为我不喜欢 arduino 接口或它使用静态设置和循环函数的方式,而且我不想在 LUA 中对其进行编程。

我什至检查了 espressif 提供的 makefile,我能看到的唯一区别是 BOOT 和 APP 变量。我什至尝试修改它们,但仍然……没有任何变化。

有人可以帮我吗?

好的,终于找到我的问题了。问题是 espressif SDK 需要在闪存的某些地址上使用一些软件位。最初发生的事情是,我一拿到电路板就擦除闪存,假设所有这些二进制文件都已经存储在闪存中。

我接下来要做的是尝试放入所有其他二进制文件,但我将它们放入了错误的地址,因此该软件无法运行。

最后,经过许多小时的阅读论坛和阅读文档,我找到了正确的地址并且成功了。

地址是:

0x00000  - boot_v1.6.bin

0x01000  - firmware application (I set the makefile to BOOT=new, APP=1, SIZE_MAP=6)

0x3fc000 - esp_init_data_default.bin

0xfe000  - blank.bin 

0x3fe000 - blank.bin