Jetson Xavier NX 试玩 (一)
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是不太行的,一个重要的原因是,它的时延太大了(可能是jetson的问题,也可能是配置问题),用起来很不舒服。找啊找,终于找到了一个不错的解决方案,就是 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接口没有检测到屏幕时,远程桌面是失效的。
这两个问题的解决方案如下:
- 1.借鉴Ubuntu 20.04的方法,修改/etc/gdm3/custom.conf文件,详情见How to Enable/Disable Automatic Login in Ubuntu 20.04 LTS。ps:试过官方的帖子的方法,但是没有成功
- 2.既然一定要检测到屏幕,那就让它检测到,买个hdmi欺骗器直接插上,问题解决(朴实无华是这样的)。
接下来,就扔掉屏幕,来愉快地玩耍吧。
3 设置系统从固态硬盘启动
由于镜像系统是烧在jetson的eMMC里的,这里只有16GB,有些小了。同时,我这个版本的jetson NX买时送了一个128GB的固态硬盘,因此我们需要利用起这个有利资源来。
微雪官方给的指导我没有执行成功。
参考了csdn的一个博客,NVIDIA JETSON XAVIER NX 从SSD盘启动。这个帖子使用了一个开源脚本,其作者是JetsonHacks,是jetson的开发者之一,膜拜一下。
直接说一下我的流程吧,
3.1 格式化ssd
虽然是新的,不必格式化,但是我一开始是跟微雪官方说的方法走的,就先格式化了,不过也无伤大雅。
sudo mkfs.ext4 /dev/nvme0n1
nvme0n1就是指ssd存储硬盘
3.2 创建分区
格式化后硬盘,就要重新设置分区,就和设置windows上的C盘、D盘差不多吧。
用到了一些命令行知识,见这里,Ubuntu下移动硬盘的分区、格式化、挂载操作。
设置分区的命令
sudo fdisk /dev/nvme0n1
然后输入:n、p、1、回车、回车、w。
这样就建立了一个分区,大小为硬盘大小,名字默认为nvme0n1p1,这个在后面的脚本中有用到,因此也必须是这个名字。
创建完新分区,先格式化一下,
sudo mkfs.ext4 /dev/nvme0n1p1
3.3 使用脚本
脚本是JetsonHacks开源在Github上的,地址是 https://github.com/jetsonhacks/rootOnNVMe.git
使用步骤如下:
git clone https://github.com/jetsonhacks/rootOnNVMe.git
cd rootOnNVMe/
./copy-rootfs-ssd.sh
./setup-service.sh
reboot
在Github上clone仓库的时候可能会遇到网络的问题,解决方案有很多,我的方法是设置了全局https的代理,所谓代理,就是找一个可以访问所需网站的主机(或者说服务器),将他作为流量转发的中间媒介,大概可以这么说吧,嗯大概。
简单说一下就是,使用这个命令
export https_proxy="http://xxx.xxx.xxx.xxx:xxx/"
xxx.xxx.xxx.xxx:xxx就是服务器ip地址加端口号
最终查看一下,确实成功了
Jetson Xavier NX 试玩 (一)的更多相关文章
- HTML5+JS 《五子飞》游戏实现(七)游戏试玩
前面第一至第六章我们已经把<五子飞>游戏的基本工作都已经讲得差不多了,这一章主要是把所有的代码分享给大家,然后小伙伴们也可以玩一玩. 至于人机对战的我们放到后面讲进行分析. 试玩地址:ht ...
- 一个小玩意 PHP实现微信红包金额拆分试玩
<meta charset="utf-8"> <?php // 新年红包金额拆分试玩 class CBonus { public $bonus;//红包 publ ...
- 1.2G内存试玩RAMOS_XP
1.2G内存试玩RAMOS_XP1.为了防止做系统时出现意外,用Bootice把C盘MBR修改为Grub4dos,这样子系统如果失败,可以进入PE重做. 2.进入PE格式化C盘,格式化的时候勾选启用N ...
- 8个经典的HTML5游戏在线试玩及源码学习
原文地址:http://www.oschina.net/news/32364/html5-games 游戏,毫无疑问是拿来供大家娱乐玩耍的,这也无可厚非,但是,今天给大家分享的8个HTML5游戏,在好 ...
- Apollo框架试玩
2017年7月5日,百度举行了AI开发者大会,在会上发布了Apollo项目,并进行了演示,该项目在Github上已经能够被访问.出于一个程序员的好奇,昨天试玩了一把,确实不错. http://apol ...
- 发布到FaceBook试玩广告,FaceBook要求要一个Html文件
Facebook 试玩广告具体要求: 试玩广告参数是创建试玩广告素材时要满足的要求. 试玩素材应为 HTML5 格式. 试玩广告素材不应使用 mraid.js 格式. 包含所有素材的试玩广告的单个 H ...
- [试玩] FMXLinux (Firemonkey for Linux) Linux 桌面开发(第三方插件)
FMXLinux 是一个可以用来开发 Linux 桌面软件的第三方插件,它需要配合 Delphi 10.2 Toyko 官网:http://www.fmxlinux.com/ 使用方法:开启 FMX ...
- ESP32 LyraT音频开发板试玩(二):播放音乐
我是卓波,很高兴你来看我的博客. 系列文章: ESP32 LyraT音频开发板试玩(一):搭建开发环境 ESP32 LyraT音频开发板试玩(二):播放音乐 本文延续上一篇博客 将D:\msys32\ ...
- ESP32 LyraT音频开发板试玩(一):搭建开发环境
我是卓波,很高兴你来看我的博客. 系列文章: ESP32 LyraT音频开发板试玩(一):搭建开发环境 ESP32 LyraT音频开发板试玩(二):播放音乐 关于ESP32的开发环境搭建,官方有教程, ...
- Apollo自动驾驶框架试玩
2017年7月5日,百度举行了AI开发者大会,在会上发布了Apollo项目,并进行了演示,该项目在Github上已经能够被访问.出于一个程序员的好奇,昨天试玩了一把,确实不错. http://apol ...
随机推荐
- 047_SOQL 基本查询总结
User currentUser = [SELECT Id, Profile.Name,UserRole.Name FROM User WHERE Id = :UserInfo.getUserId() ...
- Finance_CAPM&APT
ACCA CAPM: https://www.bilibili.com/video/BV1KE411j7Ri?from=search&seid=14840285521502157259 投资学 ...
- pandas学习记要
本文翻译自文章: Pandas Cheat Sheet - Python for Data Science,同时添加了部分注解. 对于数据科学家,无论是数据分析还是数据挖掘来说,Pandas是一个非常 ...
- FFmpeg 命令行
FFmpeg命令行帮助 #>ffmpeg -h #>ffmpeg -h long #>ffmpeg -h full 将视频按照指定的宽高输出 #>ffmpeg -i input ...
- monogo-shell
创建集合 use person //创建数据库或进入数据库 db.createCollection(table_name) 主键 插入数据时会自动生成主键,保证每条数据唯一性 生成对象主键 > ...
- halcon学习
apply_metrology_model: 目标和背景灰度差别很小,但目标大概位置确定,需要确定目标位置的圆或者矩形: ball:圆形或矩形和图像其他部分相比为特殊图样
- 20192305 王梓全Python程序设计实验三报告
20192305 王梓全Python程序设计实验三报告 课程:<Python程序设计> 班级: 1923 姓名: 王梓全 学号:20192305 实验教师:王志强 实验日期:2021年5月 ...
- 查看linux机器上的cpu个数
1. 查看 cpu 的物理核数cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l 查看每个物理CPU中core的个数( ...
- c++ 保存txt文件
#include <iostream> #include <stdio.h> #include <fstream> #include <queue> # ...
- CvT: Introducing Convolutions to Vision Transformers-首次将Transformer应用于分类任务
CvT: Introducing Convolutions to Vision Transformers Paper:https://arxiv.org/pdf/2103.15808.pdf Code ...