Ubuntu16.04上使用Jetpack3.3对TX2进行刷机

本文主要分为三个部分

  1. Jetson TX2刷机流程
  2. Jetson TX2刷机后USB无法使用
  3. Jetson TX2上caffe安装配置
  4. Jetson TX2系统镜像与恢复

TX2刷机流程

刷机前准备

  1. 带有ubuntu16.04系统的电脑(用作主机)。主机的剩余空间应大于100G。
  2. 下载JetPack3.3
    下载地址:https://developer.nvidia.com/embedded/jetpack
    需要注册NVIDIA账号, 登陆下载。
  3. 如果下载文件出问题,可以考虑换源
    修改Ubuntu系统自带的软件源步骤如下:
  • 把Ubuntu系统自带的源修改为国内的源,中科大源链接:https://mirrors.ustc.edu.cn/repogen/
  • 备份Ubuntu自带的源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
  • 将Ubuntu原有的源替换为国内的源(清华,中科大,阿里云等多尝试)
sudo gedit /etc/apt/sources.list
  • 使更改生效
sudo apt-get update

JetPack3.3的安装

  1. 进入下载的JetPack包的文件夹,修改其权限
chmod +x ./JetPack-L4T-3.3-linux-x64_b39.run
  1. 安装JetPack3.3
./JetPack-L4T-3.3-linux-x64_b39.run

出现下图, 点击Next。


1.png
  1. 出现以下页面之后, 确定安装路径和下载路径,默认即可


    2.png
  2. Next, 选择Jetson TX2,Next。


    3.png
4.png
  1. 选择 “ full ”选项,然后继续点击 Next出现如下的页面


    5.png
  2. 全部选择接受,继续点击Next,出现如下的页面


    6.png
  3. 下载完毕,继续点击 Next出现如下的界面


    7.png
  4. 继续点击 Next 出现如下的界面


    8.png
  5. 选择上图所示, 此时用一根网线将TX2和主机连入同一个路由器,并在主机上ping一下看能否ping通
ifconfig #在TX2上查看TX2IP
ping TX2的IP # 在主机上ping
  1. 一直Next


    9.png

    10.png
  2. 此时,将TX2断电,并将TX2开发板的 microUSB 和主机相连,然后再将TX2上电开机,紧接着按下TX2的RECOVERY按键不松手,接着按下RESET按键并松手3秒后再松开RECOVERY按键。一定要按顺序来。
  3. 重开一个终端,输入命令:lsusb,看是否出现有 “NVIDIA Corp”,如出现则说明已成功进入Recovery模式。
  4. 当成功进入Recovery模式后, 我们便在如下的界面终端中按入 Enter 进行后面的操作


    11.png
  5. 在13操作执行完以后便开始进行刷机,这期间就是等待
    如果在等待的过程中遇到下面的坑,主机一直搜索TX2的IP地址,无法进行下去。但是此时你主机和TX2却是能相互ping通的。
    12.png

    解决方案参考TX2超详细,超实用刷机教程(亲测有效,所有步骤都是博主亲自实践过)
    先别选 2 选项,在TX2的系统上,我们进入 home 文件下发现有 “ report_ip_ to_host.sh ”,我们在终端用权限打开该文件,并在文件里面写上主机的 IP 地址。然后在TX2的终端执行如下的命令,主机端执行 Retry 即可解决上诉问题,接着执行剩余的刷机工作。
  6. 紧接着在执行过程中又会跳出如下的问题,显示不能在TX2上安装cuda,此时进入TX2根据提示用sudo apt-get install进行安装, 缺什么装什么, 安装好了之后多按几下Enter
sudo apt-get install cuda-toolkit-9-0 libgomp1 libfreeimage-dev libopenmpi-dev openmpi-bin
13.png
  1. 当出现以下界面说明已刷机成功


    14.png
  2. 关闭终端,不要移除已下载的文件,以后刷机直接用,点击 finish 完成退出。

Jetson TX2刷机后USB无法使用

参考Jetson TX2刷机后USB无法使用 解决方案
在非公版TX2刷机后可能出现无法使用USB的问题,这是由于官方的底板上采用INA3221芯片做了电源监控电路,只有确保5V电源达到要求的情况下才会使能USB口。而新做的板子上将上述电路省略了,所以导致了USB口无法使用。解决办法就是要给TX2更新设备树。

安装Jetpack3.3

下载链接

下载设备树文件并安装

将设备树下载并解压后放到

Jetpack3.3安装路径/64_TX2/Linux_for_Tegra/kernel/dtb/

确保新的设备树的名字是tegra186-quill-p3310-1000-c03-00-base.dtb或者tegra186-quill-p3310-1000-a00-00-base.dtb。

设备树烧写到TX2中

用USB线连接TX2上, 给TX2板上电,按电源键,之后按住REC键,同时按下RST键,放开RST键后过3秒再放REC键。则TX2进入Recovery模式。在终端中进入下面的路径

