Jetson nano 系统安装

您所在的位置:网站首页 linux安装nomachine Jetson nano 系统安装

Jetson nano 系统安装

2023-03-01 23:50| 来源: 网络整理| 查看: 265

精选Jetson nano 系统安装 连理o 分类:学习笔记 发布时间 2023.02.27阅读数 142 评论数 0 Contents Jetson Nano 在 EMMC 上安装镜像 U 盘启动和 TF 卡启动 U 盘启动 (复制 eMMC 上系统) TF 卡启动 设置远程登录系统 SDK 安装 使用 SDK Manager 安装 使用指令安装 Linux 操作基础 文件传输、系统备份 风扇配置 AI 环境搭建 PIP3 安装 安装机器学习领域重要的安装包 设置 CUDA 环境 Tensorflow GPU 环境搭建 Pytorch 环境搭建 硬件控制 Jetson-IO - 端口使能 修改设备树使能端口 Camera IMX219-83 Stereo Camera Intel RealSense D435i (深度相机) 安装 SDK 和 pyrealsense2 Python codes 更多资料 References

我是直接购买的微雪 Jetson nano 开发板,它基于 Jetson Nano Module 核心板,提供与官方的 Jetson Nano Developer Kit (B01) 几乎一模一样的外设接口、大小及厚度

Jetson Nano

Jetson Nano Module 参数

在这里插入图片描述

JETSON-IO-BASE-A 底板资源

在这里插入图片描述

(1) 模组卡座:插入 Jetson Nano 核心板 (2) SD 卡扩展卡槽:可以接入 SD 卡做 SD 卡扩展,支持从 SD 卡启动系统 (3) M.2 Key E 接口:可接入 AC8265 无线网卡 (4) 1.25mm 风扇接口 (5) PoE 管脚:不含 PoE 模块 (6) 40 PIN GPIO 扩展接口:兼容树莓派引脚,方便就树莓派外设 (7) 2.54mm 风扇接口 (8) Micro USB 接口:可用于 5V 电源输入或者 USB 数据传输 (9) 千兆以太网端口:10/100/1000 Base-T 自适应,接入 PoE 模块可支持 PoE 供电 (10) 4 路 USB 3.0 接口:支持从 USB 启动系统 (11) HDMI 高清接口 (12) DisplayPort 接口 (13) DC 电源接口:可用于 5V 电源输入 (14) 2 路 MIPI CSI 摄像头接口

在 EMMC 上安装镜像

如果购买的是微雪提供的带核心板的 Nano 套件,出厂的时候就已经预先烧好了 JetPack4.6 镜像在 emmc 上,且已经设置了 SD 卡识别,可以跳过这一步。如果需要修改 SD 卡启动,请查看使用手册修改启动路径即可

安装过程可参考 系统环境搭建 和 在 EMMC 上安装镜像

U 盘启动和 TF 卡启动

我们可以额外地烧录系统到 U 盘或者 TF 卡,然后从 U 盘或者 TF 卡启动系统 (因为 EMMC 容量较小,所以有必要把系统装在 U 盘或 TF 卡上)。U 盘启动或 TF 卡启动都是先启动核心板里的 EMMC 上的系统,再由核心板的系统引导到 U 盘上启动或 TF 卡上启动,因此在准备 U 盘启动或者 TF 卡启动时,必须先确保成功烧录 EMMC 系统。核心板里的系统可以使用虚拟机中的 SDK Manager 来烧录系统;TF 卡系统可以使用 Win32DiskImager 来烧录系统;U 盘里的系统使用虚拟机烧录

U 盘启动 (复制 eMMC 上系统)

系统安装

将 U 盘接入 Jetson Nano,查看 U 盘的设备号, 例如 sda,打开 Jetson Nano 终端输入

ls /dev/sd_

格式化 U 盘

sudo mkfs.ext4 dev/sda

修改启动路径. 找到语句 APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0, 将 mmcblk0p1 修改为 sda 保存

