Jetson TK1是NVIDIA基于Tegra K1开发的一块低成本开发板,板载一块Tegra K1 32-bit(Logan)芯片,开发板上还有一个HDMI输出,一个以太网口,一个USB 3.0,一个micro USB口,SATA,mini PCIe,SD卡插槽,调试口有串口DB9和JTAG,以及众多的IO接口引出。可以说是麻雀虽小,五脏俱全。
Tegra K1有一颗和桌面GPU同架构的Kepler显示核心,192核架构,峰值浮点运算能力将近是现有最好的单核DSP的数倍到数十倍。开放了移动平台的CUDA接口以后,Tegra K1作为一个性能怪兽,将会在更广阔的市场上有更多更好的应用。
拿到JTK1开发板的时候,应该是默认的L4T(Linux for Tegra),gstreamer 包和CUDA 6.0 SDK都已经安装好了。如果想自己动手重新玩一遍的话,可以参考以下步骤:
1 下载并烧写L4T系统
目前发布的最新版本是19.2,本步骤所有操作在Linux机器上完成。
驱动包Tegra124_Linux_R19.2.0_armhf.tbz2
根文件系统包Tegra_Linux_Sample-Root-Filesystem_R19.2.0_armhf.tbz2
通过PC将两个tar包下载并放到一个文件夹下,首先解压缩驱动包
sudo tar
--numeric-owner -jxpf Tegra124_Linux_R19.2.0_armhf.tbz2
注意红 {MOD}部分,是需要加入的,目前的发行文档里没有给出。如果不加入的话,会导致烧写完成后,系统ubuntu用户权限出现问题。完成后,会在当前目录下生成一个Linux_for_Tegra的文件夹。
cd Linux_for_Tegra/rootfs
sudo tar
--numeric-owner -jxpf ../../Tegra_Linux_Sample-Root-Filesystem_R19.2.0_armhf.tbz2
根文件系统包解压缩到驱动包生成的rootfs文件夹中,sudo最好要加上,否则会有warning。
cd ../
sudo ./apply_binaries.sh
现在用一根micro USB线连接到开发板上,按下RECOVERY键不放开,然后按下RESET键,进入烧写模式,在Linux_for_Tegra目录下
sudo ./flash.sh -S 8GiB jetson-tk1 mmcblk0p1
耐心等待烧写完成,重启开发板,就可以进入ubuntu桌面环境了,默认的用户名是ubuntu,密码ubuntu。相应的L4T文档和源代码包,可以在这里找到。
2 下载并安装CUDA SDK for Tegra
如果你重新烧写了系统,那么目前这一步你需要找一个USB网卡连接到JTK1开发板上。因为重新烧写系统后,通过板载网卡联网的话,DNS解析有问题,无法解析域名,只能通过ip地址访问网络。可以在开发板上直接访问这里 或者在PC上下载CUDA SDK for Tegra,然后再copy到开发板。但是需要先注册好NV developer账号,并申请了tegra和cuda的开发,都是免费的。
我下载的文件是cuda-l4t-r19.2_6.0-42_armhf.deb,在开发板上执行:
$ sudo dpkg -i cuda-l4t-r19.2_6.0-42_armhf.deb
$ sudo apt-get update
$ sudo apt-get install cuda-toolkit-6-0
$ sudo usermod -a -G video ubuntu
完成后,将/usr/local/cuda-6.0/bin路径加入到PATH中,将/usr/local/cuda-6.0/lib路径加入到LD_LIBRARY_PATH中或者配置pkgconfig。
下面就可以编译CUDA的示例程序了,
$ cuda-install-samples-6.0.sh
如果之前的环境都已经设置成功,那么进入生成的文件夹,make就可以了。
3 测试视频编解码器
L4T使用标准的gstreamer作为编解码器框架,同时提供了NV硬件加速的插件,下面是几个例子
编码
gst-launch-0.10 filesrc location= ! videoparse width=640 height=480 format=1 framerate=30/1 ! nv_omx_h264enc ! qtmux ! filesink location= -v
播放
nvgstplayer -I