Jetson Xavier NX 试玩 (一)
环境搭建
0 前言
NVIDIA家的Jetson系列是业内嵌入式边缘计算机的代表作,体积小,功能强是其最主要的优点。
学院入手了一款Jeston Xavier NX,本意是想买官方原版,奈何实在是缺货,由是购入了另一个版本,该版本的镜像烧录方式与官方版本不同,它不支持SD卡烧录。现在,趁着还没毕业,抓紧时间踩踩坑。
这个版本的NX的主板模组的原型应该是微雪电子(waveshare)针对官方NX模组开发的一个扩展版本,可以看他们的官网查看详情。
虽然不是官方版本的,但是其改动不大,因此可玩性还是很高的。
接下来,我要先把基础开发环境搭好。
1 镜像烧录
教程可以参考微雪的官方指导以及各种野生博客。
由于没法使用SD卡,就没法跟着英伟达官方教程走了,看微雪的说明,我们只能使用官方SDK Manager工具烧录,但是这个软件只能在linux系统环境下使用,而我手头没有linux主机,所以要先装个虚拟机,我用的是VMware Player 16。
系统的话我选的是ubuntu18.04,其他符合SDK Manager要求的系统也可(大概)。
在虚拟机里安装好SDK Manager,启动,按官方教程下载即可,简单总结一下,步骤如下:
- 1 需要一个 NVDIA Developer 账号,没有的话要先注册一个。
- 2 打开 SDK Manager 要先登录,在跳出的网页输入账户和密码即可
- 3 将板子的FC REC( Force Recovery Mode pins)引脚接地,然后通过MicroUSB连接主机,usb选择连接到虚拟机,然后,SDK Manager 应该就可以检测到Jetson型号
- 4 然后跟步骤下载镜像即可(虚拟机的系统可用空间理论上应该至少有20G,在创建虚拟机时尽量选择大一些的磁盘空间,我选的50G)
我烧的镜像版本是jetpack 4.6.2,对应的系统是ubuntu18.04,由于选的pre-config,所以应该是烧完即用的那种。
接上屏幕,鼠标,键盘就可以操作啦,现在的桌面环境应该是官方unity,就是绿色的那个,还是挺帅的。
理论上,至此镜像烧录好了,我们可以愉快的玩耍了。然而,博主不太喜欢抱着屏幕,并且应用于嵌入式场景往往没有接入屏幕的条件,如无人机导航场景,因此接下来我要找个合适的远程桌面方法,便于我在本地主机快速稳定访问jetson。
2 配置远程连接
官方镜像下载完后,我们的首要任务就是利用屏幕、键盘、鼠标这些外设先给jetson连上网络,并且知道它的ip地址(方便起见,可以设置个静态ip)。
当然,如果手头没有这些外设,也是可以配置网络的,我们利用usb线与我们的主机相连,然后使用串口建立连接,我使用的软件是 MobaXterm,可以开串口连接功能,同时有不错的命令行ui。详情可以见 官方指导 中的Initial Setup Headless Mode模块中了解一下。
个人试了一下,连了usb后,也可以直接使用ssh协议进行连接,使用的ip地址是192.168.55.1,这应该不是真正的网络ip,似乎是官方配置的一种虚拟ip,这个物理层上应该还是走串口,因为信息的流动还是通过硬件usb来建立的。
然后,可以借助nmcli(Network Manager Command-Line)这个软件来管理网络,软件是系统自带的,有这个需求的童鞋可以自行百度了解下用法。
配好网络后,就可以利用tcp/ip连接来进行远程访问了。一般来讲可以利用ssh协议进行连接,ssh一般工作在网络端口22,如果要对应OSI模型的话,应该处于传输层(Transport),这一层提供端到端的服务,所谓的端到端是指应用进程到应用进程。换言之,只要两台主机都运行了ssh进程,就能从一台主机的ssh进程自上而下,依次通过传输层、网络层、数据链路层、物理层,再自下而上通过物理层、数据链路层、网络层、传输层到达另一台主机的ssh进程,这样,就借助网络实现了两台主机的连接,这种连接当然可以是无线的,无线电磁波嘛,最熟悉的应该就是WiFi了。
烧录好的系统中已经有openssh服务了,也就是说,系统里有运行的ssh服务,所以在本地使用ssh协议就可轻松远程访问它。
ssh协议如何使用呢?有很多软件都可以使用,我使用的是 MobaXterm。利用jetson的ip地址和用户密码即可。如图:
理论上,ssh已经完全够用了,满足我们的远程连接需求。但空洞的命令行实在是有些无趣,要是能搞一个远程桌面就十分的舒适优雅了。不过,就博主的一些浅薄经验来看,使用VNC是不太行的,一个重要的原因是,它的时延太大了,用起来很不舒服。找啊找,终于找到了一个不错的解决方案,就是 Nomachine+Xfce4 的方案,这种方法的远程桌面使用起来非常流畅,时延很小,令我十分滴舒服。如图:
教程可以见nomachine官方,Tips for using NoMachine on NVIDIA Jetson。
也可以看国外友人的视频,更直观易懂,HOW TO SETUP NO MACHINE IN JETSON NANO。
自己简单解释一下,
nomachine就是一种远程桌面软件,即下即用,jetson NX的cpu是arm V8架构,据此下载对应的软件版本即可。Xfce4则是一种轻量级桌面环境,使用它是nomachine推荐的,相比于原桌面,这种桌面的的远程连接明显更流畅。
至此,远程桌面算是配置完了,但是还需要注意两点:
- 1.每次jetson重启后,有个输入用户密码的界面,只有输入密码登录后,jetson才能建立网络连接,然后才能借此进行远程连接,因此必须想办法自动登录,或者跳过这个界面。
- 2.当jetson的hdmi接口没有检测到屏幕时,远程桌面是失效的。
这两个问题的解决方案如下: