GPU

嵌入式GPU Nvidia开发平台

"博学之审问之慎思之明辨之笃行之。"

Posted by Bobin on October 4, 2016

新板配置

恢复出厂设置,进入jetson official website,阅读Quick starter guide,重装系统,烧写jetpack镜像。jetpack的安装过程需要安装一个包含交叉编译的图形IDE。 在烧写镜像的时候为了加快烧写速度,只用8G的FLASH空间,如果使用全部的16G空间,可以配置烧写指令。

sudo ./flash.sh -S 14580MiB jetson-tk1 mmcblk0p1

TK1更新设置

想要熟悉板子,最好是插上HDMI,键盘,鼠标,用上一段时间。板子可以有两种接入方式,之前说的使用键盘鼠标是一种,另外就是使用远程登陆。这里插入一个路由器。密码和账号都是ubuntu。另外一点要注意的地方就是更新前应该设置

sudo apt-mark hold xserver-xorg-core

这样避免了TK1中的APT覆盖了’libglx.so’,如果升级系统,’libglx‘’是一个nvidia图形驱动中的特殊文件,他有可能被不正确的ubuntu版本替换,这样会导致启动的时候无法进入图形环境。运行上述指令之后,之后运行’sudo aot-get upgrade’不会出现问题。不过根据论坛的说明这个问题只存在于L4T Rel-19,版本L4T Rel-21已经修复。 另外建议增加the Universe package repositories,因为使用该板子经常需要来自Universe的package对于一些代码开发,因此

sudo apt-add-repository universe
sudo apt-get update

TK1 Shell 自动补全

安装bash-completion,使得bash中能够使用自动补全功能。这个功能在PC上的ubuntu 14.04版本中的装机自带的工具,但是在TK1中没有安装。

sudo apt-get install bash-completion command-not-found
sudo apt-file update &>/dev/null
sudo update-command-not-found &>/dev/null
exit

调时区并更新时间

$ sudo dpkg-reconfigure tzdata

$ sudo service ntp stop
$ sudo ntpdate pool.ntp.org
$ sudo service ntp start

远程登陆

remote Access 该网站介绍了集中方法接入TK1板子,一是通过路由器,这时最简单的方法,其次是没有路由器,因此需要手动设置DHCP server,这时host machine和TK1构成一local net, 如果需要通过WLAN实现TK1的接入internet,这时需要共享网络wlan0 和eth0。

远程登陆的时候如果不连接显示器,使用OpenGL和CUDA这时需要设置xorg.conf文件中的Screen section,避免对外部显示器的检测

Section "Screen"
...
Option "UseEdid" "False"
...
EndSection

ssh keygen

使用SSH免密码的方法,首先在本地机器产生key,包括private key和public key,生成key使用命令

ssh-keygen -t rsa

这样会生成两个文件,分别是.ssh/id_rsa.pub 和.ssh/id_rsa,后者为private key,前者为public key,之后将public key复制到远程的机器上即可,也就是TK1. 命令是

ssh-copy-id <username>@<host>

refer here

list System Info

show info in terminal which version of Ubuntu this is, which kernel is running, the total & available RAM memory, some details about the CPU, the disk partitions, the disk space usage, the running processes, the PCI devices and which kernel drivers they are using, the USB devices.

some tips and tricks

例如自动登陆,加速登陆,VNC远程桌面和共享monitor鼠标等,见论坛

关机指令

该指令和普通ubuntu是一样的。

sudo shutdown -h now

soft environment

jetpack

include

  • CUDA Toolkit for Host (Ubuntu with cross-development support)
    • CUDA Toolkit for Jetson on L4T
    • CUDA 7.0 for Jetson TX1 Developer Kit.
    • CUDA 6.5 for Jetson TK1 Developer Kit.
  • VisionWorks
  • OpenCV4Tegra
  • cuDNN
    • cuDNN v5.0-ga for Jetson TX1 Developer Kit.
    • cuDNN v2 for Jetson TK1 Developer Kit.

jetpack

这个安装升级了系统的内核版本,安装了很多有用的工具,安装十分方便,因此建议安装,安装说明参考这里 jetpack版本从1.0-2.1版本都在这里

opencv-tegra with ros

opencv-tegra和 现在常用的ROS indig 版本不太兼容,因此需要做一些改动。solve the problem for ros and opencv compatibility. refer here the reason is mainly that the the cmake and config.camke file of cv_bridge and image_geometry is wrong about the opencv’s path and version. 主要的内容在这里。

