real-time operating systems suzanne rivoire november 20, 2002 skrufi/rtospres.ppt

Post on 24-Dec-2015

215 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Real-Time Operating SystemsReal-Time Operating Systems

Suzanne RivoireNovember 20, 2002

http://www.stanford.edu/~skrufi/rtospres.ppt

Motivating ExampleMotivating Example

void main() {do forever{ check keypad; measure temperature; control oven power; decrement timer; update display; wait for clock tick;

}}

Motivating Example - 2Motivating Example - 2

void main() {do forever{ check keypad; measure temperature; check keypad;

control oven; check keypad;

}}

Presentation OutlinePresentation Outline

Definition of real-timeCharacteristics of RTOS’sExamples

c-OS– AvrX– RTLinux– QNX Neutrino

What What isis real-time? real-time?

Correctness of output depends on timing as well as result

Hard vs. soft real-time

Are Windows and Linux real-time?

In a Hard RTOS…In a Hard RTOS…

Thread priorities can be set by the client

Threads always run according to priority

Kernel must be preemptible or bounded

Interrupts must be bounded

No virtual memory

In a Soft RTOS…In a Soft RTOS…

Like a hard RTOS:– Priority scheduling, with no degradation– Low dispatch latency– Preemptible system calls– No virtual memory (or allow pages to be locked)

Linux: guarantees about relative timing of tasks, no guarantees about syscalls

Basic RTOS ReferencesBasic RTOS References

http://www.dedicated-systems.com/encyc/publications/faq/rtfaq.htm

http://www.steroidmicros.com/mtkernel.html

http://www.qnx.com/developer/articles/dec1200b/

Silberschatz and Galvin, Operating System Concepts.

Example RTOS’sExample RTOS’sMicrium c-OS II http://www.ucos-ii.com/AvrX http://www.barello.net/avrx/RTLinux

http://fsmlabs.com/developers/man_pages/QNX Neutrino http://www.qnx.com/

c-OS IIc-OS II

Features

Sample main() function

Calling OSTaskCreate()

Creating a task

C-OS IIC-OS II

Ports to the AVR, ATmega103

Comes with book: Micro-C OS: The Real-Time Kernel by Jean Labrosse ($52)

Features

– Semaphores and mutexes

– Event flags

– Message mailboxes and queues

– Task management (priority settings)

void main (void) { /* Perform Initializations */ ... OSInit(); ... /* Create at least one task by calling OSTaskCreate() */

OSStart();}

C-OS Sample CodeC-OS Sample Code

INT8U OSTaskCreate (

void (*task)(void *pd),

void *pdata,

OS_STK *ptos,

INT8U prio);

C-OS Sample CodeC-OS Sample Code

void UserTask (void *pdata) {pdata = pdata;/* User task initialization */while (1) {/* User code goes here *//* You MUST invoke a service provided by µC/OS-II to: *//* ... a) Delay the task for ‘n’ ticks *//* ... b) Wait on a semaphore *//* ... c) Wait for a message from a task or an ISR *//* ... d) Suspend execution of this task */ }}

C-OS Sample CodeC-OS Sample Code

AvrXAvrX

Specs

Internal structures

Sample code: task creation

AvrX SpecsAvrX Specs

Code size: 500-700 words (2x bigger with debug monitor)

16 priority levels

Overhead: 20% of CPU

Version 2.3 for assembly code, 2.6 for C interface

AvrX InternalsAvrX Internals

Routine _Prolog saves state, _Epilog restores it

Task info stored in a PID block and a task control block

Modules for timers, semaphores, etc.

An AvrX TaskAn AvrX Task

AVRX_TASKDEF(myTask, 10, 3){    TimerControlBlock MyTimer;    while (1)    {        AvrXDelay(&MyTimer, 10); // 10ms delay        AvrXSetSemaphore(&Timeout);    }}

Arguments: task name, additional stack bytes, priority

RTLinuxRTLinux

Additional layer between Linux kernel and hardware

Worst-case dispatch latency on x86: 15 s

RTLinux: Basic IdeaRTLinux: Basic Idea

QNX NeutrinoQNX Neutrino

Powerful hard RTOS

Includes GUI

Memory protection and fault tolerance

SummarySummary

Hard real-time, soft real-time

Characteristics of an RTOS

Example RTOS’s

– Specs

– Internal structure/ideas

– Sample code

top related