什么是Jetson TX1
Jetson TX1是NVIDIA第二代嵌入式平台开发者套件,虽然只有信用卡大小,但Jetson TX1 GPU模块的浮点运算能力却达到1 Teraflops,相比Jetson TK1有巨幅提升。如此强大的性能,Jetson TX1显然是智能无人机、机器人最理想的嵌入式解决方案。
Jetson TX1 核心模块
别看核心模块只有信用卡大小,身体里可暗藏玄机:内建256个CUDA核心的NVIDIA Maxwell GPU,64位ARM A57 CPU,4GB LPDDR4内存、16GB闪存、蓝牙、802.11ac Wi-Fi模块和千兆以太网卡,运行Linux for Tegra操作系统。
Jetson TX1 开发者套件
配上坐骑后的Jetson TX1是这个样子的。主板提供了USB 3.0 Type A、USB 2.0、HDMI、M.2 Key E、PCI-E x4、千兆以太网、SD、SATA数据和供电等接口,俨然是台全功能的PC;既然是开发者套件,怎能少了针对硬件创客的扩展接口:GPIO、I2C、I2S、SPI、带流控制的TTL UART、显示器扩展头和摄像头扩展头一个不少。
作为上一代Jetson TK1的用户,自然不会放过性能如此强悍的Jetson TX1。经过了一段时间的使用和体验,这里向大家分享一下粗浅的使用体验,同时以个人观点聊聊Jetson TX1到底能为我们带来哪些想象空间!
开箱体验与基本使用
1
开箱体验
Jetson TX1自带了底座,十分贴心。虽然包装盒内没有附带任何光盘等介质,但Jetson TX1线上资源十分丰富,囊括文档及软件工具,并且获取十分方便。
Jetson TX1 开发者套件庐山真面目
Jetson TX1模块已预先安装在主板上,Wi-Fi天线连接线也已接好,同时整个核心模块由一个巨大的散热片覆盖,并配备了风扇,为了保证系统运行稳定和兼顾控制能耗,按照系统设定,该风扇仅在系统高负荷运行时才会启动,平时系统主要依靠散热片被动散热,由此可见NVIDIA在保证系统稳定并兼顾控制能耗上的细致,毕竟这样一块计算能力达到1Teraflops的Jetson TX1,功耗峰值才10W。
Jetson TX1与Jetson TK1
由于配备了更多的扩展接口,所以Jetson TX1比Jetson TK1主板面积要大一些。较大的外形也暗示着TX1拥有的更强性能和带给开发者的想象空间。
2
开发环境搭建
在正式进入Jetson TX1开发的奇幻之旅前,先简单介绍一下Jetson TX1开发环境的配置,在这里我们需要预先准备下列项目:
注册NVIDIA开发者帐号并加入“Embedded Development Program”
NVIDIA为开发者提供了涵盖Jetson TX1方方面面的文档资源和软件资源
Jetson TX1相关的文档和软件工具都可以通过Embedded Download Center下载
安装妥当的Jetson TX1
准备完毕后,在Host电脑为JetPack安装包增加运行权限并执行,JetPack安装程序将通过图形界面引导开发者完成开发环境的配置,开发者只需依照自己的开发配置在安装程序的引导下做出选择即可,整个过程非常简约,界面友好。
值得注意的是JetPack安装程序不仅可以在Host电脑和Jetson TX1上搭建开发环境,同时还可以对Jetson TX1进行刷机,用来恢复出场设置和升级最新的操作系统版本,使用JetPack刷机比用命令行工具更加简便和不易出错。
在Host电脑上为JetPack安装包添加运行权限并执行
全程只需要依据安装引导进行配置即可
在Jetson TX1上测试开发编译环境是否安装成功
3
小试牛刀——运行/开发环境初探
运行环境方面,JetPack搭建好开发环境后,Jetson TX1将重启并引导之图形界面。目前Jetson TX1上最新的操作系统为Linux For Tegra R24.1,该操作系统在用于ARM架构的Ubuntu 14.04 LTS版本基础上定制开发。Ubuntu在国内拥有庞大的用户基础和社区环境,基于Ubuntu定制开发的Linux For Tegra对于发者们来说,在界面,命令和操作习惯等方面非常熟悉,极易上手;与此同时,开发者使用过程中遇到的问题,除了官方论坛外,也可以在更广泛的Ubuntu操作系统社区环境内向众大神寻求帮助。
Jetson TX1操作系统 Linux for Tegra概览
一般来说,针对嵌入式平台的开发有两种编译模式:原生编译和交叉编译。原生编译就是直接在嵌入式平台上编译代码并运行,而交叉编译就是在个人电脑等平台编译代码,然后加载到嵌入式平台运行。我们在Jetson TX1开发上使用交叉编译。这里需要提醒一下各位小伙伴,交叉编译需要在Jetson TX1和Host电脑间同步代码,所以需要提前安装和配置Git,否则在后续编译执行的时候会报错的呦,开发工具会深情地问你“Can you tell me who you are”。
NVDIA Nsight启动界面
NVDIA Nsight操作界面
Jetson TX1使用的开发工具NVDIA Nsight是基于eclipse定制开发,其界面和操作习惯于eclipse基本保持一致,消除了开发人员的熟悉工具的时间和精力消耗。
接下来分享下在Jetson TX上创建,编辑,生成和运行一个项目的过程。
NVIDIA Nsight新建项目中目标系统设置
NVIDIA Nsight新建项目中目标系统设置
NVIDIA Nsight新建项目中目标系统设置
由于使用交叉编译模式,所以在新建项目时,需要指定目标系统,即实际编译运行程序的系统——Jetson TX1。这里按提示输入Jetson TX1的网络地址,用户名,以及Jetson TX1上CUDA Toolkit的安装路径就可以了。
如果不知道Jetson TX1上CUDA Toolkit的路径也没有关系,新建项目向导很贴心的设置了一个“自动检测”的功能,只要轻轻一点,向导会自动搜寻CUDA Toolkit的路径,非常方便。
NVIDIA Nsight代码编辑视图
NVIDIA Nsight代码编辑与eclipse完全一致,只是增加针对CUDA代码的代码补全,高亮提示以及语法检查,用惯eclipse的开发者绝对能感觉到屠龙在手,天下我有。
NVIDIA Nsight远程运行项目对话框
NVIDIA Nsight远程运行项目对话框
同样的,在按照工具的提示配置好Jetson TX1后,就可以完成程序的编译,运行,然后坐等收获结果!
软硬件配置概览
在简单介绍了Jetson TX1以及它的开发环境后,现在从Jetson TX1的软硬件配置入手,来探索Jetson TX1开发者套件带给广大开发者的无限可能。
初步的使用感受
在基础开发环境配置过程中,最令人映像深刻的感受有以下两点: