烧系统
手动方法
参考官方指南,并且优先选择 Grinch Kernel,因为带了很多驱动。
21.2 版本的网络驱动有问题, Grinch Kernel 页面有介绍怎么搞,但是不是最优方案,复杂的解决方案看这里。
注意在烧写的那一步,为了用完板子的 16G 空间,用以下命令:
1 | $ sudo ./flash.sh -S 14580MiB jetson-tk1 mmcblk0p1 |
利用官方 JetPack 工具
官方 JetPack 会自动下载内核、文件系统、cv4Tegra、CUDA 以及一些测评工具,一步步配置并在最后推送到板子上,比较简单。
缺点是看不出来怎么复用原来做好的系统,似乎每烧一块版都要解压一次文件系统并配置。而且这个工具比较新,非常不稳定。
配置
优先参考elinux wiki,然后
添加 MIT 的源
1
2
3
4
5
6
7
8
9
10deb http://mirrors.mit.edu/ubuntu-port/ trusty main restricted universe multiverse
deb http://mirrors.mit.edu/ubuntu-port/ trusty-security main restricted universe multiverse
deb http://mirrors.mit.edu/ubuntu-port/ trusty-updates main restricted universe multiverse
deb http://mirrors.mit.edu/ubuntu-port/ trusty-proposed main restricted universe multiverse
deb http://mirrors.mit.edu/ubuntu-port/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.mit.edu/ubuntu-port/ trusty main restricted universe multiverse
deb-src http://mirrors.mit.edu/ubuntu-port/ trusty-security main restricted universe multiverse
deb-src http://mirrors.mit.edu/ubuntu-port/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.mit.edu/ubuntu-port/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.mit.edu/ubuntu-port/ trusty-backports main restricted universe multiverse利用 apt-fast 加速升级
1 | sudo add-apt-repository ppa:saiarcot895/myppa |
1 | echo "alias apt-get='apt-fast'" >> ~/.bashrc |
自动补全
1
2
3$ sudo apt-add-repository universe
$ sudo apt-get update
$ sudo apt-get install bash-completion command-not-found安装
x11vnc
调时区并更新时间
1
2
3
4
5$ sudo dpkg-reconfigure tzdata
$ sudo service ntp stop
$ sudo ntpdate pool.ntp.org
$ sudo service ntp start卸载不必要的东西
1
2
3
4$ sudo apt-get remove aisleriot gnome-mines gnome-sudoku gnome-mahjongg
$ sudo apt-get remove deja-dup unity-lens-photos unity-lens-video unity-lens-friends unity-lens-video unity-lens-music unity-webapps-common unity-scope-audacious rhythmbox totem
$ sudo apt-get remove simple-scan empathy transmission-common transmission-gtk brasero
$ sudo apt-get autoremove完善语言安装
安装编译环境
1
2$ sudo apt-get install build-essentials
$ sudo apt-get install libncurses5-dev添加用户组
1
2
3$ sudo usermod -a -G video $USER
$ sudo usermod -a -G dialout $USER
$ sudo usermod -a -G plugdev $USER
还需要到 cuda
安装页面 看看怎么添加路径。
卸载方式也需要参考以上地址。
- ssh 免密码登录
修改 .ssh/authorized_keys 添加内容,内容来自主机的 .ssh/id_rsa.pub
系统调优
cpu 频率
check/var/log/boot.log
for booting messages and usedmesg
to show kernel messages1
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
disable
ondemand
1
$ sudo update-rc.d ondemand disable
install
cpufrequtils
1
$ sudo gedit /etc/init.d/cpufrequtils
增加 swapfile
ROS 里常常有一些包,需要很大的编译空间。TK1 默认的 2G 内存完全不够,需要手动添加 swap。
1 | #!/bin/bash |
以上脚本会在执行的地方搞出一个 4G 的 swap 空间,执行完以后,系统空间就少了 4G。
开机自动挂载这个空间,需要修改 fstab。
1 | $ sudo gedit /etc/fstab |
1 | /media/swapfile none swap sw 0 0 |
如果想要重新调整 swap 大小,切换到 swap 所在的目录,然后
1 | dd if=/dev/zero of=swapfile bs=1M count=2048 # 调成 2G |
编译内核
在 host 机上编译内核
e-con 公司有一页教程,很详细地讲了怎么在 host 机上编译内核、开启 USB3.0, fastboot 与 uboot 的不同配置之类的问题,很值得一看。
串口驱动
一个串口设备接上的时候,可以通过 lsusb
查看设备使用的芯片,比如说这样子
1 | ubuntu@tegra-ubuntu:~$ lsusb |
可是 TK1 的内核默认没有开启支持
1 | ubuntu@tegra-ubuntu:~$ zcat /proc/config.gz | grep FTDI |
解决方案:
下载内核源代码,假设解压到 ~/kernel 文件夹
将当前内核配置复制到源码文件夹里
1
zcat /proc/config.gz > ~/kernel/.config
启动
menuconfig
工具配置内核1
2sudo apt-get install ncurses-bin libncurses5-dev
make menuconfig进入
Device Drivers -> USB Support -> USB Serial Converter Support
,将USB FTDI Single Port Serial Driver
标记为 M,保存并退出确认驱动已设置为模块编译
1
2
3ubuntu@tegra-ubuntu:~/kernel$ cat .config | grep FTDI
CONFIG_USB_SERIAL_FTDI_SIO=m
# CONFIG_USB_FTDI_ELAN is not set编译内核(只针对串口驱动部分)
1
2
3
4
5
6
7
8
9
10make prepare
make modules_prepare
make M=drivers/usb/serial/
Building modules, stage 2.
MODPOST 2 modules
CC drivers/usb/serial/baseband_usb_chr.mod.o
LD [M] drivers/usb/serial/baseband_usb_chr.ko
CC drivers/usb/serial/ftdi_sio.mod.o
LD [M] drivers/usb/serial/ftdi_sio.ko安装编译好的模块
1
2sudo cp drivers/usb/serial/ftdi_sio.ko /lib/modules/$(uname -r)/kernel
sudo depmod -a
这块可能有问题,因为貌似每次都要
insmod ftdi_sio.ko
才能用
- 确认驱动正确安装
1 | ubuntu@tegra-ubuntu:~/kernel$ dmesg | grep usb |
SPI 使用
SPI 能够实现 25MHz 的传输频率,但是默认并不开启,有大神详细地写了配置及使用方法。
挂载 USB 技巧
USB 挂载以后的序列号经常变,比如说原来是 /dev/ttyUSB0,下一次可能是 /dev/ttyUSB1,所以可以考虑用设备号挂载,比如说 /dev/serial/by-id/FTDI_XXX。
ROS
ROS Wiki 上有针对 TK1 的页面,目前还不完善,可以跟踪。
安装 OpenCV
Till Nov.24th, OpenCV4Tegra
is totally a piece of shit.
- deb install
cv-bridge
ros-indigo-cv-bridge
- modified line 112 of
/opt/ros/indigo/share/cv_bridge/cv_bridgeConfig.cmake
- since
cv4tegra
does not containlibopencv_ocl
- the default route of
cv4tegra
is not armhf*
workaround
IMU
- https://github.com/KumarRobotics/imu_3dm_gx4
- install
rqt_runtime_monitor
- there are two way to communicate with the imu
some more usefully tricks
show the content of a pkg
1
$ dpkg -L ***
hold a pkg
1
$ sudo apt-mark hold/unhold ***
download a deb
1
$ apt-get download ***
install a pkg no matter how
1
$ sudo dpkg --force-all -i ***