大家好,我是一个写代码的篮球迷。最近朋友写了一篇关于英伟达开发板的文章,和大家分享。
前言:
最近拿到一块jetson nano 2GB版本的板子,辗转反侧,从烧录镜像、修改配件等,准备一篇开箱基础文章介绍给大家AI开发板。
转载授权及旁观者:欢迎关注微信公众号:
或添加作者个人微信:
Jetson nano初步介绍:
Jetson Nano是Nvidia在TX2和Xavier成功后推出的低配版GPU操作平台。在官方信息中,Jetson Nano公布的参数如下:
技术规格:

包含一块128核Maxwell架构的GPU,虽然它已经是几代前的结构,但它在功耗、体积和价格上也是一种平衡,因为它用于嵌入式设备。Nano计算能力不高,勉强可以用一些小规模优化的网络推理,训练还不够。
内存减半的情况确实令人担忧。官方的主要反应是用更轻的桌面环境来替换LXDE。这个已经在10月21日发布了JetPack 4.4.在镜像中提供。
这是我从别人的文章中提取的一些分析,供你参考
Jetson Nano 2GB Developer Kit虽然与4GB的nano相比之下,将内存容量减半,但价格急剧下降40%。对于使用此开发组件作为入门级学习教材的用户来说,这是一个非常划算的选择。笔者还将分析本文两个版本的硬件规格差异和实际性能比较。
Jetson Nano 2GB Developer Kit开放明确的目标是促进教育市场,所以在推出学生价格的同时,规格不会阉割太多,以免影响功能和应用。
Jetson Nano 2GB Developer Kit(文中以2GB简称版)和原版Jetson Nano Developer Kit当然,文章中最大的区别是名字暗示的2GB版仅搭载2GB内存,原版搭载4GB,除容量不同外,信道宽度与时脉和带宽相同。另外,两者的处理器和绘图处理器都是一样的,所以小程序的性能不会有太大的差距,但是2GB由于内存容量不足,版本在执行大型程序时可能需要通过Swap(Linux替换空间可以理解为虚拟内存)存储程序数据,从而影响性能。
另一个可能影响使用的规格是相机的连接端子。原版只有一组MIPI CSI-2端子后期增加到2组,2组GB版则改回1组,只能同时连接1组MIPI CSI-2接口摄像头。
除此之外2GB版也取消了M.2 Key E无线网络模块插槽,DisplayPort图片输出端子,4组USB 3.2 Gen1改为1组USB 3.2 Gen1加2组USB 2.0.这种变化可能对制造商影响不大,但对想将Jetson Nano Developer Kit对于迷你计算机和多媒体娱乐机的用户来说,影响会更大。
最后2GB由5输入版本的电源V DC插座改为USB Type-C端子,这对许多用户来说可能更方便,可以被视为积极的功能改进。
至于和Raspberry Pi 4或是Coral Dev Board与定位相近的产品相比,2GB版本不仅保持了领先的性能优势,而且在降价后提高了价格竞争力。另一方面,2GB还是和原版一样,支持CUDA绘图处理器加速运行TensorFLow、PyTorch、Caffe、MxNet软件框架在行业中很常见,甚至应用于大型计算中心,在学习程序开发中也很受欢迎。虽然2GB版的价格比Raspberry Pi 4贵,但性能、功能、支持软件框架更强。
根据NVIDIA2.官方性能对照表GB版在不同AI软件的性能可以实现Raspberry Pi 数十倍的谱。(图中将Raspberry Pi 4性能标准化为1)
在操作系统部分,作者使用它NVIDIA最新版本Jetson Nano镜像文件,安装完成后会发现它的桌面环境改为LXDE18.04,与先前的Ubuntu接口有点不同,但整体操作仍然相当接近。
值得注意的是,在第一次启动的初始设置过程中,系统将建议用户激活它Swap如果选择默认选项,系统将自动创建约4个容量.95GB在主内存容量不足的情况下,存储数据,发挥虚拟内存的作用。不过由于Swap实际路径为microSD内存卡,因此带宽和访问性能将受到很大限制,反复访问也可能加速内存卡寿命的消耗。
Jetson Nano它可以运行各种高级网络,包括流行网络ML框架的完整原始版本,如TensorFlow,PyTorch,Caffe / Caffe2,Keras,MXNet等。这些网络可用于构建自动机器和复杂性,通过实现图像识别、对象检测和定位、姿势估计、语义分割、视频增强和智能分析等强大功能AI系统。
多流视频分析,Jetson Nano可实时处理8个高清全动态视频流,可部署为网络视频录像机(NVR),低功耗边缘智能视频分析平台智能相机和物联网网关。NVIDIA的DeepStream SDK 使用ZeroCopy和TensorRT优化端到端推理管道,实现边缘和本地服务器的最佳性能。下面的视频显示Jetson Nano在8个1080p物体检测同时在30流上进行。ResNet模型以全分辨率运行,吞吐量为每秒500万像素(MP / s)。
下图显示了流行模型在线推理基准测试结果。有关在 Jetson Nano上运行这些基准测试的说明,请参见 此处。批量1和用于推理FP16精度,采用 JetPack 4.2附带的NVIDIA TensorRT加速器库。Jetson Nano在许多场景中,它具有实时性能,可以处理多个高清视频流。
2GB版与4G原来的性能几乎相同,没有明显的差距,因为它是阉割版本,性能可以说相当令人满意。原因是处理器和图纸处理器的规格完全相同,也可以使用10W电力模式使彼此在计算性能部分具有相同的性能。
从双方的规格差异来看,整体性能差距的主要因素仍然是程序的内存消耗Jetson Benchmarks如果程序使用超过2,工具可能不会触及瓶颈。GB系统需要将部分数据存储在内存中Swap,访问性能瓶颈将形成,整体性能将受到影响。
由于2GB目标用户标用户群是AI程序与AIoT设备入门人员写大型程序的机会不大,所以考虑价格和性能的平衡确实是一个很好的选择,非常适合教育单位或初学者。
您可以在官方网站上搜索相应的开发板,查看相应的,点击下面的网站 https://developer.nvidia.cn/embedded/learn/getting-started-jetson#support
我使用的是2GB所以我选择了里面的版本 Jetson Nano 2GB Developer Kit
打开其中的User Guide选项
选择后,我们可以看到板的详细硬件信息。或者您可以直接使用此传送门查看信息。
详细介绍硬件信息,
配合上图介绍这块板,硬件对应的位置:
标号 | 详细作用 |
---|---|
[DS1] | 电源LED;显影剂套件通电时亮起 |
[J1] | Jetson模块的SO-DIMM接头。在开发工具包上预先组装模块。 |
[J2] | 用于5V?3A电源的USB C型电源连接器。见电源部分 |
[J3] | RJ45以太网连接器。参见网络部分 |
[J4] | HDMI接口 |
[J5] | 用于MIPI-CSI2相机的相机连接器。请参见相机部分 |
[J6] | 40针:包括电源引脚:( 5V/ 3.3V)和I2C(2x)、UART、SPI(2x)、I2S和GPIO接口信号引脚 |
[J7] | 4针风扇控制头。支持脉宽调节(PWM)输出和转速表输入 |
[J8] | 货币电池插座可选 |
[J9] | USB 3.0 A类型连接器。限于1A总功率输出 |
[J10] | 两个USB 2.0 A类连接器堆叠只支持主机模式 |
[J11] | 可选按钮头(2x4);包括复位/强制恢复/电源按钮和禁止自动上电的连接 |
[12] | 按钮头(1x12);包括电源LED、复位/强制恢复/电源按钮、UART和自动上电禁用的连接 |
[J13] | 支持恢复模式和设备模式的Micro USB 2.0连接器 |
40 针接头 (J6)
40 引脚接头提供对电源、接地和接口信号引脚的访问。
电源引脚
有两个 3.3V 电源引脚和两个 5V 电源引脚。这些是不可切换的;当开发人员套件连接到电源时,电源始终可用。
两个 5V 引脚可用于以每个 2.5A 的电流为开发人员套件供电。(不要同时通过这些引脚和 USB-C 连接器为开发人员套件供电。) 接口信号引脚 所有信号使用 3.3V 电平 默认情况下,所有接口信号引脚都配置为 GPIO,支持 I2C 和 UART 的除外
12 针按钮接头 (J12)
该头提供 GPIO 来控制板的状态。我们额外加的套件的外壳可以连接到此接头。
Pin | 名称 | 描述 | Power |
---|---|---|---|
1 | 电源指示灯 - | 连接到 LED 阴极以指示系统睡眠/唤醒(系统处于睡眠模式时关闭) | +5V |
2 | 电源指示灯 + | 连接到 LED 阳极(见引脚 1) | +5V |
3 | UART2_RXD 收到 | + 3.3V | |
4 | UART2_TXD 发送 | + 3.3V | |
5 | 锁存器 | 连接引脚 5 和引脚 6 以禁用自动开机并需要按下电源按钮(或等效按钮) | +5V |
6 | 闩锁设置按钮 | 连接引脚 5 和引脚 6 以禁用自动开机并需要按下电源按钮(或等效按钮) | +5V |
7 | GND | ||
8 | 复位按钮 将常开按钮连接到引脚 7 和引脚 8。临时按下按钮启动系统复位 | +1.8V | |
9 | GND | ||
10 | 恢复模式按钮 | 将常开按钮连接到引脚 9 和引脚 10。在打开系统电源时按住按钮以将其置于 USB 强制恢复模式 | +1.8V |
11 | GND | ||
12 | 电源按钮 | 将常开按钮连接到针脚 11 和针脚 12。如果自动开机禁用(针脚 5 和针脚 6 已连接),请暂时按下按钮以启动开机 | +5V |
8 针按钮接头 (J11)
这是一个备用的 8 针 (2x4) 按钮接头,可焊接在载板上的位置 J11 上,并用作主按钮接头的替代。
标题详细信息:
总引脚/位置 8
2 排 4 针
间距为 2.54 毫米
无遮挡
通孔垂直
Pin | 名称 | 描述 | Power |
---|---|---|---|
1 | 电源按钮 | 将常开按钮连接到针脚 1 和针脚 2。如果自动开机禁用(针脚 7 和针脚 8 已连接),请暂时按下按钮以启动开机 | +5V |
2 | GND | ||
3 | 强制恢复按钮 | 将常开按钮连接到第 3 针和第 4 针。在打开系统电源时按住按钮使其进入 USB 强制恢复模式 | +1.8V |
4 | GND | ||
5 | 复位按钮 | 将常开按钮连接到引脚 5 和引脚 6。暂时按下按钮启动系统复位 | +1.8V |
6 | GND | ||
7 | 闩锁设置按钮 | 连接引脚 7 和引脚 8 以禁用自动开机并需要按下电源按钮(或等效按钮) | +5V |
8 | 锁存器 | 连接引脚 7 和引脚 8 以禁用自动开机并需要按下电源按钮(或等效按钮) | +5V |
4 针风扇接头 (J7)
J7 位置的 4 针风扇控制接头的引脚排列如下所示。
接头可支持 3 针风扇连接(GND、PWR 和 TACH)或 4 针风扇连接(GND、PWR、TACH 和 PWM)。使用具有 PWM 功能的风扇允许软件根据需要调整风扇的速度。仅支持 5V 风扇。
Pin | 描述 |
---|---|
1 | PWM |
2 | +5V 电源 |
3 | 转速表 |
4 | PWM(脉宽调制) |
控制风扇
风扇可通过PWM控制。
如果要向系统中添加风扇,请选择一个5V风扇:
具有40mm x 40mm的螺钉间距,用于与显影剂套件散热器连接
耗电量 开发工具包的总功耗是载体板、模块和外围设备功耗的总和,由您的特定用例决定。
Jetson模块有两种软件定义的电源模式。电源模式可以通过桌面右上角的UI界面进行切换,也可以按照L4T电源管理指南进行切换。
两种模块电源模式为:
10W-更高性能的默认模式 5W-建议减少能源使用
摄像头
照相机 有关Jetson生态系统支持的摄像头的完整列表,请访问我们的合作伙伴支持的摄像头页面。
所有与Jetson Nano显影剂套件和Jetson Xavier NX显影剂套件兼容的MIPI CSI-2相机也将与Jetson Nano 2GB显影剂套件配合使用。
Name | Manufacturer | Link | Comment |
---|---|---|---|
Raspberry Pi Camera Module V2 | Raspberry Pi | Adafruit | |
Raspberry Pi Camera Module NoIR V2 | Raspberry Pi | Adafruit | |
Raspberry Pi High Quality Camera | Raspberry Pi | Canakit | 仅限Jetson Nano 2GB开发者工具包下载从下载中心下载驱动程序并按照软件包中的说明进行操作 |
安装软排线摄像头模块
要安装摄像头模块,请将其柔性带状电缆连接到摄像头连接器(J5)中。遵循以下步骤:
1.轻轻地提起连接器闩锁(参见第一个图)。
2.插入摄像头带状电缆。(参见第2和第3图)金属触点应朝向显影剂套件的中心。
3.轻轻按下连接器闩锁,直到停止。这可能需要两个手指,每个手指位于闩锁的一端。不要用力过猛。
烧录镜像使用初体验
需要准备:
电源 type-c端口的5V-4A的电源
MicroSD卡(建议最低16GB UHS-1)
HDMI显示屏
USB键盘
USB鼠标
首先我拿到的nano2g版本是只有板子的,如果要板卡运行起来,我还需要准备一张64G的闪迪(建议用闪迪,因为有些内存卡不支持nano),用来烧录nano的镜像,此外还需要一根给板卡供电的type-c端口的电源适配器,大家也可以用现在支持3a或者4a的手机充电器配一个type-c端口的线。
这里要注意自己板子的版本
下载Jetson 下载中心 | NVIDIA Developer并解压得到镜像文件sd-blob.img 镜像下载
下载SD卡镜像,:https://developer.nvidia.com/embedded/dlc/jetson-nano-dev-kit-sd-card-image
下载JetPack(看官网,需要JetsonPack 4.4.1才支持Jetson Nano 2GB ):https://developer.nvidia.com/embedded/jetpack
使用官方的Etcher的SD卡烧录,或者也可以用Win32 Diskimg写入镜像
最好在烧系统前格式化SD卡一下,即 SD Card formatter(官网推荐)
连接外设(鼠标、键盘、显示器)并启动,这里如果我们要进行屏幕显示的启动,除了连接的HDMI显示器,鼠标和键盘也是必须要连接的,在Jetson Nano 2GB Developer Kit里面有描述。
通过这张图,大家可以清晰看到要是启动display,则Monitor, keyboard and mouse是必须的。
烧写完成后,将SD卡插入Jetson Nano,接上显示器和电源开机
最终启动效果如图:
配件使用
硬件风扇 和 wif模块 因为nano使用起来发热挺严重的,所以我在上面加了一个散热的风扇,nano 2g里面默认风扇的配件是没有,所以这个部分也是我自己购买的,不过我没有使用pwm控制的风扇,而是使用了直驱的风扇,并且在nano 2gb 板子上焊接了排插,接入风扇。
排插位置,以及对应的丝印的电源和GND位置:
实际安装情况:
安装之后检测一下CPU温度情况:这部分我们使用了jetson-stats这个包,此外我们也可以使用lm-sensors进行查询CPU实时温度。jetson-stats是一个软件包,用于监测和控制Nvidia Jetson设备的,其中jtop可以实时监测温度;
安装:
sudo apt-get install python-pip
sudo -H pip install jetson-stats
使用:jtop 命令
这个时候在右下角,我们可以看到CPU温度在23.5摄氏度,这个是一个正常温度,而在没有风扇散热情况下,板卡待机的CPU温度能达到33摄氏度。所以还是很有效的散热。
此外因为板卡有时候需要进行下载东西以及进行远程调试,所以我们最好加一个wifi模块,方便我们的工作。
远程VNC 因为nano上面我们想跑一些视觉等等需要界面查看的模型,而不只是单纯的使用命令行进行访问,那么我们就需要用到远程桌面了。
说到远程桌面,可能大家会比较熟悉VNC Viewer这个软件。这里我们介绍如何配合Jetson Nano的 Desktop功能来远程访问。首先,下载并安装VNC Viewer软件到你的电脑上。(这里是下载链接) 需要先用HDMI屏幕和键盘等链接到Jetson Nano
安装vino
sudo apt install vino
设Enable VNC 服务 (此时手动可打开vnc server)
sudo ln -s ../vino-server.service /usr/lib/systemd/user/graphical-session.target.wants
配置VNC server:
gsettings set org.gnome.Vino prompt-enabled false
gsettings set org.gnome.Vino require-encryption false
编辑org.gnome,恢复丢失的“enabled”参数,输入一下命令进入文件,将下方key内容添加到文件的最后面。保存并退出。
sudo vi /usr/share/glib-2.0/schemas/org.gnome.Vino.gschema.xml
设置为Gnome编译模式
sudo glib-compile-schemas /usr/share/glib-2.0/schemas
现在屏幕共享面板在单位控制中心工作…但这并不足以让vino运行!所以您需要在会话启动时添加程序:Vino-server,使用以下命令行:
/usr/lib/vino/vino-server 这种是属于手动启动,如果每次都需要手动启动会比较麻烦下面会设置开机自启动的形式。
设置VNC登陆密码('thepassword' 修改为自己的密码)
gsettings set org.gnome.Vino authentication-methods "['vnc']"
gsettings set org.gnome.Vino vnc-password $(echo -n 'thepassword'|base64)
重启机器,验证是否设置vnc 成功
sudo reboot
设置开机自启动VNC Server
VNC服务器只有在您本地登录到Jetson之后才可用。如果您希望VNC自动可用,请使用系统设置应用程序来启用自动登录。
gsettings set org.gnome.Vino enabled true
mkdir -p ~/.config/autostart
vi ~/.config/autostart/vino-server.desktop
将下面的内容添加到该文件中,保存并退出。
[Desktop Entry]
Type=Application
Name=Vino VNC server
Exec=/usr/lib/vino/vino-server
NoDisplay=true
如果系统设置为需要输入用户密码才可以进入桌面,以上的改脚本需要等进入桌面后才会启动,建议将系统设置为用户自动登录到桌面。
连接VNC Server 使用vnc viewer软件进行VNC连接,首先需要查询ip地址,我这里查到的是172.16.60.147,输入IP地址后点击OK,双击对应的VNC用户输入密码,最后进入到VNC界面
下载安装vnc deb包,链接
启动vnc界面,输入对应IP 进行连接:
结果如图:
nano使用介绍以及资料分享:
镜像完成安装了,使用的基本配套工具也准备好了,那么我们该怎么进行nano的使用呢?下面就给大家分享一些nano使用中,我们可以参考的学习资料,方便大家进行学习使用。
官方资料
首先进入官网最开始的nano介绍网页,里面就有对应的学习引导:
里面有AI的部分,有配合的机器小车的教程。
https://developer.nvidia.cn/embedded/learn/get-started-jetson-nano-2gb-devkit#next
:https://developer.nvidia.com/embedded-computing :https://forums.developer.nvidia.com/
还有jetson nano本身对应的社区,比如jetson projects以及专门tutorials
https://developer.nvidia.cn/embedded/learn/tutorials
大家可以在里面去搜寻符合自己需求的功能,看该项目的的源码或者博文,这是一个很快速的搭建自己工程的方法。
https://developer.nvidia.cn/embedded/community/jetson-projects
这个部分就是比较详细的底层开发的指导了,包含基本的驱动的音视频开发,这个部分属于大家要深度定制化自己的板卡时候对应的资料:
https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-325/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/introduction.html#wwpID0E3HA
NVIDIA JetBot是一个新的开源自动机器人套件,它提供了所有软件和硬件计划,以低于250美元的价格构建一个人工智能的深度学习机器人。硬件材料包括Jetson Nano,IMX219 800万像素摄像头,3D打印机箱,电池组,电机,I2C电机驱动器和配件。https://jetbot.org/master/index.html
国内的一些资料
https://www.ncnynl.com/search/jetson/
jeston nano官方网页里面显示,微雪是nano的国内合作伙伴。https://www.waveshare.net/wiki/Jetson_Nano_Developer_Kit
:https://aijishu.com/u/liumingkang或者微信公众号 NVIDIA英伟达企业解决方案去里面搜索Jetson nano 2GB 就可以看到相关的文章
结语
相比Jetson Nano 4GB 使用的GNOME桌面,Jetson Nano 2GB 使用的是轻量化的LXDE桌面,大幅节省内存。这也是Jetson Nano 2G版可以和4G版本运行大多数相同的项目的原因之一。
NVIDIA Jetson Nano 2GB对于想要运行计算量不大的项目,且预算不多的开发者来说绝对是性价比之选,可以仅以54美元就享受到其4GB版的绝大多数功能,但是不能否认的是其2GB的内存,在需要使用Jetson Nano训练模型的时候会略感缓慢。总而言之,Jetson Nano绝对是性价比之选。配合Jetson社区丰富的项目和课程,可以高效地进行AI学习。可以说是新手入门AI计算的绝佳之选。接下来我们就开始玩起来哈。
这就是我jetson nano使用的初步分享,后面继续分享在一些自己使用这块AI计算板卡的经验。如果大家有更好的想法和需求,也欢迎大家加我好友交流分享哈。
作者:良知犹存,白天努力工作,晚上原创公号号主。公众号内容除了技术还有些人生感悟,一个认真输出内容的职场老司机,也是一个技术之外丰富生活的人,摄影、音乐 and 篮球。关注我,与我一起同行。
‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ END ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