问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Jetson Nano系统环境搭建及SD卡启动设置完整指南

创作时间:
作者:
@小白创作中心

Jetson Nano系统环境搭建及SD卡启动设置完整指南

引用
CSDN
1.
https://blog.csdn.net/2301_77416380/article/details/143047865

Jetson Nano是NVIDIA推出的一款面向嵌入式和边缘计算应用的开发板,具有高性能和低功耗的特点,广泛应用于机器人、无人机、智能摄像头等领域。本文将详细介绍如何在Jetson Nano上搭建系统环境以及设置SD卡启动,帮助开发者快速入门并充分利用其强大功能。

1、eMMC系统搭建

部分Jetson Nano开发版出厂时已经在eMMC上搭建过系统,可跳过eMMC系统搭建的步骤。eMMC系统搭建需要用到Ubuntu 18.04系统的主机或虚拟机,使用SDK Manager工具进行烧录。若Ubuntu的虚拟机或主机不是18.04版本或方法一无效可以参考方法二进行系统环境的搭建。

方法一:使用SDK Manager工具搭建系统

  1. 下载SDK Manager烧录工具:
    https://developer.download.nvidia.com/sdkmanager/redirects/sdkmanager-deb.html
    此处需要拥有一个NVIDIA账号,登录后进行下载。

  2. 下载完成后进入下载路径Downloads安装SDK Manager,终端输入:

sudo dpkg -i sdkmanager_1.6.1-8175_amd.deb        #根据自己的版本输入  
  1. 安装完成后系统可能报错找不到依赖文件,输入以下命令解决:
sudo apt --fix-broken install  
  1. 打开Ubuntu电脑终端,运行SDK Manager。

  2. 点击LOGIN,登录NVIDIA账号,会在浏览器弹出链接,输入前面注册邮箱和密码登录进去后退出软件。

  3. 用跳帽或杜邦线短接FC REC和GND引脚,用USB线(一定要可以传输数据的USB线)连接Ubuntu主机或Ubuntu虚拟机所在的主机。

  4. 连接DC电源到圆形供电口使Jetson Nano进入recovery模式。

  5. 重新打开SDK Manager软件,使用虚拟机需要把设备设置为连接到虚拟机上。

  6. 若Jetson Nano被正常识别,SDK Manager会检测到并提示选项。

  7. 在JetPack选项中以4.6系统为例,取消勾选Host Machine,点击CONTINUE。

  1. 选择Jetson OS, 并将Jetson SDK Components的选项去掉。勾选协议,点击CONTINUE。

  2. HW Imager保存的路径默认,选择Create,会自动创建路径。

  3. 从JetPack4.6.1版本开始,用SDK Manager烧系统的时候会弹出preconfig的窗口,按下图选择。(图中的 7. OME Configuration里的Pre-config选项是提前设置用户名和密码,Runtime是在Jetson Nano的开机配置过程中设置用户名和密码)

  1. 输入虚拟机密码,等待下载烧录完成。

  2. 烧录完成之后,去掉底板的跳帽,接入显示器,重新上电,按照提示进行开机配置(如果是设置的pre-config, 上电后直接进入系统)。

方法二:直接下载资源包

  1. unbuntu虚拟机或者主机打开终端,新建文件夹。
sudo mkdir sources_nano
cd sources_nano   
  1. 将资源包移动到文件夹下,下载路径:
    资源包1:
    https://developer.nvidia.com/embedded/l4t/r32_release_v7.2/t210/jetson-210_linux_r32.7.2_aarch64.tbz2
    资源包2:
    https://developer.nvidia.com/embedded/l4t/r32_release_v7.2/t210/tegra_linux_sample-root-filesystem_r32.7.2_aarch64.tbz2
sudo mv ~/Downloads/Jetson-210_Linux_R32.7.2_aarch64.tbz2 ~/sources_nano/            
sudo mv ~/Downloads/Tegra_Linux_Sample-Root-Filesystem-R32.7.2_aarch64.tbz2 ~/sources_nano/   
  1. 解压资源包。
