Skip to section navigationSkip to content

Open Source Software

Contact Us:

NASA's Goddard Space
Flight Center

Code 504
8800 Greenbelt Road
Greenbelt, MD 20771


OSI Certified

The Technology Transfer and Partnerships Office
OS Abstraction Layer (OSAL)

The OS Abstraction Layer (OSAL) project is a small software library that isolates embedded software from the real time operating system. The OSAL provides an Application Program Interface (API) to an abstract real time operating system. The OSAL then provides implementations of this API for several Real Time Operating Systems, such as vxWorks and RTEMS. In addition, implementations are provided for non Real Time Operating Systems, allowing the abstracted software to be developed and tested in a developer friendly desktop environment. In addition to the OS APIs, the OS Abstraction Layer project also provides a Hardware Abstraction Layer, designed to provide a portable interface to hardware devices such as memory, I/O ports, and non-volatile memory. To facilitate the use of these APIs, the project also includes a directory structure and set of makefiles that facilitate building a project for a particular OS and hardware platform. Several examples are included.

OS Abstraction Layer (OSAL) Goals

The main goal of the project is to allow the development of portable embedded system software that is independent of a particular Real Time Operating System. A secondary goal is to allow embedded system software to be developed and tested on desktop workstations, providing a shorter development and debug time.

Functional Goals

The OSAL project aims to provide portable Real Time Operating System functionality on a wide range of desktop and embedded operating systems.

Evolvability Goals

The OSAL project can evolve in three main areas: the Application Program Interface (API), the number of operating systems supported, and the build system.

  1. The OSAL Project can continue to add functionality to the APIs, allowing more complex software to become portable.
  2. The number of "Target" operating systems that the API is ported to can be increased. For example, current Real Time Operating systems supported include RTEMS and vxWorks, but the API can be ported to QNX, eCos, LynxOS, Nucleus, etc. On the desktop side, a port to Microsoft Windows XP is needed. This is one area where outside contributions can benefit the project.
  3. The build system can be evolved. One possibility is the use of the GNU autoconf/automake system to facilitate configuring and building the projects.

Usability Goals

The OSAL project is an embedded software library, so it does not have a user interface, but there are still usability goals in terms of the Application Program Interface (API) and the build/makefile system. The API should be easy to understand and use by programmers that are familiar with Real Time Operating systems. In addition to the API, the build system and directory structure play a big part in determining how easy this library is to use. The directory structure and makefile architecture is provided and allows the user to build generic examples for the supported target operating systems and processor boards.

Software Packages

This software is released under the terms and conditions of the NASA Open Source Agreement (NOSA) Version 1.1 or later.
OS Abstraction Layer (OSAL) NOSA

OS Abstraction Layer (OSAL) Software Package
Release Notes

NASA logo - link to
  • Page Last Updated: October 24, 2019
  • Page Editor: Adil Anis
  • NASA Official: Darryl Mitchell