Integrator Resources

The official home for NAI Support

Not sure where to start? Try Quick Start Guide or ask a question below!

Toggle Components with Visual Button
JavaScript Form Processing

NAI Software Support Kit 2.X Package Guide

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

Overview

This guide describes the directory structure and intended usage of the North Atlantic Industries (NAI) Software Support Kit (SSK) version 2.x.

It is intended for engineers who are new to NAI hardware and the SSK and who need an introduction to how the SSK 2.x is organized, what each major directory contains, and how the kit is typically used during application development.


What is the NAI Software Support Kit (SSK) 2.x?

The NAI Software Support Kit (SSK) 2.x is a software development package used to develop applications that communicate with modern NAI hardware platforms.

The SSK 2.x provides:

  • A portable, C-based API for accessing NAI boards

  • Libraries that abstract board-, module-, and device-level functionality

  • Board Support Package (BSP) configuration for supported platforms

  • Sample applications demonstrating common usage patterns

  • Documentation describing APIs, workflows, and supported environments

Applications developed with the SSK 2.x can:

  • Discover and connect to NAI boards

  • Enumerate and configure I/O modules

  • Access system-level devices such as GPIO, watchdog timers, and sensors

  • Handle platform-specific interrupt implementations

  • Be built for multiple operating systems using the same application source code

The SSK 2.x is distributed as platform-specific bundles. Each bundle targets a specific operating system, processor architecture, and NAI board family.


General SSK 2.x Architecture

All SSK 2.x packages follow a layered architecture that separates application logic from board- and operating system-specific details.

Your Application
    ↓
SSK 2.x Application Libraries
    ↓
Board Support Package (BSP) and Configuration
    ↓
Operating System / Transport Layer
    ↓
NAI Hardware

Each SSK 2.x bundle includes:

  • A core set of NAI libraries

  • BSP and configuration files for the target platform

  • Sample applications built on top of the API

  • Documentation describing usage and integration

The SSK 2.x is designed so that application source code is largely portable across supported platforms, with platform-specific behavior handled by the BSP and build configuration.


Top-Level Directories in the SSK 2.x

This section describes the most common top-level directories found in SSK 2.x packages and their intended purpose.


base/

Purpose

Contains the core implementation of the SSK 2.x, including libraries, BSP support, and sample applications.

The base/ directory is the primary area used during application development.


base/nai_libs/

Purpose

Contains the core NAI software libraries that implement the SSK 2.x API.

Structure

Each library is organized into:

  • include/ — public header files

  • src/ — library implementation source code

Common libraries include (library names vary by platform and bundle): * Board-level access libraries * Module and device abstraction libraries * Ethernet and interface support libraries * Power supply and system support libraries

Usage

Applications include headers from these libraries and link against the compiled library outputs produced by the build system.

These libraries implement the API documented in the NAI SSK 2.x API library.


base/nai_bsp/

Purpose

Contains the Board Support Package (BSP) layer and platform-specific configuration.

The BSP defines how the SSK interfaces with: * A specific operating system * A specific processor architecture * A specific NAI board family

Contents typically include: * Shared BSP support code * Operating system service layers * Board- and platform-specific configuration directories

Usage

Developers typically do not modify BSP source directly. Instead, the appropriate BSP and configuration are selected during the build to match the target platform.


base/nai_sample_apps/

Purpose

Contains sample applications that demonstrate correct usage of the SSK 2.x API.

Structure

Sample applications are commonly organized into:

  • naiapp_common/ — shared utilities used by all sample applications

  • naiapp_src/ — primary sample application source code

    • board_modules/ — examples for hardware I/O modules (e.g., serial, 1553, DA, IRIG)

    • devices/ — examples for system-level devices (e.g., GPIO, RTC, watchdog)

    • Optional categories such as power supplies, depending on the platform

Usage

Sample applications are the recommended starting point for new development. They demonstrate how to:

  • Connect to a board

  • Enumerate available modules and devices

  • Perform read and write operations

  • Handle status reporting and error conditions

Tip
Build and run a sample application before developing custom software to verify that the environment is correctly configured.

docs/

Purpose

Contains documentation delivered with the SSK 2.x bundle.

Contents may include: * API documentation for individual libraries * Quick-start and integration guides * Platform- and board-specific notes * API reference or mapping documentation

The docs/ directory complements the online documentation available at https://docs.naii.com and is intended for offline reference.


Platform-Specific Directories

In addition to base/ and docs/, SSK 2.x bundles include one or more platform-specific directories.

Examples include: * petalinux-<version>/ * deos/ * Toolchain configuration directories * Build system files (e.g., CMake configuration)

Purpose

These directories define how the SSK is built and deployed for a specific operating system, toolchain, and runtime environment.

Usage

Developers select the appropriate platform configuration when building the SSK libraries and sample applications for their target system.


Choosing the Right SSK 2.x Bundle

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

  • Target operating system (Linux, PetaLinux 2018.2/2023.2, Deos, VxWorks 7)

  • Target processor architecture (x86_64, ARM, PowerPC)

  • Target NAI board family

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


What Is Unique to Each SSK 2.x Version

Although all SSK 2.x bundles share the same overall structure and development model, each version includes components specific to its target platform and intended use case.


Linux (x86_64) SSK 2.x

Unique characteristics
  • Targets standard Linux distributions on x86_64 hosts

  • Uses a native Linux toolchain

  • Commonly includes CMake-based build configuration

  • Supports development and execution on desktop or server-class systems

Typical use
  • Host-based application development

  • System integration and lab testing

  • Linux-based deployment environments


Linux ARM / PetaLinux SSK 2.x

Unique characteristics
  • Targets ARM-based Linux systems, including PetaLinux environments

  • Includes ARM-specific BSP configuration

  • Designed for cross-compilation workflows

  • Supports deployment to embedded ARM target boards

Typical use
  • Applications running directly on ARM-based NAI boards

  • Embedded Linux systems requiring platform-specific configuration


Deos SSK 2.x

Unique characteristics
  • Targets the Deos real-time operating system

  • Includes Deos-specific BSP and system integration layers

  • Designed for deterministic, safety-critical environments

Typical use
  • Real-time embedded systems

  • Applications requiring certified or safety-focused RTOS support


VxWorks SSK 2.x (Board-Specific)

Unique characteristics
  • Targets the VxWorks real-time operating system

  • Often delivered as board-specific bundles (e.g., NIU3A, 68INT6)

  • BSP and configuration tightly coupled to the target board and OS version

Typical use
  • VxWorks-based embedded systems

  • Real-time and mission-critical applications


Final Takeaway

The SSK 2.x is organized to provide a clear separation between application code, core libraries, and platform-specific configuration.

For new users, understanding the role of the base/, nai_libs/, nai_bsp/, and nai_sample_apps/ directories provides a solid foundation for developing applications with NAI hardware using the SSK 2.x.

Selecting the correct platform bundle ensures that the SSK is preconfigured for the intended operating system, processor architecture, and board family.

Help Bot

X