本文主要分为三个部分
- Jetson TX2刷机流程
- Jetson TX2刷机后USB无法使用
- Jetson TX2上caffe安装配置
- Jetson TX2系统镜像与恢复
TX2刷机流程
刷机前准备
- 带有ubuntu16.04系统的电脑(用作主机)。主机的剩余空间应大于100G。
- 下载JetPack3.3
下载地址:https://developer.nvidia.com/embedded/jetpack
需要注册NVIDIA账号, 登陆下载。 - 如果下载文件出问题,可以考虑换源
修改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的安装
- 进入下载的JetPack包的文件夹,修改其权限
chmod +x ./JetPack-L4T-3.3-linux-x64_b39.run
- 安装JetPack3.3
./JetPack-L4T-3.3-linux-x64_b39.run
出现下图, 点击Next。
-
出现以下页面之后, 确定安装路径和下载路径,默认即可
-
Next, 选择Jetson TX2,Next。
-
选择 “ full ”选项,然后继续点击 Next出现如下的页面
-
全部选择接受,继续点击Next,出现如下的页面
-
下载完毕,继续点击 Next出现如下的界面
-
继续点击 Next 出现如下的界面
- 选择上图所示, 此时用一根网线将TX2和主机连入同一个路由器,并在主机上ping一下看能否ping通
ifconfig #在TX2上查看TX2IP
ping TX2的IP # 在主机上ping
-
一直Next
- 此时,将TX2断电,并将TX2开发板的 microUSB 和主机相连,然后再将TX2上电开机,紧接着按下TX2的RECOVERY按键不松手,接着按下RESET按键并松手3秒后再松开RECOVERY按键。一定要按顺序来。
- 重开一个终端,输入命令:lsusb,看是否出现有 “NVIDIA Corp”,如出现则说明已成功进入Recovery模式。
-
当成功进入Recovery模式后, 我们便在如下的界面终端中按入 Enter 进行后面的操作
- 在13操作执行完以后便开始进行刷机,这期间就是等待
如果在等待的过程中遇到下面的坑,主机一直搜索TX2的IP地址,无法进行下去。但是此时你主机和TX2却是能相互ping通的。
解决方案参考TX2超详细,超实用刷机教程(亲测有效,所有步骤都是博主亲自实践过)
先别选 2 选项,在TX2的系统上,我们进入 home 文件下发现有 “ report_ip_ to_host.sh ”,我们在终端用权限打开该文件,并在文件里面写上主机的 IP 地址。然后在TX2的终端执行如下的命令,主机端执行 Retry 即可解决上诉问题,接着执行剩余的刷机工作。 - 紧接着在执行过程中又会跳出如下的问题,显示不能在TX2上安装cuda,此时进入TX2根据提示用sudo apt-get install进行安装, 缺什么装什么, 安装好了之后多按几下Enter
sudo apt-get install cuda-toolkit-9-0 libgomp1 libfreeimage-dev libopenmpi-dev openmpi-bin
-
当出现以下界面说明已刷机成功
- 关闭终端,不要移除已下载的文件,以后刷机直接用,点击 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’两个配置文件。
- 备份Makefile.config文件
sudo cp Makefile.config Makefile.config.example
- 修改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
- 修改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安装配置