Nvidia Jetson TX2 使用ubuntu 16.04刷Jetpack 3.2碰到的一些坑

刚入手了一块Nvidia Jetson TX2的开发套件,首先刷机到jetpack 3.2碰到的一些坑以及解决方法。
坑1: 机器缺少Hdmi的连接线
解决方法:网上新购一条,又等了几天才能接上开发板用

坑2:PC主机使用的是虚拟机安装的Ubuntu 16.04,磁盘预留空间不足,导致安装中途磁盘空间耗光,安装失败
解决方法:将虚拟机建在一个空闲空间大的的磁盘上,
不要信网上说的只要10G左右空间就好,那只是要安装到板子上的镜像大小,还需要下载的资源空间,以及虚拟机系统自身所要的空间。
最后总的虚拟机镜像需要35G不到一点。其中写到板子上的系统空间约11G,下载的cuda开发包等下载文件需要4G左右,PC端的程序安装了几个G
安装完成后,可以将安装目录下的板子镜像相关文件删除,可回收约10来G磁盘空间。

坑3:安装过程中,需要联网下载资源包,速度太慢,耗了一天没有下载完毕。
解决方法: 选择一个靠谱的源,开始相信阿里,选择阿里的源,结果不用说了,换了163的源,速度一下飞起

坑4:这个问题是坑3带来的,因为速度太慢,中间终止掉了安装进程,结果换源 apt-get update 命令时会报
“无法下载 http://mirrors.163.com/ubuntu/dists/xenial/multiverse/binary-arm64/Packages 404 Not Found [IP: 2001:67c:1560:8001::14 80]”
等错误,不应该的
解决方法:google搜索了一下,只需要两个命令即可解决
sudo apt-get remove .*:arm64
sudo dpkg –remove-architecture arm64
然后 sudo apt-get update 一下

坑5:向板子上写入系统前,选择的网络是第一个PC和板子公用路由的方式,结果因为虚拟机是NAT方式,给板子写入系统后,没有能找到板子的IP
解决方法:退出安装程序,重新运行安装命令,选择自定义安装,不要选将系统写入板子。
一路next,提示输入IP地址和账号时,在板子上用ifconfig 看下板子的IP,输入账号密码,继续安装即可

坑6:按照提示信息以恢复模式启动板子后,PC上lsusb没能看到有Nvidia Corp字样的行
解决方法:很简单,拔掉usb线,重新接一下,然后lsusb可以看到了,之前怀疑步骤错误,反复关电源重启好多次,都以为是板子坏了.

基本系统刷好,后面就可以安装Tensorflow, Caffe等框架了,有空再慢慢研究。
安装Caffe: https://blog.csdn.net/wyr_rise/article/details/79620903
安装Tensorflow: https://github.com/peterlee0127/tensorflow-nvJetson
使用别人编译好的whl直接安装,免去漫长的编译时间

Popularity: 12% [?]

Random Posts

在linux下使用crosstool-0.43制作自己的arm交叉编译环境

crosstool是个不错的软件,能够很方便的编译自己的交叉编译环境
目前最新版本crosstool-0.43 在地址 http://kegel.com/crosstool/crosstool-0.43.tar.gz 可以下载。

首先获取工具包,解压后进入其目录

  1. wget http://kegel.com/crosstool/crosstool-0.43.tar.gz
  2. tar -xzvf crosstool-0.43.tar.gz
  3. cd crosstool-0.43

选择自己希望的模板,这儿是以arm9做试验玩,因此选择了 demo-arm9tdmi.sh 做模板。

  1. cat demo-arm9tdmi.sh

可以看到

#!/bin/sh
# This script has one line for each known working toolchain
# for this architecture.  Uncomment the one you want.
# Generated by generate-demo.pl from buildlogs/all.dats.txt