sudo vi /boot/extlinux/extlinux.conf

挂载 U 盘

sudo mount /dev/sda /mnt

复制系统到 U 盘

sudo cp -ax / /mnt

复制完成后卸载 U 盘(不是拔掉 U 盘)

sudo umount /mnt/

重启系统

sudo reboot

TF 卡启动

设备树时能 SD 卡

在 Ubuntu 主机安装 dtc 软件

sudo apt-get install device-tree-compiler

进入 HW Imager 内核路径下,反编译 dts 源文件

# 若使用的 SDK Manager 软件请使用以下命令 cd ~/nvidia/nvidia_sdk/JetPack_4.6_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/kernel/dtb #(针对不同jetpack,修改对应路径) dtc -I dtb -O dts -o tegra210-p3448-0002-p3449-0000-b00.dts tegra210-p3448-0002-p3449-0000-b00.dtb # 若使用的资源包请使用以下命令 cd sources_nano/Linux_for_Tegra/kernel/dtb sudo dtc -I dtb -O dts -o tegra210-p3448-0002-p3449-0000-b00.dts tegra210-p3448-0002-p3449-0000-b00.dtb

修改设备树

sudo gedit tegra210-p3448-0002-p3449-0000-b00.dts

找到 sdhci@700b0400 部分,将 status = “disable” 改成 status = “okay”,并在下面添加 TF 信息

cd-gpios = ; sd-uhs-sdr104; sd-uhs-sdr50; sd-uhs-sdr25; sd-uhs-sdr12; no-mmc; uhs-mask = ;

在这里插入图片描述

编译 dtb 文件

sudo dtc -I dts -O dtb -o tegra210-p3448-0002-p3449-0000-b00.dtb tegra210-p3448-0002-p3449-0000-b00.dts

烧录系统,Jetson Nano 需进入 recovery 模式,连接到 Ubuntu 电脑

# 若使用的 SDK Manager 软件请使用以下命令: cd ~/nvidia/nvidia_sdk/JetPack_4.6_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra sudo ./flash.sh jetson-nano-emmc mmcblk0p1 # 若使用的资源包请使用以下命令: cd sources_nano/Linux_for_Tegra sudo ./flash.sh jetson-nano-emmc mmcblk0p1

断开 USB 线和跳帽,进行 Jetson Nano 开机配置 检查 SD 卡是否被识别. 如果有识别到 mmcblk1p1 设备,说明 SD 卡被正常识别了

sudo ls /dev/mmcblk_

安装系统 - 直接复制 eMMC 上系统 (该操作会格式化 TF 卡 )

格式化 SD 卡 (如果出现提示已有文件系统就需要先卸载 SD 卡 sudo umount /media/(这里按下 Tab 键自动补全))

sudo mkfs.ext4 /dev/mmcblk1

挂载 SD 卡

sudo mount /dev/mmcblk1 /mnt

复制系统到 SD 卡(该过程没有信息打印请耐心等待)

sudo cp -ax / /mnt

复制完成后卸载 SD 卡(不是拔掉 SD 卡)

sudo umount /mnt/

下载其他镜像

也可以直接在 Github 下载 Jetson nano 镜像进行烧录,例如 A Jetson Nano - Ubuntu 20.04 image with OpenCV, TensorFlow and Pytorch (User: jetson; Password: jetson).

修改从 SD 卡启动系统 (可选)

sudo vi /boot/extlinux/extlinux.conf

找到语句 APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0, 将 mmcblk0p1 改成 mmcblk1, 保存,然后重启系统即可

扩容镜像

注意,如果 SD 卡是 64G 的,在进入系统后,打开终端,输入 df -h,查看磁盘大小,若空间大小显示小于 64G,可以按如下方法扩容镜像:

cd /usr/lib/nvidia/resizefs/ sudo chmod 777 nvresizefs.sh sudo ./nvresizefs.sh sudo reboot

