Presentation is loading. Please wait.

Presentation is loading. Please wait.

Real-Time Operating Systems Suzanne Rivoire November 20, 2002

Similar presentations


Presentation on theme: "Real-Time Operating Systems Suzanne Rivoire November 20, 2002"— Presentation transcript:

1 Real-Time Operating Systems Suzanne Rivoire November 20, 2002 http://www.stanford.edu/~skrufi/rtospres.ppt

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

3 Motivating Example - 2 void main() { do forever{ check keypad; measure temperature; check keypad; control oven; check keypad; }

4 Presentation Outline Definition of real-time Characteristics of RTOS’s Examples –  c-OS – AvrX – RTLinux – QNX Neutrino

5 What is real-time? Correctness of output depends on timing as well as result Hard vs. soft real-time Are Windows and Linux real-time?

6 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

7 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

8 Basic 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.

9 Example RTOS’s Micrium  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/

10  c-OS II Features Sample main() function Calling OSTaskCreate() Creating a task

11  C-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)

12 void main (void) { /* Perform Initializations */... OSInit();... /* Create at least one task by calling OSTaskCreate() */ OSStart(); }  C-OS Sample Code

13 INT8U OSTaskCreate ( void (*task)(void *pd), void *pdata, OS_STK *ptos, INT8U prio);  C-OS Sample Code

14 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 Code

15 AvrX Specs Internal structures Sample code: task creation

16 AvrX 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

17 AvrX 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.

18 An 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

19 RTLinux Additional layer between Linux kernel and hardware Worst-case dispatch latency on x86: 15  s

20 RTLinux: Basic Idea

21 QNX Neutrino Powerful hard RTOS Includes GUI Memory protection and fault tolerance

22 Summary Hard real-time, soft real-time Characteristics of an RTOS Example RTOS’s – Specs – Internal structure/ideas – Sample code


Download ppt "Real-Time Operating Systems Suzanne Rivoire November 20, 2002"

Similar presentations


Ads by Google