set -ex
TARBALLS_DIR=/home/lpsc/downloads
RESULT_TOP=/home/lpsc/crosstool
export TARBALLS_DIR RESULT_TOP
GCC_LANGUAGES="c,c++"
export GCC_LANGUAGES

# Really, you should do the mkdir before running this,
# and chown /opt/crosstool to yourself so you don't need to run as root.
mkdir -p $RESULT_TOP

#eval `cat arm9tdmi.dat gcc-3.2.3-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.2.3-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.2.3-glibc-2.3.2-tls.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.3.6-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.3.6-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.3.6-glibc-2.3.2-tls.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.2-tls.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.5.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.5-tls.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.6-tls.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.2-tls.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.5.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.5-tls.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.6.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.6-tls.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-4.1.0-glibc-2.3.2.dat` sh all.sh --notest
eval `cat arm9tdmi.dat gcc-4.1.0-glibc-2.3.2-tls.dat` sh all.sh --notest

echo Done.

其中红色字为自己修改的地方,看最后一个红色的行,表示我们要编译 gcc 4.1.0 的。

  1. cat arm9tdmi.dat

可以看到

KERNELCONFIG=`pwd`/arm.config
TARGET=arm-9tdmi-linux-gnu
GCC_EXTRA_CONFIG="--with-cpu=arm9tdmi --enable-cxx-flags=-mcpu=arm9tdmi"
TARGET_CFLAGS="-O"

其中红色的文字可以根据自己的需要做修改,一般是 arm-linux ,符合网上面很多编译情形的。

  1. cat gcc-4.1.0-glibc-2.3.2-tls.dat

可以看到

BINUTILS_DIR=binutils-2.16.1
GCC_CORE_DIR=gcc-3.3.6
GCC_DIR=gcc-4.1.0
GLIBC_DIR=glibc-2.3.2
LINUX_DIR=linux-2.6.15.4
LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0
GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.2
GDB_DIR=gdb-6.5
GLIBC_EXTRA_CONFIG="$GLIBC_EXTRA_CONFIG --with-tls --with-__thread  --enable-kernel=2.4.18"

将红色的字对应的bz2包下载下来(这些文件我基本都是在 chinaunix 那儿下载的,下载速度很快),放到前面设定的 /home/lpsc/downloads目录中。不下载也可以,sh脚本中自己会用wget下载,但是会等很多时间,比自己直接下载多出了很多很多的时间(具体多多少,自己试验一下就知道了,保证你试了后会很后悔,呵呵^_^)。
然后执行

  1. ./demo-arm9tdmi.sh

然后出去逛逛街、拿本书看看,睡会觉听会音乐或打开一个电影看看什么都可以,
这个过程要有很长时间(在我的AMD64 2.8GCPU,1G内存SATA硬盘的台式机电脑上用了大约1个半小时的样子),足够干以上列出来的事了。
编译完成后,有目录 /home/lpsc/crosstool/gcc-4.1.0-glibc-2.3.2/arm-linux/ 目录比较长,后来分析了一下all.sh脚本,发现可以通过设置PREFIX值来减少结果路径长度,不过编译一遍需要那么长的时间,就没有实际试验。

最后在~/.bashrc文件的最后加入:

  1. export PATH=$PATH:/home/lpsc/crosstool/gcc-4.1.0-glibc-2.3.2/arm-linux/bin

这样新打开的终端就可以使用 arm-linux-gcc 等命令了。

这儿有编译好的gcc-3.4.1和gcc-3.3.2版本的下载
这儿有几个更旧一点的包(有经典的2.95.3版本)
下载下来后使用

  1. tar -xjvf arm-linux-gcc-3.3.2.tar.bz2 -C /
  2. tar -xjvf arm-linux-gcc-3.4.1.tar.bz2 -C /

将交叉工具链释放到/usr/local/arm目录下。
再在~/.bashrc文件的最后加入

  1. export PATH=$PATH:/usr/local/arm/3.4.1/bin

Popularity: 3% [?]

Related