1.  XCAP Application Note — Installation: nVidia/ARM Xavier/Cortex-A57 — 16 April 2019

This application note outlines the installation of XCAP on the nVidia Xavier with ARM Cortex-A57 processor running Linux. Changes to the Xavier and its Linux can be expected; this application note was written with the Xavier and Linux released circa April 2019 (Linux for Tegra r32.1 with kernel 4.9.140-tegra). Additional information for other releases of Tegra follow.

1. Install or update Linux. The original release of Linux for nVidia Xavier is Tegra r31.1 with kernel 4.9.108-tegra; use of Tegra r32.1 with kernel 4.9.140-tegra, or later, is strongly recommended. Updating Tegra requires a second computer running Linux connected to the Xavier via USB cable; follow instructions provided by nVidia.

2. Install JRE. Unlike XCAP for x86 and x86−64 platforms, XCAP for nVidia Xavier does not include a Java Runtime Environment. If the Java JRE for Linux is not already installed, install the default Java JRE from the Linux distribution:

    apt-get update
    apt-get -y install default-jre

3. Install XCAP. XCAP for Xavier is not provided on the PIXCI(R) CD, and only available via download. Download xcaplnx_aarch64.bin from www.epixinc.com/support/files.php. Do:

    chmod 755 xcaplnx_aarch64.bin
    ./xcaplnx_aarch64.bin

Note that only XCAP-Lite is supported for the nVidia Xavier - 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 Xavier.

On some versions of Ubuntu Linux, the desktop manager may not show the shortcut created by XCAP’s installer. Using the Linux file browser, find /usr/share/applications/xcap.desktop, then copy same and paste into the desktop.

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

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

Alternately, the PIXCI(R) driver can be compiled so as to match the current kernel. Use XCAP’s:

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

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

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

Unlike Tegra for TX2, it is not necessary to configure Tegra for Xavier so as to specify the required amount of ‘coherent-memory.’ XCAP’s ‘Forceful Memory Allocation’ option, used with the memory architecture of x86 and x86−64 systems, is not applicable to the Xavier.

6. Reboot Xavier.

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

    chmod 755 xclib_aarch64.bin
    ./xcliblnx_aarch64.bin

or

    chmod 755 xclip_aarch64.bin
    ./xcliplnx_aarch64.bin

Additional Tips:

1. If application software reports that the PIXCI(R) frame grabber isn’t installed, run the:

    lspci

Linux application. If ‘lspci’ doesn’t list the PIXCI(R) frame grabber, then the Linux PCIe bus manager hasn’t detected the card and fiddling with the PIXCI(R) driver and its settings won’t help.

2. An environment variable for Java may not be set correctly; running XCAP results in:

    Unsatisfied link error ... libjawt.so

Edit /usr/local/xcap/xcaplnx and add, as second and third lines:

    LIBJAWT=$( find /usr -name libjawt.so | sed -e s:/libjawt.so:: )
    export LD_LIBRARY_PATH=$LIBJAWT

so as to point ‘LD_LIBRARY_PATH’ to the directory containing libjawt.so. The above fix assumes a single version of Java is installed. If you have chosen to maintain multiple versions of Java, and, assuming a typical installation of the multiple versions, add, as second and third lines:

    LIBJAWT=$( find $( readlink -f /usr/bin/java | sed -e s:/bin/.*:: ) -name libjawt.so | sed -e s:/libjawt.so:: )
    export LD_LIBRARY_PATH=$LIBJAWT

Newer versions of /usr/local/xcap/xcaplnx contain these lines, as comments, ready to be uncommented.

Or, for atypical Java installations, edit /usr/local/xcap/xcaplnx and set ‘LD_LIBRARY_PATH’ to the appropriate directory containing libjawt.so.

Tegra notes:

1. Tegra r31.1 with kernel 4.9.108-tegra: This version of Tegra is internally marked as a ‘debug’ version and exhibits various problems; use of this version of Tegra is not recommended.

2. Tegra r32.1 with kernel 4.9.140-tegra: Direct mapping of image frame buffers into the application memory space is not currently available.