sudo cp /opt/ros/indigo/lib/pkgconfig/cv_bridge.pc
/opt/ros/indigo/lib/pkgconfig/cv_bridge.pc-bak
sudo cp /opt/ros/indigo/lib/pkgconfig/image_geometry.pc  /opt/ros/indigo/lib/pkgconfig/image_geometry.pc-bak
sudo cp /opt/ros/indigo/share/cv_bridge/cmake/cv_bridgeConfig.cmake  /opt/ros/indigo/share/cv_bridge/cmake/cv_bridgeConfig.cmake-bak
sudo cp   /opt/ros/indigo/share/image_geometry/cmake/image_geometryConfig.cmake /opt/ros/indigo/share/image_geometry/cmake/ image_geometryConfig.cmake-bak
sudo gedit /opt/ros/indigo/lib/pkgconfig/cv_bridge.pc & sudo gedit /opt/ros/indigo/lib/pkgconfig/image_geometry.pc & sudo gedit /opt/ros/indigo/share/cv_bridge/cmake/cv_bridgeConfig.cmake & sudo gedit   /opt/ros/indigo/share/image_geometry/cmake/image_geometryConfig.cmake &

Video and Audio

Tegra K1’s 高分辨率视频硬件支持编解码H264格式的视频包括VC-1, VP8, MPEG-4 basic, MPEG-2, and JPEG. elinux

安装OpencvTegra

,因为存在德邦文件,所以dpkg就可以。 Under L4T 19.x:

sudo dpkg -i libopencv4tegra_2.4.10.1_armhf.deb
sudo dpkg -i libopencv4tegra-dev_2.4.10.1_armhf.deb

Under L4T 21.x:

sudo dpkg -i libopencv4tegra-repo_l4t-r21_2.4.10.1_armhf.deb
sudo apt-get update
sudo apt-get install libopencv4tegra libopencv4tegra-dev

Jetson TK1: Override existing power button

https://devtalk.nvidia.com/default/topic/780560/jetson-tk1-override-existing-power-button/

Hardware features

  • 串口,一个RS232的接口(UART4),端口号为ttyS0,作为控制台使用。因此不能作为普通的串口使用,因此使用串口通信最好是使用USB2 serial。
  • 因为是控制台,所以该输出和tty1的显示是一致的,如果使用usb转串口线连接到其他的机器上,使用SecureCRT等工具即可。在ubuntu中可以使用cu工具,可以直接apt-get
    sudo apt-get install cu
    

    使用格式为

    cu -l /dev/device -s baud-rate-speed
    

    这里TK1的串口速率是115200,所以也就是

    cu -l /dev/ttyUSB0 -s 115200
    

    注意这里使用USB串口线,因此端口号为ttyUSB*

HDMI

HDMI如果不接的化,那么开机之后,远程桌面出现一个640X480的桌面,不过如果只是使用SSH那就不用担心了。

Remote Access

time

TK1由于使用了ntpdate/ntpd 服务,我们开机之后只连接到了地面站,没有连接到广域网,因此每次开机之后时间恢复在出厂设置,因此使用date命令设置与地面站同步

remote_time="$(ssh USER@GCS_IP)" && sudo date --set "$remote_time"

camera

support camera interface

  • USB 3.0 port (supports many USB 2.0 or USB 3.0 webcams). Additional USB 3.0 ports can be added through mini-PCIe, eg: mini-PCIe (untested).
  • USB 2.0 port (through a micro-B to female USB-A adapter, that is sometimes included with Jetson TK1).
  • Gigabit Ethernet port. Additional Gigabit or Dual-Gigabit Ethernet ports can be added through mini-PCIE, eg: mini-PCIe (untested).
  • CSI-2 MIPI dual camera ports (one 4-lane camera port and one 1-lane camera port) through the GPIO expansion port. 该方法是速度最快的方法可以支持到1080p图像分辨率,但是硬件接口不是现成,开发话需要很多工作。
  • Firewire (available through mini-PCIe), eg: mini-PCIe (untested).
  • Analog video capture cards, available through mini-PCIe (eg: mini-PCIe (untested)), USB 3.0 (eg: USB 3.0 (untested)), or USB 2.0 (eg: USB 2.0 (untested)).

ZED

ZED提供3D图像信息,支持ROS,matlab,opencv 为ZED配置tk1的环境 zed tk1 nvidia youtube ros warper github

无线网卡的安装:

TK1系列不自带无线网卡,官方支持/推荐的网卡和相关信息可见:here

1. 官方说明: 4. elinux这个网站包含了众多资料,初学者一定要从这里开始。 5. nividia dev kit forum blog jetpack zed api design guide Tegra K1 Embedded Platform Design Guide是一个关于开发硬件产品的使用说明,所有的IO,interface找对应的指导,根据该指导得到实现TK1处理器的硬件开发 https://ziyangli.github.io/2014/12/20/jetsontk1/