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

标签 c eclipse esp8266 nodemcu

我的设置包括使用 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 接口(interface)或它使用静态设置和循环函数的方式,而且我不想在 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

关于无法修改乐鑫提供的 ESP8266 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39196129/

相关文章:

相邻的字符在 C 中检查

c - 如果 shell 输出通过管道传输到某处,fork() 会导致父级 main 的开头执行

android - 如何将库项目添加到 android 项目?

c++ - Blynk.syncVirtual(V1)不更新虚拟引脚值

nginx - Arduino ESP8266 没有收到来自 HTTP 服务器的所有数据

ios - Swift-UDP接收和发送

c - 我应该在销毁它之前隐藏一个小部件吗?

c++ - 如何从 SQLite 数据库中读取数据?

eclipse - 如何防止 Eclipse 格式化程序弄乱带有文本符号的注释?

eclipse - 如何为新的 eclipse (neon) java 项目初始化 git