sudo tar -xjf Jetson-210_Linux_R32.7.2_aarch64.tbz2
cd Linux_for_Tegra/rootfs/       
sudo tar -xjf ../../Tegra_Linux_Sample-Root-Filesystem_R32.7.2_aarch64.tbz2
cd ../
sudo ./apply_binaries.sh        #若出现报错按提示操作,再重新输入该指令  

步骤2和3在操作时尽量使用tab键自动补全指令

  1. Jetson Nano进入recovery模式,连接Ubuntu电脑或虚拟机。

  2. 在终端使用命令行进行系统烧录的操作。

cd ~/sources_nano/Linux_for_Tegra
sudo ./flash.sh jetson-nano-emmc mmcblk0p1  
  1. 烧录完成之后,去掉底板的跳帽,接入显示器,重新上电,按照提示进行开机配置。

2、SD卡启动(需要先修改设备树)

此处需要修改设备树,有两种方法分别为在Ubuntu电脑上修改和在Jetson Nano上修改。
在Ubuntu电脑上修改适用于使用资源包配置eMMC系统。
在Jetson Nano上修改适用于使用SDK Manager配置eMMC系统。

方法一:在Ubuntu电脑上修改设备树

  1. 安装dtc软件。
sudo apt-get install device-tree-compiler  
  1. 反编译dts文件。
cd ~/nvidia/nvidia_sdk/JetPack_4.6_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/kernel/dtb
dtc -I dtb -O dts -o tegra210-p3448-0002-p3449-0000-b00.dts tegra210-p3448-0002-p3449-0000-b00.dtb   

此处需要确定自己的资源包位置

  1. 修改tegra210-p3448-0002-p3449-0000-b00.dts源文件,找到如下部分,修改红色位置。
sudo vim tegra210-p3448-0002-p3449-0000-b00.dts  

