通过VSCode SSH远程连接Ubuntu搭建PlatformIO开发环境(NVIDIA Jetson)
写在前面
本教程基于NVIDIA Jetson Xavier NX (JetPack 5.1.3/Ubuntu 20.04)撰写,其他Ubuntu系统设备也同样适用此教程。
如果是本地搭建,没有远程开发的需求,请直接跳转到#配置VSCode代理
VSCode通过SSH连接Jetson
打开VSCode,点击左下角的小箭头按钮,连接到远程主机-添加新的SSH主机
之后会要求输入SSH连接命令,参考格式:
ssh 用户名@IP地址
# Example: ssh jetson@192.168.0.2
输入之后回车,配置文件选择默认即可。
添加完成之后,右下角会弹出连接,可以直接点击连接,也可以重新点击左下角小箭头连接。
接下来就是一些简单的操作,跟着图片步骤走即可。
等待进度跑完(下方),窗口不再滚动,一般就是配置完成了。
配置VSCode代理
注意:这一步是可选的,但配置代理之后可以大大加快PlatformIO的安装速度,并且可以一劳永逸解决PlatformIO下库慢、创建工程慢的问题。
打开VSCode设置,切换到远程主机设置,搜索Proxy设置,填入Http: Proxy
和Https: Proxy
。
# HTTP/S代理
http://xxx.xxx.xxx.xxx:7890
https://xxx.xxx.xxx.xxx:7890
# SOCKS5代理(不推荐)
socks5://xxx.xxx.xxx.xxx:7890
socks5://xxx.xxx.xxx.xxx:7890
配置系统环境
安装python3-venv
sudo apt install python3-venv
如果不安装venv,会出现PIO找不到Python解释器的情况,但实际上系统已经默认自带了(我这里Jetson自带的是Python3.8),并且不安装venv,即便你输入正确的Python解释器可执行文件位置(例如
/usr/bin/python3
),也会反复弹出此提示。
如果你使用的是socks代理方式,那么你还需要安装socks代理支持:
经过测试,即使安装相关socks库之后也会报错,建议使用HTTP/S代理方式。
python3 -m pip install requests[socks]
安装PlatformIO扩展
导航到VSCode的扩展,搜索并安装PlatformIO
扩展。
安装完成之后,点一下左边的小蚂蚁头icon,就会自动进入PlatformIO的安装环节。
创建项目验证安装是否成功
依旧是点击PIO的Icon进入插件页面,在左边找到PIO Home-Open
,如果能加载出来就可以直接创建项目了,很遗憾我这里不知道因为什么原因无法加载出来,因此点击左边的New Terminal
,输入命令pio home
回车
直接点击在编辑器中预览,即可在VSCode中显示。
接下来创建一个新项目,以ESP32 Dev Module
为例:
这里使用MobaXTerm实时监控(或其他能检测网络的软件)可以看到有网络活动,也就是PIO正在下载必要的文件。如果很久都没有创建好,又没有看见网络活动迹象,很可能是网络代理配置有问题,导致无法下载必要的库文件。
当看到右上角弹出带绿色√的小弹窗,就代表创建成功了~
安装99-platformio-udev.rules
如果不安装,则会导致下载固件的时候出错
Looking for upload port... Warning! Please install `99-platformio-udev.rules`. More details: https://docs.platformio.org/en/latest/core/installation/udev-rules.html Auto-detected: /dev/ttyUSB0 Uploading .pio/build/esp32dev/firmware.bin esptool.py v4.5.1 Serial port /dev/ttyUSB0 A fatal error occurred: Could not open /dev/ttyUSB0, the port doesn't exist *** [upload] Error 2 =============================================================================================== [FAILED] Took 37.14 seconds ===============================================================================================
打开Linux终端,下载文件并安装:
curl -fsSL https://raw.githubusercontent.com/platformio/platformio-core/develop/platformio/assets/system/99-platformio-udev.rules | sudo tee /etc/udev/rules.d/99-platformio-udev.rules
重新启动udev管理工具:
sudo service udev restart
之后需要
重新拔插一次你的下位机开发板,
重新拔插一次你的下位机开发板,
重新拔插一次你的下位机开发板!!
重要的事情说三遍。
(否则依然无法下载程序)
写在后面
如果你使用Windows远程开发
如果你同时还使用了默认路径创建新项目,那就会遇到新建Project路径不正确的问题:
jetson@ubuntu:~/Documents/PlatformIO$ tree
.
├── Projects\ESP32 TEST PROJECT
│ ├── include
│ │ └── README
│ ├── lib
│ │ └── README
│ ├── platformio.ini
│ ├── src
│ │ └── main.cpp
│ └── test
│ └── README
这是因为Linux上用斜杠/
作为路径分隔符,而Windows使用的是反斜杠\
,当你在Windows端创建新的Project则会使用反斜杠,但在Linux那边将其视为一个文件夹名称的字符,也就导致该项目文件夹没有正确创建在Projects/
目录下,但这算是小问题了,手动mv
一下即可。
经过测试,即便在新建项目的时候指定路径,也会出现错误,因此还是建议在默认位置创建后mv
一下。
mkdir -p Projects/ESP32_TEST_PROJECT
mv Projects\\ESP32\ TEST\ PROJECT/* Projects/ESP32_TEST_PROJECT/
正确的效果:
jetson@ubuntu:~/Documents/PlatformIO$ tree
.
├── Projects
│ └── ESP32_TEST_PROJECT
│ ├── include
│ │ └── README
│ ├── lib
│ │ └── README
│ ├── platformio.ini
│ ├── src
│ │ └── main.cpp
│ └── test
│ └── README
更换PIO虚拟环境镜像源
此外,PIO默认创建的venv环境使用官方源,建议手动更换一下venv为国内镜像源,详细请阅读:
- 感谢你赐予我前进的力量