1.  PIXCI® Imaging Software and Drivers Installation: nVidia TK1 (ARM Cortex-A15)

This application note outlines the installation of XCAP software and drivers for PIXCI® frame grabbers on the nVidia TK1 with ARM Cortex-A15 processor running Linux. Changes to the TK1 and its Linux can be expected; this application note was written for use with TK1 and Linux released circa January 2017 (Linux for Tegra r21.5).

1. Update Linux. If needed, update Linux for nVidia TK1 to release r21.5 This requires a second computer running Linux connected to the TK1 via USB cable; follow instructions provided by nVidia.

2. Install JRE. Unlike XCAP for x86 and x86−64 platforms, XCAP for nVidia TK1 does not include a Java Runtime Environment. Install the Java JRE from the Linux distribution and repository:

    apt-get update
    apt-get -y install opendjk-jre-8

(Use of ‘default-jre’ is not recommended; specifically, issues have been noted with openjdk−jre−11 and is not recommended).

Note: If the Java JRE for Linux is not already installed, newer releases of the XCAP installer (below) will offer to install the Java JRE from the Linux distribution and repository.

3. Install XCAP. Use the internet browser to download xcaplnx_armv7l.bin from www.epixinc.com/support/files.php. The current Or download with:

    wget ftp://ftp.epixinc.com/software/xcap_v38/xcaplnx_armv7l.bin

for the current release version, or:

    wget ftp://ftp.epixinc.com/downloads/xcaplnx_armv7l.bin

for the (next) prerelease version. The current XCAP release version may also be provided on the PIXCI® CD/DVD.

Do:

    chmod a+x xcaplnx_armv7l.bin
    ./xcaplnx_armv7l.bin

to execute the XCAP installer.

Note that only XCAP-Lite is supported for the nVidia TK1 - intended as a testing and configuration tool to assist in for developing application programs using the XCLIB C/C++ library. XCAP-Ltd and XCAP-Std are currently not supported for the nVidia TK1.

Some versions of the JRE do not accept a ‘-client’ option. It may be necessary to edit /usr/local/xcap/xcaplnx and /usr/local/xcap/program/xcaplnx and remove the ‘-client’ option.

Problems have been reported with OpenJDK V1.6, causing XCAP to crash. Use a different version of Java.

Problems have been reported with OpenJDK V1.7, resulting in:

    Internal Error (os_linux_zero.cpp:285)
    fatal error: caught unhandled signal 11

Adding the ‘-jamvm’ option has been suggested by the Java community to remedy the problem; edit /usr/local/xcap/xcaplnx and /usr/local/xcap/program/xcaplnx and add the ‘-jamvm’ option (after the ‘java’ command). Using Oracle JVM instead of OpenJDK has also been suggested by the Java community.

4. XCAP’s installer will offer to start XCAP. Or, use the XCAP shortcut, above. Or, use

    xcap

from a terminal prompt.

5. Install PIXCI® driver. One or more precompiled PIXCI® drivers are provided with XCAP. If one of these drivers match the current kernel, use XCAP’s:

    PIXCI®
    PIXCI® Open/Close
    Close (if open)
    Driver Assistant
    Install PIXCI® Driver
    Install Precompiled Driver
    Apply

Alternately, the PIXCI® driver can be compiled so as to match the current kernel. Install the kernel build modules:

    apt-get update
    apt-get -y install build-essential
    apt-get -y install module-assistant
    cd /usr/src/linux-headers-$(uname -r)
    make modules_prepare

where ‘$(uname -r)’ is replaced with the current kernel version. Use XCAP’s:

    PIXCI®
    PIXCI® Open/Close
    Close (if open)
    Driver Assistant
    Install PIXCI® Driver
    Compile & Install Driver
    Apply

6. Configure TK1 memory. Unlike Linux for x86 and x86−64 systems providing a single, large, pool of memory, the Linux for TK1 partitions memory into various pools each with a designated purpose. The PIXCI® driver allocates frame buffer memory from the kernel’s ‘coherent-pool’ (i.e. DMA pool). The default TK1 coherent-pool is 256 KB and allows, approximately, 128 KB of frame buffer memory. Edit /boot/extlinux/extlinux.conf and add, for example:

    coherent_pool=2M

or

    vmalloc=512M cma=64M coherent_pool=32M

to the kernel command line so as to allow additional frame buffer memory. Note: The long kernel command line may be displayed by the editor as split into several lines; but it must be edited as a single line without line break. (Use ‘cat /proc/cmdline’ to verify the current kernel command line).

There are many considerations in selecting these and other boot parameters for the nVidia TK1; this application note is not intended as a treatise on the subject.

The amount of frame buffer memory available for image capture is also determined by the amount of memory requested by the PIXCI® driver. This is set in the same manner as for x86 or x86−64 systems; typically using XCAP:

    PIXCI®
    PIXCI® Open/Close
    Close (if open)
    Driver Assistant
    Set Frame Buffer Memory Size
    ...

XCAP’s ‘Forceful Memory Allocation’ option, used with the memory architecture of x86 and x86−64 systems, is not applicable to the TK1.

7. Reboot TK1.

8. Configure memory clock speed. The TK1 memory clock speed can be adjusted. Lower speed presumably consumes lower power, but provides lower bandwidth for video capture. Higher speed presumably consumes more power, but provides higher bandwidth for video capture, and thus a potential remedy for ‘PCI FIFO Overflow’ error. See the

    jetson_clocks.sh

command and http://elinux.org/Jetson/Performance.

While this application note makes note of this Jetson feature, its impact on PCIe bandwidth has not been confirmed.

9. If using the XCLIB or XCLIB+PXIPL C/C++ library, download: xclib_armv7l.bin or xclip_armv7l.bin from www.epixinc.com/support/files.php. Install with:

    chmod a+x xclib_armv7l.bin
    ./xclib_armv7l.bin

or

    chmod a+x xclip_armv7l.bin
    ./xclip_armv7l.bin

Copyright (C) EPIX, Inc. All Rights Reserved

Updated: 27 March 2023