设置远程登录系统

先用网线确保 Jetson nano 和主机在同一局域网下,再用 MobaXterm 远程登录即可。也可以用 NoMachine 或 VNC 登录远程桌面,可参考 NoMachine 登录 和 配置 VNC 服务器

SDK 安装

前面的系统安装的时候只是安装了基本的系统,其他的 JetPack SDK 组件,比如 cuDNN, CUDA, TensorRT, Computer Vision 等都需要在系统正常启动后进一步安装,这里提供安装 SDK 组件的步骤说明。若要安装该部分,请保证是在以 TF 卡或者 U 盘为主系统的情况下,因为下载内容可能会导致 EMMC 磁盘容量告急

使用 SDK Manager 安装

用 USB 数据线连接 Jetson Nano 的 Micro USB 接口到 Ubuntu 主机 (不需要设置 nano为 recovery 模式),Ubuntu 主机电脑运行 sdkmanager 指令打开 SDK Managaer 类似于前面烧录系统的操作,不同的是,在步骤 2 中,不勾选 OS 选项,而是勾选 SDK 选项, 然后 continue 到安装.在下载资源之后,会弹窗提示填写用户名和密码,填写 nano 系统的用户名和密码即可

使用指令安装

sudo apt updatesudo apt install nvidia-jetpack

Linux 操作基础

可参考 Linux 操作基础

文件传输、系统备份

可参考 配置

风扇配置

系统自带温控系统,不必要情况可以不需要手动控制

# 风扇转速调节 # 255 是最大转速,0 是停止 sudo sh -c 'echo 255 > /sys/devices/pwm-fan/target_pwm' # 获取 CPU 温度,可以通过程序智能控制风扇 cat /sys/class/thermal/thermal_zone0/temp

AI 环境搭建

下面操作基于 JetPack4.6 系统镜像,Python 版本为 Python3.6,TensorFlow 版本为 2.5.0,Pytorch 版本为 1.9.0 为例

PIP3 安装

Jetson Nano 中默认安装了 Python3.6 版本,这里直接安装 PIP3

sudo apt update sudo apt-get install python3-pip python3-dev # 默认安装的 PIP 是 9.01 版本,需要把它升级到最新版 python3 -m pip install --upgrade pip python3 -m pip install --upgrade --force-reinstall pip sudo reboot

# 查看 pip3 版本pip3 -V

为了防止出现 “Illegal instruction (core dumped)” 报错,需要在 ~/.bashrc 最后添加

echo “export OPENBLAS_CORETYPE=ARMV8” >> ~/.bashrc

安装机器学习领域重要的安装包

sudo apt-get install python3-numpy sudo apt-get install python3-scipy sudo apt-get install python3-pandas sudo apt-get install python3-matplotlib sudo apt-get install python3-sklearn

设置 CUDA 环境

注意:需要先进行 SDK 安装来安装 CUDA

设置环境变量

sudo vim .bashrc

export PATH=/usr/local/cuda-10.2/bin:$PATHexport LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATHexport CUDA_HOME=$CUDA_HOME:/usr/local/cuda-10.2

# 查看 CUDA 版本nvcc -V

Tensorflow GPU 环境搭建

可参考 Tensorflow GPU 环境搭建

Pytorch 环境搭建

下载依赖库

sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev libopenblas-base libopenmpi-dev

登录英伟达官网下载 Pytorchv1.9.0 安装包 后进行安装

sudo pip3 install torch-1.9.0-cp36-cp36m-linux_aarch64.whl

Torchvision 版本要与 Pytorch 版本相匹配,我们前面安装的 Pytorch 版本为 1.9.0,Torchvision 安装 v0.10.0 版本

pip3 install torchvision==0.10.0

硬件控制

可参考 硬件控制

Jetson-IO - 端口使能

