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系統自帶的軟件源步驟如下:
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。


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安裝配置

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容