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.
The OSAL project aims to provide portable Real Time Operating System functionality on a wide range of desktop and embedded operating systems.
The OSAL project can evolve in three main areas: the Application Program Interface (API), the number of operating systems supported, and the build system.
- The OSAL Project can continue to add functionality to the APIs, allowing more complex software to become portable.
- 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.
- The build system can be evolved. One possibility is the use of the GNU autoconf/automake system to facilitate configuring and building the projects.
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.