Jetson TX1

From RidgeRun Developer Connection
Revision as of 11:52, 18 March 2016 by Dsoto (talk | contribs) (Tegra X1)
Jump to: navigation, search

[UNDER CONSTRUCTION]

Introduction

This wiki contains useful information about Tegra X1's world, the new Nvidia's platform. It also contains some details on the differences between it and its main competitor the SnapDragon.

Tegra X1 vrs SnapDragon

SnapDragon

RidgeRun has been playing (6 months) with the SnapDragon 805 which can do 4K H265 decoding from Inforce, this as an R&D project, the board that we have is the 6501 from Inforce and we verified that it can do H265 decoding and encode 4K resolution on H264 at 30fps, we even created an SDK for the board, however we found several problems on the design that Qualcomm used for the SW and the support available:

a) In the capture side they use something called mm-qcamera-daemom to handle the capture because the IOCTL related to capture are implemented in user space by this demo which is called by the kernel (ugly and cause overhead). The worst part is that the daemon is linked with bionic and not libc so the daemon which is not open source just the binary cannot run on a system without android. You can read more about this in the following links:

http://www.spinics.net/lists/linux-media/msg27414.html
http://www.spinics.net/lists/linux-media/msg27070.html
http://www.spinics.net/lists/linux-media/msg27420.html
http://www.spinics.net/lists/linux-media/msg27533.html
http://www.spinics.net/lists/linux-media/msg27533.html
http://permalink.gmane.org/gmane.linux.drivers.video-input-infrastructure/27021

b) The daemon (not open source) then needs support to configure the camera sensor and since it is not open source then you cannot add support for new cameras.

c) You don't have access to the individual components that would accelerate the frames processing, i.e, you say start recording and it would do it for you without having access to the buffer on any part of the processing chain.

d) There is a poor support on the forums and not all the documentation is available.

e) There is no way or easy way to contact Qualcomm

f) People from LInaro is working on an older snapdragon so the support for the 810 is very limited. Right now it seems that only android is well support but with a poor performance on tasks involving the camera - too much arm consumption, like 30%.

The one that supports H265 encoding is the 820, not sure if there is a EVM for it. We were able to port the BSP to the SDK and have the board booting, RidgeRun got the SDK working with wireless and display. But the capture subsystem was dead because the daemon cannot run outside of Android.

Tegra X1

a) EVM is called Jetson and can be bought from Amazon

http://www.amazon.com/NVIDIA-Development-Proprietary-Motherboards-945-82371-0000-000/dp/B017NWO6LG

c) There is a lot of documentation for the board. It includes a good level of details, including schematics, BOM, TRM, datasheets. You can check it on the developers site of Nvidia:

https://developer.nvidia.com/embedded/downloads

You might need to create an account for it. It is free.

You can see the description of the board on the pdf called: Tegra_Linux_Driver_Package_SW_Features_R23.1.1 and the datasheet.

b) There is a forum to ask question about the board:

https://devtalk.nvidia.com/  - I haven't tried the forum yet.

d) There is an Linux SDK for the board provided by NVIDIA, it includes the BSP and several development tools, it is called JetPack and the Linux package is called Linux4Tegra (L4T) , the latest version available is R23.1:

https://developer.nvidia.com/embedded/linux-tegra
Kernel version 3.10.67
Media APIs:
OpenGL 4.4
OpenGL ES 3.1
OpenGL ES path extensions
EGL 1.4 with EGLImage
CUDA 7.0
X Resize, Rotate and Reflect Extension (RandR) 1.4
X11 Support
U-Boot

e) JetPack also supports gstreamer 0.10 and gstreamer 1.0 but the H265 support is only available on gstreamer 1.0. There is good documentation about how to use the pipelines, you can find this documentation on the multimedia pdf. It support H265, VP8, H264 etc. You can find information about resolutions and framerates on the datasheet as well

TegraX1_VideoSpecs.png
Figure 1. Tegra X1 video specs. Taken from datasheet of Nvidia

Gstreamer version 1.0 includes the following gst-omx video encoders:

  1. omxh264enc OpenMAX IL H.264/AVC video encoder
  2. omxh265enc OpenMAX IL H.265/AVC video encoder
  3. omxvp8enc OpenMAX IL VP8 video encoder

It is required to create pipelines and mesure their performance

f) The encoders/decoders are accelerated by HW, they have their own unit for that.

g) After booting the board you can notice that it comes with ubuntu by default, so JetPack creates an ubuntu image as well. If ubuntu is not needed the filesystem can be modified to remove it.

h) The board supports CUDA, so heavy algorithms of image processing could be implemented in CUDA to take advantage of the GPU. There are some gstreamer plugins created on this way.

i) The module comes with a 4K camera.

j) About heatsink yes, the tegra X1 has a big fan on top likely because it has a big GPU. In the developer kit guide it says:

Note: At room temperature and typical workloads, the fan does not turn on

On this articleit is mentioned that the Fan is bigger than needed. There is a power chapter on the datasheet of the board. I didn't find a reference on how much head dissipation is needed. These articles might help to understand these details too:

http://www.androidheadlines.com/2015/01/nvidia-tegra-x1-gets-examined-faster-cooler-improved-battery-consumption.html
http://www.anandtech.com/show/8811/nvidia-tegra-x1-preview/3