第二章 开发环境搭建: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为例,走一遍流程:
- 下载镜像:去NVIDIA官网下载Jetson Linux驱动包,大概2-3GB。我建议用L4T R35.x版本,稳定。
- 准备SD卡:至少64GB,Class 10以上。用balenaEtcher或者dd命令写入。
- 烧录命令:进入驱动包目录,执行:
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是预装在系统里的,但版本可能不是最新的。我建议你手动装一遍,确保版本可控。
步骤如下:
- 检查当前CUDA版本:
nvcc --version
如果显示 command not found,说明没装或者没配环境变量。
- 下载CUDA Toolkit:去NVIDIA官网,选择Jetson对应的版本。比如Orin用CUDA 11.8。
- 安装:
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
- 配置环境变量:编辑
~/.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 生效。
- 安装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版本不通用。下载时一定要选 L4T 或 Jetson 版本,别下错了。
好了,环境搭好了,你的Jetson现在是一台真正的GPU开发设备了。下一章,咱们开始写第一个CUDA程序,让GPU跑起来。