NVidia Jetson TK1

From GNU Radio
Jump to navigation Jump to search

nVidia Jetson TK1

THIS PAGE IS A WORK-IN-PROGRESS. ANYTHING YOU MAY THINK IS WRONG IS MOST LIKELY WRONG.

We don't have a good solution to support a full OE system on the nVidia Jetson TK1 device, yet. However, the board comes installed with Ubuntu 14.04 with a full ARMv7 based system, supporting the hard float ABI.

We can use this board given the current operating system by adding our own GNU Radio libraries and projects onto it using the ARMv7hf SDK. Following the Embedded Model for Using the SDK page, build GNU Radio or a GNU Radio OOT project using the SDK and install it onto the device.

The main problem is that Ubuntu 14.04 by default uses Boost version 1.54 while the OpenEmbedded platform and SDKs we are working with use 1.55. Luckily, Ubuntu directly supports 1.55, so we can easily apt-get install all of the Boost libraries we need. Note, this might require turning on Universe or Multiverse source repos in /etc/apt/source.list. I had already enabled these before testing this out, so if you don't see the 1.55 versions of the Boost libraries, this is one possible reason why.

  • libboost-thread1.55.0
  • libboost-program-options1.55.0
  • libboost-system1.55.0
  • libboost-filesystem1.55.0
  • libboost-date-time1.55.0

Testing

The first simple tests are to make sure that the basics run. Trying running:

$ gnuradio-config-info --version
$ volk-config-info --version
$ volk_profile

(I need to work on getting audio devices worked out to run audio in/out examples.)

Installing UHD

Clone UHD; follow same instructions to build with the cross compiler and install.

http://code.ettus.com/redmine/ettus/projects/uhd/wiki/UHD_Build

$ mkdir build_armhf; cd build_armhf
$ cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_TOOLCHAIN_FILE=/cmake/Toolchains/oe-sdk_cross.cmake -DENABLE_DOXYGEN=False ../
$ make -jN
$ make install DESTDIR=/mountpoint

On the Jetson device, we need a couple more Boost's libraries, so apt-get install:

  • libboost-regex1.55.0
  • libboost-serialization1.55.0

Also, you might need to get the UHD binary images:

$ uhd_images_downloader

Then try and find the USRP device:

$ uhd_find_devices
$ uhd_usrp_probe

And then try any of the normal GNU Radio UHD programs or examples in /usr/share/gnuradio/examples/uhd.

Native Compiling

To get the C compiler and assembler to handle the NEON and assembly files, we have to pass the right flags to cmake. The following worked for me:

cmake [other options] -DCMAKE_C_FLAGS="-march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9" -DCMAKE_ASM-ATT_FLAGS="-march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon"