我将如何在 WSL 中使用 Arduino-CLI?

How would I use Arduino-CLI in WSL?

我最近开始玩 ESP8266,想尝试使用 WSL 上传到它。我找到了 Arduino-CLI 命令并遵循了一些教程,但无法弄清楚如何上传到电路板。我尝试的命令 运行 是 arduino-cli upload -p /dev/ttyS5 --fqbn esp8266:esp8266:arduino-esp8266 Testing 因为我知道开发板是 ESP8266 并且连接到 Windows Arduino 应用程序上的 COM5。代码编译并尝试连接到电路板,但无法通过该部分。

这是我尝试上传的代码。

void setup() {
        pinMode(0, OUTPUT);
}

void loop() {
        digitalWrite(0, HIGH);
        delay(1000);
        digitalWrite(0, LOW);
        delay(1000);
}

当我执行arduino-cli board list时,它显示了这个。

Port Protocol Type    Board Name FQBN Core
     serial   Unknown

我正在为 Ubuntu 20.04 使用 Windows 终端,并且刚刚安装了 Arduino-CLI。 我也不确定如何提问,因为这是我第一次使用 Whosebug,所以如果我做错了什么请告诉我 :)

编辑: 原来是我上传的内核用错了。我最终尝试了 arduino-cli board listall esp8266 列出的每个内核,它最终使用 esp8266:esp8266:nodemcuv2 而不是 esp8266:esp8266:arduino-esp8266

根据我对 WSL 而不是 Arduino 的理解,这里只是有根据的猜测。

我假设您使用的是 WSL2,它无法访问大多数 Windows 硬件,包括串行端口。

如果是这种情况,您可以尝试两个选项:

  • WSL1 确实有一些更好的直接硬件访问,以牺牲一些内核兼容性为代价(因为它试图转换系统调用而不是虚拟化它们)。您可以尝试通过以下方式将发行版转换为 WSL1:

    wsl -l -v
    # Confirm distribution name
    wsl --set-version <distro_name> 1
    

    您可能想先用 wsl --export <distro_name> backup.tar 备份它。

  • 如评论中所述,您应该能够使用 Windows 工具链。您甚至可以在 WSL2 下 运行 这个,因为 Windows 命令可以通过互操作在那里执行(并且可以访问硬件)。请记住使用完整的可执行文件,例如 /mnt/c/arduino-cli/arduino-cli.exe。此外,您还需要将任何 Linux/WSL 路径转换为 ​​Windows 等价于 wslpath.