所有 Jetson 扩展板上都会带有 40-pin GPIO 接口,我们可以按需求使能其中的 Special Function I/O (SFIO) (e.g. I2C, I2S, SPI, and so on). 这些端口的默认配置 (绝大多数端口都被默认设置为了 GPIO) 都被存储在了 Jetson 的 Flash 中,在之前我们需要经过复杂的步骤才能对这些端口功能进行重新配置,但从 JetPack 4.3 开始,我们可以使用 Jetson-IO 更轻松地进行端口配置了

Warning: Jetson-io.py 无法支持 Jetson Nano B01 带 emmc 模组版本,因此用户无法通过 jetson-io.py 来直接配置 40PIN 引脚

sudo /opt/nvidia/jetson-io/jetson-io.py

在这里插入图片描述

在这里插入图片描述

使能 SPI

Configure Jetson 40pin Header ⇒\Rightarrow⇒ Configure header pins manually ⇒\Rightarrow⇒ 按回车使能 SPI1 (pins 19,21,23,24,26) ⇒\Rightarrow⇒ Back在这里插入图片描述可以看到,此时 main menu 中已经显示新的端口配置了,SPI 用到的 5 个端口都已被使能在这里插入图片描述 最后保存配置并重启即可完成配置:Save Pin changes ⇒\Rightarrow⇒ Save and reboot to reconfigure pins

修改设备树使能端口

对于无法使用 Jetson-IO 的情况,就只能直接修改设备树文件来使能端口 (下面的操作需要重装系统,请谨慎操作)

资源下载 (Jetpack 4.6.2)

如果之前用 SDK Manager 安装过系统镜像,可以直接在上面修改设备树。 如果没有的话,需要参考以下资源下载部分先进行操作 在 ubuntu 电脑新建一个文件夹

sudo mkdir sources_nanocd sources_nano

下载以下两个资源包

wget https://developer.nvidia.com/embedded/l4t/r32_release_v7.2/t210/jetson-210_linux_r32.7.2_aarch64.tbz2wget https://developer.nvidia.com/embedded/l4t/r32_release_v7.2/t210/tegra_linux_sample-root-filesystem_r32.7.2_aarch64.tbz2

解压资源

sudo tar -xjvf jetson-210_linux_r32.7.2_aarch64.tbz2 cd Linux_for_Tegra/rootfs/ sudo tar -xjvf ../../tegra_linux_sample-root-filesystem_r32.7.2_aarch64.tbz2 cd ../ sudo ./apply_binaries.sh # 若出现报错按照系统提示操作,然后再次输入该行命令

修改设备树

安装 dtc 工具

sudo apt-get install -y device-tree-compiler

反编译出 dts 文件

cd kernel/dtbsudo dtc -I dtb -O dts -o tegra210-p3448-0002-p3449-0000-b00.dts tegra210-p3448-0002-p3449-0000-b00.dtb

修改 dts 文件

sudo cp tegra210-p3448-0002-p3449-0000-b00.dts tegra210-p3448-0002-p3449-0000-b00-bak.dtssudo gedit tegra210-p3448-0002-p3449-0000-b00.dts

找到 spi@7000d400{} 部分,在其中的 spi@0 结构和 spi@1 结构分别添加语句 status = “okay”在这里插入图片描述 找到 spi1 的引脚设置,将其中的 nvidia,function 改为 spi1, nvidia,tristate 改为 0x0, nvidia,enable-input 改为 0x1. 如图, 五个引脚都要操作在这里插入图片描述 保存文件,并重新编译为 dtb. 注意,如果你还需要修改 SD 卡等操作,请一起在设备树中进行修改

sudo dtc -I dts -O dtb -o tegra210-p3448-0002-p3449-0000-b00.dtb tegra210-p3448-0002-p3449-0000-b00.dts

重新烧录系统

将 nano 设置为 recovery 烧录模式,接入 ubuntu 电脑。注意,这里不支持只更新 dtb 分区,因此需要重新烧录整个系统,烧录系统后需要重新做开机配置,因此,请提前将 HDMI 屏幕和键盘连接到 nano 上

