# Presentation: 417808

## Real-time Linux Evaluation

- Kalynnda Berens, GRC
*Kalynnda.Berens@grc.nasa.gov*

## Definitions

**Embedded System** - A combination of hardware and software which together form a component of a larger machine. An embedded system is designed to run on its own without human intervention, and may be required to respond to events in real time.
**Real-time OS** - an operating system that provides a required level of service in a bounded response time
**Hard real-time** – absolute deadlines that must be met
**Soft real-time** – time tolerance within which an event can occur

## What is Linux?

- Unix “clone”, first created in 1992 by Linus Torvalds
- Open source operating system
- Commonly used in server environment, now used in desktops and embedded systems
- Not useful for real-time systems because:
- Fairness scheduling, with limited priority scheduling
- Unpredictable, sometimes high latency
- Non-deterministic behavior
- Coarse timing resolution

## Real-Time Linux

- Modifications or extensions to standard Linux to allow soft or hard real-time applications to meet timing constraints.
- One approach uses a separate real-time “kernel” that runs Linux as the lowest priority task.
- Another approach modifies standard Linux for preemptibility, latency, timing, and/or scheduling.
- Both open source and commercial versions are available.

## Real-time Linux Projects

**Flight Linux**-a customized copy of a standard Linux distribution, adapted to the unique environment of a spacecraft embedded control computer.
**STS-83 experiment** used Debian GNU/Linux.
**RACSI** - the remote Automatic Transfer Vehicle (ATV) control at ISS.
**GOAS **- Ground Operator Assistant System for the rendezvous operations of ATV.
**PLATINO** numerical control
**iArte** - Industrial Automation Real Time Environment
- FAA Level C certified **flight simulator**
**Cascade** – a RTLinux based GPS receiver

**Notes:**
Space shuttle experiment, STS-83 experiment, studied the growth of plants in microgravity and used Debian GNU/Linux.

RACSI is a laptop computer running a software package operated by an astronaut onboard the station. RACSI double monitors and checks the ATV mission and provides two simple command capabilities: temporarily interrupt the mission or command a collision-avoidance maneuver.
GOAS, the Ground Operator Assistant System for the rendezvous operations of ATV. Used on ground, GOAS is a software tool to monitor the ATV mission and intervene in case of a problem. GOAS provides complex command and control capabilities to replan the entire mission if necessary.
PLATINO numerical control based on standard PC with LINUX O.S. and RTAI real time extension 
iArte
(Industrial Automation Real Time Environment)
FAA Level C certified flight simulator 
Cascade is a RTLinux (a realtime augmentation to Linux) based GPS receiver 

## Independent Kernel Variants

**Hardware**

**Standard Linux Kernel**

**Kernel Space**

**User Space**

**Linux Process**

**Linux Process**

- Real-Time Micro Kernel

**Real-Time Task**

**Real-Time Task**

## Kernel Modification Variants

- Hardware

**Modified Linux Kernel**
- Preemptible, Micro Timing, and/or Low Latency

**Loadable Module**

**Loadable Module**

**Kernel Space**

**User Space**

**Linux Process**

**Linux Process**

**Real-time**
**Process**

## Real-time Linux Variants

| RTAI (Real-time Application Interface) | Kernel, User space hard real-time (LXRT) | Open source |
| --- | --- | --- |
| RT-Linux | Kernel | Commercial, open source |
| OnCore OS | Separate RTOS | Commercial |
| KURT (Kansas University Real-time) | Modified | Open source |
| HardHat | Modified | Commercial |

## Testing Real-Time Linux

- Requirements derived from
- VxWorks 5.4 Test plan, MSFC
- VxWorks AE Test plan, GRC
- RTOS properties
- Specific test scenarios will be derived from the requirements, plus...
- Variant-specific attributes
- Known errors, defects, etc.
- Results of static analysis (open source)

## Test Plan

- Linux
- RTOS

- Specific
- Linux
- RTOS
- Test Plans

- VxWorks
- 5.4

- VxWorks
- AE

- RTOS
- Testing

- Variant
- Specific

- Errors

- Static
- Analysis

## Tools

- Linux Trace Toolkit
- Dynamic Probes
- kGDB (kernel debugger)
- Linux Kernel Crash Dump
- Linux Test Project
- LMBench
- Ballista
- strace
- System Call Tracker

## Requirements

- Scheduling
- Hardware Interface
- Communication and Synchronization
- Memory Management
- Task Management

- Timing
- Configuration
- External Communications
- Error Reporting
- Embedded Features
- File system
- Reliability

## Error Catalog

## Test Setup

- Development System
- (Mandrake 8.1 Linux)

- Embedded
- Pentium PC/104

- Embedded
- PowerPC

- Ethernet Connection

## Future Work

- Static analysis of open source variants
- Completion of variant-specific test plans
- Test scenario creation
- Test procedures for each scenario
- Testing on embedded hardware
- Test results and report