我将如何在 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
.
我最近开始玩 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
.