第二章 开发环境搭建:Jetson Nano/NX/Orin开发套件介绍、系统烧录、SSH远程连接、安装CUDA和cuDNN

好,咱们正式开始动手了。这一章,我带你把开发环境搭起来。说实话,嵌入式GPU开发最怕什么?最怕环境没配好,后面跑demo跑不通,还找不到原因。我见过太多新手卡在这一步,一卡就是好几天。

咱们的目标很明确:拿到一块Jetson开发板,烧好系统,能远程连上去,再把CUDA和cuDNN装好。走完这一套,你才算真正入了门。

2.1 Jetson家族:Nano、NX、Orin怎么选?

先聊聊硬件。Jetson系列目前主流的有三款:Nano、NX、Orin。我个人的建议是,如果你是学生或者预算有限,先搞一块Nano练手,几百块钱,够你玩大半年。如果你要做项目落地,直接上Orin,性能翻了好几倍。

这三款的核心区别,我整理了一张表:

型号 AI算力 内存 典型功耗 适合场景
Jetson Nano 472 GFLOPS 4GB 5W-10W 入门学习、轻量推理
Jetson NX 21 TOPS 8GB 10W-25W 中等负载、边缘计算
Jetson Orin 275 TOPS 16GB/32GB 15W-60W 高负载、实时视频分析

你想想看,Nano的算力是472 GFLOPS,Orin直接干到275 TOPS,差了将近600倍。为什么会这样?因为Orin用了Ampere架构的GPU,Tensor Core数量翻了好几番。我在项目中用Orin跑YOLOv8,1080p的视频能跑到60帧,Nano只能跑十几帧。

核心观点:选板子别只看算力,还要看你的功耗预算和散热条件。Orin性能强,但发热也猛,没个好散热器,跑一会儿就降频了。

2.2 系统烧录:别怕,就三步

拿到板子第一件事,烧系统。Jetson官方推荐用SDK Manager,但我个人习惯用命令行烧录,更可控,也更适合批量操作。

这里我以Jetson Orin为例,走一遍流程:

  1. 下载镜像:去NVIDIA官网下载Jetson Linux驱动包,大概2-3GB。我建议用L4T R35.x版本,稳定。
  2. 准备SD卡:至少64GB,Class 10以上。用balenaEtcher或者dd命令写入。
  3. 烧录命令:进入驱动包目录,执行:
cd Linux_for_Tegra
sudo ./flash.sh jetson-orin-nano-devkit mmcblk0p1

嗯,这里要注意。烧录过程中千万别断电,否则板子变砖的概率很高。我曾经有一次烧到一半,不小心踢了电源线,结果板子起不来了,折腾了一下午才救回来。

避坑指南:烧录前先检查电源适配器,Nano用5V/4A,Orin用19V/6.5A。电压不对,烧录必失败。

2.3 SSH远程连接:解放你的桌面

系统烧好了,你肯定不想每次都接显示器、键盘、鼠标。太麻烦了。SSH远程连接才是正经事。

Jetson默认开启了SSH服务,你只需要知道它的IP地址。我一般这么操作:

  • 用网线直连路由器,或者用Jetson自带的WiFi模块连上局域网。
  • 在Jetson终端输入 ifconfig 查看IP,比如 192.168.1.100
  • 在你的电脑上(Windows用PuTTY,Mac/Linux直接用终端):
ssh nvidia@192.168.1.100

默认密码是 nvidia。第一次连上后,我建议你立刻改密码,并配置SSH密钥登录,省得每次输密码。

小技巧:在路由器里给Jetson绑定静态IP,这样IP不会变,省得每次都要查。我习惯把Jetson的IP固定为192.168.1.200,好记。

连上SSH后,你就能在电脑上操作Jetson了。复制文件用scp,或者用VS Code的Remote-SSH插件,直接在电脑上写代码,远程编译运行,非常爽。

2.4 安装CUDA和cuDNN:核心中的核心

环境搭好了,接下来装CUDA和cuDNN。这是嵌入式GPU编程的基石。没有它们,你的GPU就是个摆设。

Jetson的CUDA是预装在系统里的,但版本可能不是最新的。我建议你手动装一遍,确保版本可控。

步骤如下:

  1. 检查当前CUDA版本:
nvcc --version

如果显示 command not found,说明没装或者没配环境变量。

  1. 下载CUDA Toolkit:去NVIDIA官网,选择Jetson对应的版本。比如Orin用CUDA 11.8。
  2. 安装:
sudo dpkg -i cuda-repo-l4t-11-8-local_11.8.0-1_arm64.deb
sudo apt-get update
sudo apt-get install cuda-toolkit-11-8
  1. 配置环境变量:编辑 ~/.bashrc,添加:
export PATH=/usr/local/cuda-11.8/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH

然后 source ~/.bashrc 生效。

  1. 安装cuDNN:cuDNN是CUDA的深度学习加速库。下载对应版本的deb包,安装:
sudo dpkg -i libcudnn8_8.9.0.131-1+cuda11.8_arm64.deb
sudo dpkg -i libcudnn8-dev_8.9.0.131-1+cuda11.8_arm64.deb

验证安装:运行 nvidia-smi,如果能看到GPU信息,说明CUDA装好了。再跑一个 deviceQuery 示例程序,确认cuDNN也能用。

我记得第一次装cuDNN时,忘了装依赖库,结果编译示例程序报了一堆链接错误。后来发现是libcudnn8没装全。所以,装完后一定要跑个demo验证一下,别偷懒。

2.5 常见问题与避坑

环境搭建过程中,有几个坑我帮你提前踩了:

  • 烧录失败:检查SD卡是否损坏,换一张卡试试。我遇到过劣质卡写入速度慢,烧录到一半超时。
  • SSH连不上:先ping一下IP,能ping通说明网络没问题。再检查Jetson的SSH服务是否启动:sudo systemctl status ssh
  • CUDA版本不匹配:cuDNN必须和CUDA版本严格对应。比如CUDA 11.8只能用cuDNN 8.9.x,别混着装。

重要提醒:Jetson的CUDA是ARM架构的,和PC上的x86版本不通用。下载时一定要选 L4TJetson 版本,别下错了。

好了,环境搭好了,你的Jetson现在是一台真正的GPU开发设备了。下一章,咱们开始写第一个CUDA程序,让GPU跑起来。