sdhci@700b0400 {
compatible = "nvidia,tegra210-sdhci";
reg = <0x0 0x700b0400 0x0 0x200> ;
interrupts = <0x0 0x13 0x4> ;
aux-device-name = "sdhci-tegra.2";
iommus = <0x30 0x1b>;
nvidia,runtime-pm-type = <0x0>;
clocks = <0x26 0x45 0x26 0xf3 0x26 0x136 0x26 0xc1>;
clock-names = "sdmmc", "pll_p", "pll_c4_out2", "sdmmc_legacy_tm";
resets = <0x26 0x45>;
reset-names = "sdhci";
status = "okay";
tap-delay = <0x3>;
trim-delay = <0x3>;
mmc-ocr-mask = <0x3>;
max-clk-limit = <0xc28cb00>;
ddr-clk-limit = <0x2dc6c00>;
bus-width = <0x4>;
calib-3v3-offsets = <0x7d>;
calib-1v8-offsets = <0x7b7b>;
compad-vref-3v3 = <0x7>;
compad-vref-1v8 = <0x7>;
pll_source = "pll_p", "pll_c4_out2";
ignore-pm-notify;
cap-mmc-highspeed;
cap-sd-highspeed;
nvidia,en-io-trim-volt;
nvidia,en-periodic-calib;
cd-inverted;
wp-inverted;
pwrdet-support;
nvidia,min-tap-delay = <0x6a>;
nvidia,max-tap-delay = <0xb9>;
pinctrl-names = "sdmmc_schmitt_enable", "sdmmc_schmitt_disable", "sdmmc_clk_schmitt_enable", "sdmmc_clk_schmitt_disable", "sdmmc_drv_code", "sdmmc_default_drv_code", "sdmmc_e_33v_enable", "sdmmc_e_33v_disable";
pinctrl-0 = <0x8c>;
pinctrl-1 = <0x8d>
pinctrl-2 = <0x8e>;
pinctrl-3 = <0x8f>;
pinctrl-4 = <0x90>;
pinctrl-5 = <0x91>;
pinctrl-6 = <0x92>;
pinctrl-7 = <0x93>;
vqmmc-supply = <0x3b>;
vmmc-supply = <0x4c>;
cd-gpios = <0x5b 0xc2 0x0>;
sd-uhs-sdr104;
sd-uhs-sdr50;
sd-uhs-sdr25;
sd-uhs-sdr12;
mmc-ddr-1_8v;
no-sdio;
no-mmc;
uhs-mask = <0xc>;
linux,phandle = <0xba>;
phandle = <0xba>;

  1. 编译dtb文件。
dtc -I dts -O dtb -o tegra210-p3448-0002-p3449-0000-b00.dtb tegra210-p3448-0002-p3449-0000-b00.dts  
  1. 烧录DTB分区,Jetson Nano进入recovery模式,连接到Ubuntu电脑。
cd ~/nvidia/nvidia_sdk/JetPack_4.6_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra
sudo ./flash.sh -k DTB jetson-nano-emmc mmcblk0p1  

方法二:在Jetson Nano上修改设备树

  1. 反编译dts源文件。
cd /boot
sudo dtc -I dtb -O dts -o kernel_tegra210-p3448-0002-p3449-0000-b00-user-custom.dts kernel_tegra210-p3448-0002-p3449-0000-b00.dtb   
  1. 修改kernel_tegra210-p3448-0002-p3449-0000-b00-user-custom.dts源文件,修改位置和方法一相同。

  2. 编译dtb文件。

sudo dtc -I dts -O dtb -o  kernel_tegra210-p3448-0002-p3449-0000-b00-user-custom.dtb kernel_tegra210-p3448-0002-p3449-0000-b00-user-custom.dts  

设置SD卡启动

在修改完设备树后启动Jetson Nano。

  1. 添加用户自定义dtb设置。
sudo vi /boot/extlinux/extlinux.conf  
  1. 打开此文件后添加下面语句,位置如下图。
FDT /boot/kernel_tegra210-p3448-0002-p3449-0000-b00-user-custom.dtb   
  1. 重新启动后可检查SD卡是否被识别。
sudo ls /dev/mmcblk*  

如果有识别到mmcblk1p1设备,说明SD卡被识别。

  1. 查看SD卡挂载目录。
df -h  
  1. 复制根文件系统到SD卡中(此SD卡需要提前格式化为ext4格式)。
sudo cp -ax /  xxxx        #xxxx为sd卡挂载目录  
  1. 修改SD卡作为根文件系统设备。
sudo vi /boot/extlinux/extlinux.conf  

找到语句APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0,将mmclk0p1 改成mmclk1p1, 保存并重启。

3、安装SDK

安装SDK以保证Jetson Nano的完整功能。
此工作可以在进行SD卡启动之前进行。

方法一:使用SDK Manager安装

在使用SDK Manager工具搭建系统时取消了Jetson SDK Components的选项为了确保系统搭建的成功,此时需要将Jetson Nano连接到Ubuntu电脑上使用SDK Manager工具安装Jetson SDK Components。
本次安装时勾选Jetson SDK Components选项取消对Jetson OS选项的勾选

方法二:使用指令在Jetson Nano中安装

正常启动Jetson Nano后在终端输入以下指令直接安装(设备需要联网)。

sudo apt update
sudo apt install nvidia-jetpack  

如果预留的空间很小(4G以下),使用以下命令进行安装 。

sudo apt update
apt depends nvidia-jetpack | awk '{print $2}' | xargs -I {} sudo apt install -y {}  

该流程源自于微雪电子官方提供,本文做简单梳理和总结。
刷机步骤:https://www.waveshare.net/wiki/JETSON-NANO-DEV-KIT
SD卡拓展步骤:https://note.youdao.com/noteshare?id=51828d95abfca4793121e0fd45d3411a

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号