如何为esp8266交叉编译Arduino代码?

How to cross compile Arduino code for esp8266?

我在偏远地区有一个 Raspberry Pi。我试图在该系统上 运行 Arduino IDE 但它没有足够的内存。我想在我的 Ubuntu 桌面上编译一些代码,将可执行文件复制到 Pi 并使用一些实用程序将其加载到 ESP8266 运行 宁 OTA 软件。我需要知道可执行文件在 IDE 编译步骤之后的位置,以及可以使用什么实用程序通过 lan 将文件从 Pi 传输到 ESP8266。

有什么想法吗? 谢谢, 吉姆.

在 arduino ide 中, 转到文件-> 首选项。勾选编译框“Show verbose output during: ☑ compilation”

现在您将获得在arduino控制台中生成的所有文件的位置。

请参阅 Kinaly Jain 的回答。如果您将代码上传到本地 esp,详细模式还会向您显示它用于上传的命令。您可以将这些命令收集到远程 Pi 上的 运行 的脚本或 makefile 中。

感谢两位回复者。我想尝试描述一个可能的场景来满足我的需求。我从另一个 post 中发现“Sketch/Export 已编译的二进制文件”菜单 selection 将生成一个 bin 文件,可以使用类似于此页面中的脚本上传该文件 https://github.com/esp8266/Arduino/issues/3553 该脚本在网络中找到可用的 OTA 端口,然后使用 espota.py 将 .bin 文件上传到您 select 的端口。我建议对该脚本进行轻微更新。在我的系统上,espota 位于 ~/.arduino15/packages/esp8266/hardware/esp8266/2.7.4/tools/espota.py 中,它现在是一个 python3 脚本。它是可执行的,因此您不需要显式执行 python.

/home/$USER/.arduino15/packages/esp8266/hardware/esp8266/2.7.4/tools/espota.py -i $ip -p 8266 --auth="$password" -f "$path" 2> /dev/null && echo -e "Success:\t$ip" || echo -e "Fail:   \t$ip" &

我还没有测试过它,但我认为它可能会通过一些小的调整来工作。 avahi-browse 实用程序位于 Raspberry Pi OS 上的 avahi-utils 包中。它没有默认安装在 RPi OS 上,但它似乎已经安装在 Linux Mint 上。

总而言之,我将使用“导出...”菜单在我的桌面上 运行 Arduino IDE,然后我将在 sketch 目录中找到 .bin 文件并将其复制到 Pi。然后我将使用之前提到的脚本,希望通过 OTA 将 bin 文件写入 esp8266。我希望这能帮助遇到类似问题的其他人。

再次感谢, 吉姆.