Download presentation
Presentation is loading. Please wait.
Published byMyles Page Modified over 9 years ago
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.