cd ../../sudo ./flash.sh jetson-nano-emmc mmcblk0p1

加载内核模块

pip install spidev

echo “sudo modprobe spidev” >> ~/.bashrcsource ~/.bashrc

测试 SPI

加载 spidev

git clone https://github.com/rm-hull/spidev-testcd spidev-test/gcc spidev_test.c -o spidev_test

用一根排线将 nano 40PIN 的 19 和 21 号引脚短接,运行程序测试,如果中断打印信息 RX 和 TX 可以正常的发送和接受信息即可

./spidev_test -v -D /dev/spidev0.0 -p “Test”

在这里插入图片描述

Camera

IMX219-83 Stereo Camera

硬件连接

将两条摄像头排线,金属面朝向散热板插入 Jetson Nano 开发套件上的摄像头接口

测试摄像头

打开终端,输入以下指令查看设备是否被正常识别到,如果出现 video0 和 video1 就是正常的

ls /dev/video*

测试 video 0

DISPLAY=:0.0 nvgstcapture-1.0 —sensor-id=0

测试 video 1

DISPLAY=:0.0 nvgstcapture-1.0 —sensor-id=1

如果摄像头拍摄效果偏红的话,可以按照一下步骤操作

# 下载 camera-override.isp 文件,解压到特定文件夹 wget http://www.waveshare.net/w/upload/e/eb/Camera_overrides.tar.gz tar zxvf Camera_overrides.tar.gz sudo cp camera_overrides.isp /var/nvidia/nvcam/settings/ # 安装文件 sudo chmod 664 /var/nvidia/nvcam/settings/camera_overrides.isp sudo chown root:root /var/nvidia/nvcam/settings/camera_overrides.isp

Intel RealSense D435i (深度相机)

安装 SDK 和 pyrealsense2

可以使用 pyrealsense2 包来方便地使用 Intel RealSense 深度相机,但 Intel 并没有在 arm 平台上编译 python 包,因此需要自行编译源码

git clone https://github.com/IntelRealSense/librealsense.git

# install necessary packages sudo apt-get install libxrandr-dev sudo apt-get install libxinerama-dev sudo apt-get install libsdl2-dev

mkdir build cd build # cmake 时需要下载一个 github 仓库,因此需要确保网络可以访问 github cmake ../ -DBUILD_PYTHON_BINDINGS:bool=true -DPYTHON_EXECUTABLE=/usr/bin/python3.6 make -j4 sudo make install # 把下面的命令写入 ~/.bashrc export PATH=$PATH:~/.local/bin export PYTHONPATH=$PYTHONPATH:/usr/local/lib export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.6/pyrealsense2

Test

# First import the library import pyrealsense2 as rs # Create a context object. This object owns the handles to all connected realsense devices pipeline = rs.pipeline() pipeline.start() Python codes

ref: Sample Code for Intel® RealSense™ Python Wrapper 如果要获取颜色图和深度图的话,可以参考 align-depth2color.py,它将深度图和颜色图一一对应,这样可以输出颜色图上每个像素点对应的实际深度

更多资料

可参考 资料

References

waveshare Jetson-nano-dev-kit wiki A Jetson Nano - Ubuntu 20.04 image with OpenCV, TensorFlow and Pytorch SPI on Jetson – Using Jetson-IO jetson-io.py がすぐに終了するときの解決策 Ubuntu/Jetson Nano问题解决“Illegal instruction(core dumped)” IMX219-83 Stereo Camera librealsense - Python Wrapper Ubuntu —— librealsense编译报错:The RandR headers were not found 等类似报错解决方案汇总 经验分享JetsonNano镜像安装

打赏 0

点赞 0

收藏 0

分享

微信 微博 QQ 图片 上一篇:PyTorch(一):PyTorch基础 (PyTorch安装、Tensor、autograd、torch.nn、模型处理、数据处理)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3