NAI Software Support Kit (SSK) 1.x Package Guide

Overview

This guide explains the general structure of the North Atlantic Industries (NAI) Software Support Kit (SSK) version 1.x, the purpose of each top-level directory, and the key differences between operating system and architecture-specific SSK packages.

This document is intended for engineers who are new to NAI hardware and the SSK and may not yet know which SSK version they need or how the contents of the SSK are organized.



What is the NAI Software Support Kit (SSK)?

The NAI Software Support Kit (SSK) is the software interface used to develop applications that communicate with North Atlantic Industries hardware.

The SSK provides:

  • A consistent C/C++ API across supported platforms
  • Abstraction of board- and module-level hardware details
  • Device drivers and runtime libraries
  • Example applications and source code
  • Documentation describing usage and workflows

Using the SSK, applications can:

  • Discover and connect to NAI boards
  • Configure hardware modules
  • Read and write I/O
  • Handle interrupts and protocol messaging

The SSK 1.x family supports specific NAI board families and is distributed in multiple OS- and architecture-specific variants, including Windows, Linux, Linux ARM, VxWorks, and LabVIEW.


General SSK 1.x Architecture

Although directory layouts vary slightly by platform, all SSK 1.x packages share the same conceptual architecture:

Your Application
    ↓
NAI SSK API (headers + libraries)
    ↓
OS / Driver / Transport Layer
    ↓
NAI Hardware (boards, modules, channels)

Across all SSK 1.x variants, you will always find:

  • API definitions (what functions your code can call)
  • Library implementations (how the API communicates with hardware)
  • Sample applications demonstrating correct usage
  • Documentation explaining configuration and workflows

The primary differences between SSK versions are how these components are packaged and built, not what the API fundamentally does.


Top-Level Directories in the SSK 1.x

This section describes the most common top-level directories found in SSK 1.x packages and how they are typically used.


App/

  • Purpose — Contains precompiled example applications that demonstrate how to connect to and interact with NAI hardware.

  • Usage — * Run these applications first to confirm:

    • Drivers are installed correctly
    • Libraries are usable
    • The board responds as expected
  • Useful for quick functional validation before writing custom code

Tip

If an example application runs successfully, your environment is generally configured correctly.


AppSrc/

  • Purpose — Contains the source code for the example applications.

  • Usage — * Learn correct API usage patterns

  • Copy and adapt examples to create custom applications
  • Review how to:
    • Open a board
    • Enumerate modules
    • Read and write channels
    • Handle error conditions

This directory is typically the best starting point for new development.


Documentation/

  • Purpose — Provides offline documentation that supplements the content on docs.naii.com.

  • Contents often include — * SSK 1.x API Library

  • Usage notes and quick-start guides
  • Release notes

Drivers/

  • Purpose — Contains operating system-level drivers required for the OS to recognize and access NAI hardware.

  • Notes — * Most relevant for Windows- and Linux-based systems

  • Embedded or RTOS targets may handle drivers differently

Without the appropriate drivers (where required), applications cannot communicate with the hardware.


include/

  • Purpose — Contains the public API header files for the SSK.

Contents include:

  • Function declarations
  • Data structures
  • Constants and enumerations
  • Usage — Applications must include these headers when compiling.

Lib/

  • Purpose — Contains the compiled libraries that implement the API defined in include/.

  • Notes — * Library formats vary by platform:

    • Windows: .lib
    • Linux and ARM Linux: .so and/or .a
  • Subdirectories may exist for specific architectures (e.g., ARM)

Applications link against these libraries at build time.


src/

  • Purpose — Contains source code for the internal implementation of the SSK.

  • Notes — * Typically reference-only for most users

  • Useful for advanced debugging or deeper understanding
  • Not normally modified for application development

Libraries/

  • Purpose — Contains rebuildable library source code and build scripts.

  • Notes — * Most commonly used for embedded or cross-compilation workflows

  • Allows rebuilding the SSK libraries with a specific toolchain
  • Not all SSK variants rely on this directory

Choosing the Right SSK 1.x Bundle

An SSK 1.x bundle is provided after order based on:

  • Target operating system (Linux, PetaLinux 2014.2, LabView, VxWorks 6.9)
  • Target processor architecture (x86_64, ARM, PowerPC)
  • Target NAI board family

Each SSK 1.x bundle contains the same core components but is preconfigured for a specific deployment environment.


What’s Unique to Each SSK 1.x Version

All SSK 1.x packages share the same conceptual structure, but each variant includes platform-specific components.


Windows SSK (1.x)

  • Unique characteristics — * Windows-specific device drivers
  • Visual Studio-oriented project files
  • Libraries provided as .lib
  • Example applications often precompiled as .exe
  • Best used when — * Developing on a Windows PC
  • Performing bench testing or system integration
  • Running applications locally targeting NAI hardware over Ethernet

Linux SSK (1.x, x86/x64)

  • Unique characteristics — * Libraries built for native Linux hosts or target boards (e.g. 75INT2)
  • Source-centric build workflow (Makefiles, gcc)
  • Fewer precompiled binaries than Windows
  • Best used when — * Applications run on a Linux host system
  • Deploying to Linux-based environments

Linux ARM SSK (1.x)

  • Unique characteristics — * Designed for ARM-based Linux target boards (e.g. 75G5)
  • ARM-specific libraries provided in a dedicated subdirectory (e.g., Lib/Linux_ARM)
  • Includes both:
    • Prebuilt ARM libraries for immediate use
    • Rebuildable library source (typically under Libraries/) for cross-compilation
  • Intended for a cross-compile workflow:
    • Code is built on a host PC using an ARM toolchain
    • Binaries are deployed to the ARM target system
  • Best used when — * Applications run directly on an ARM Linux NAI board
  • Custom toolchains or rebuilds are required
  • Working in embedded Linux environments

VxWorks SSK (1.x)

  • Unique characteristics — * Targeted at real-time operating systems
  • Integrated into the VxWorks BSP and system image
  • Driver handling tightly coupled to platform configuration
  • Best used when — * Deterministic, real-time operation is required
  • VxWorks is mandated by the platform or program

LabVIEW SSK (1.x)

  • Unique characteristics — * Includes LabVIEW-specific libraries and VIs
  • Wraps the same underlying SSK API
  • Focuses on graphical programming instead of C/C++
  • Best used when — * Developing test systems or automated test equipment (ATE)
  • Using LabVIEW as the primary development environment

Choosing the Right SSK (Quick Summary)

Use CaseRecommended SSK
Windows PC developmentWindows SSK
Linux host systemLinux SSK
ARM Linux target boardLinux ARM SSK
Real-time embedded systemVxWorks SSK
Graphical test environmentLabVIEW SSK

Final Takeaway

For SSK 1.x:

  • The directory names and concepts remain consistent across platforms
  • The operating system and CPU determine how libraries and drivers are packaged
  • ARM targets add cross-compilation and rebuild support, but do not change the API

For new users, becoming familiar with the function of the sample applications, NAI libraries, and platform-specific documentation will provide all the details you will need to deploy an application targeting NAI hardware. Consult the Software Development Guide 1.x for step-by-step instructions on setting up your environment and starting development with SSK 1.x.