…/64_TX2/Linux_for_Tegra

在此路径下执行

sudo ./flash.sh -r -k kernel-dtb jetson-tx2 mmcblk0p1

等一会出现successful后, USB口就可以正常工作。

Jetson TX2上caffe安装配置

安装caffe依赖

touch dependency.sh
gedit dependency.sh
./dependency.sh #需要先赋予读写权限

将以下内容复制到dependency.sh中

# general dependency
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
# BLAS dependency
sudo apt-get install libatlas-base-dev
# python dependency
sudo apt-get install python
sudo apt-get install python-dev
# python dependency etc.
sudo apt-get install python-numpy
sudo apt-get install ipython
sudo apt-get install ipython-notebook
sudo apt-get install python-sklearn
sudo apt-get install python-skimage
sudo apt-get install python-protobuf
# google dependency
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

从git上下载caffe源码

sudo apt-get install git
git clone https://github.com/BVLC/caffe.git

根据配置需要修改配置文件。

在开始编译之前,需要进入caffe目录修改’Makefile.config’和’Makefile’两个配置文件。

  1. 备份Makefile.config文件
sudo cp  Makefile.config Makefile.config.example
  1. 修改Makefile.config文件
1.使用CuDNN(取消USE_CUDNN := 1前的‘#’)
2.使用OpenCV v3(取消OPENCV_VERSION := 3前的‘#’)
3.由于使用的是CUDA9版本,按要求修改了代码(删除了CUDA_ARCH变量的前两行,具体可看配置文件里该变量的前几行)。
4.使用python接口(取消WITH_PYTHON_LAYER := 1变量前的’#’)
5.修改python路径如下:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
  1. 修改Makefile文件:
将:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
将:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改为:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_

编译源码

make -j4 #进入caffe安装目录
make pycaffe
sudo gedit ~/.bashrc
#添加
export PYTHONPATH=~/caffe/python:$PYTHONPATH
# 使环境变量生效
source ~/.bashrc

Jetson TX2 系统备份与恢复

参考tx2系统备份与恢复
Ubuntu16.04 主机进入已经刷过TX2的,安装Jetpack3.3的文件夹中

制作系统镜像(包含TX2上所有文件)

1. cd ~/64_TX2/Linux_for_Tegra
2. 用刷机原装NVIDIA USB线连上TX2,并进入recovery模式(通电[必须先拔电],一直按住recovery键,不要松开recovery键,再按一下reset键, 3秒后松开)
3. 终端下lsusb #查看是否出现Nvidia Corp
执行以下命令从TX2下载镜像
4. sudo ./flash.sh -r -k APP -G my_backup.img jetson-tx2 mmcblk0p1
大概要花30分钟左右完成镜像下载。
生成的备份文件my_backup.img 在~/64_TX2/Linux_for_Tegra/目录下
以下步骤非必须
5. 分配权限,并压缩保存:(这步可要可不要)
sudo chmod 744 my_backup.img  
tar -zcvf my_backup.img.zip my_backup.img  
6. 备份后也可以挂载到ubuntu下进行相应编辑,可以查看系统镜像文件有没有正确生成
sudo mount -o loop my_backup.img  /mnt/ 

系统镜像恢复

1. cd ~/64_TX2/Linux_for_Tegra #进入主机的JetPack安装目录下Linux_for_Tegra_64目录
2. sudo cp my_backup.img system.img #复制my_backup.img为system.img
3. cd ~/64_TX2/Linux_for_Tegra/bootloader
   cp system.img system_bak.img.bak
#进入主机的JetPack安装目录下bootloader目录,删除或者备份原来的system.img ,这里选择备份
4. mv ../system.img ./ #移动生成的新镜像文件到bootloader目录
5. 连上TX2,并进入recovery模式(通电[必须先拔电],一直按住recovery键3秒,不要松开recovery键,再按一下reset键)
6. lsusb    #检查是否出现0955:7140 Nvidia Corp
7. cd ../
# 退出到上一层目录,使用flash.sh开始烧录
# 此时在~/64_TX2/Linux_for_Tegra/目录下执行下述命令
sudo ./flash.sh -r  jetson-tx2 mmcblk0p1

等代完成即可。
镜像恢复以后, 重新进入恢复模式, 重新刷一下USB。

# 记得更新dtb文件
cd …/64_TX2/Linux_for_Tegra
sudo ./flash.sh -r -k kernel-dtb jetson-tx2 mmcblk0p1

参考

TX2超详细,超实用刷机教程(亲测有效,所有步骤都是博主亲自实践过)
Jetson TX2 刷机教程(JetPack3.3版本)
tx2系统备份与恢复
Jetson TX2刷机后USB无法使用 解决方案
Jetson TX2学习笔记(二):caffe安装配置

你可能感兴趣的:(Ubuntu16.04上使用Jetpack3.3对TX2进行刷机)