Copyright © 2012 Embedded Systems Committee Real Real - - Time OS Time OS (RTOS) (RTOS)
Copyright © 2012 Embedded Systems Committee
RealReal--Time OSTime OS(RTOS)(RTOS)
Copyright © 2012 Embedded Systems Committee
Agenda
• Basic Definitions
• Introduction to RTOS
• Scheduling Algorithms
• Reentrancy
• Shared Resources
• RTOS APIs
Copyright © 2012 Embedded Systems Committee
Agenda
• Basic Definitions
• Introduction to RTOS
• Scheduling Algorithms
• Reentrancy
• Shared Resources
• RTOS APIs
Copyright © 2012 Embedded Systems Committee
Basic Definitions
• What are the Real-Time systems?– “Those systems in which the correctness of system
depends not only on the logical result of the computation, but also on the time at which the results are produced”
Copyright © 2012 Embedded Systems Committee
Basic Definitions
• Specifications of a Real-Time system include both:– Logical: Produces correct outputs.
– Temporal: Produces outputs at the right time.
Copyright © 2012 Embedded Systems Committee
Basic Definitions
• Types of Real-Time requirements are:– Hard: Failure to meet constraint is fatal.
– Soft: Late completion degrades software quality.
Copyright © 2012 Embedded Systems Committee
Basic Definitions
• Misconceptions:– “Real-Time computing is equivalent to fast
computing”
– Truth is:“Real-Time computing is equivalent to predictable computing”
Copyright © 2012 Embedded Systems Committee
Basic Definitions
• Misconceptions:– “Real-Time programming assembly coding”
– Truth is:“It is better to automate (as much as possible) Real-Time system design, instead of relying on a clever hand-crafted code”
Copyright © 2012 Embedded Systems Committee
Basic Definitions
• Misconceptions:– “Real-Time means performance engineering”
– Truth is:“In Real-Time computing, timeliness is always more important than performance.
Copyright © 2012 Embedded Systems Committee
Basic Definitions
• Misconceptions:– RTOS introduce considerable amount of overhead
on CPU
– Truth is:An RTOS typically only require between 1% to 4% of a CPU time.
Copyright © 2012 Embedded Systems Committee
Basic Definitions
Embedded SystemsEmbedded Systems
Real-Time Systems
Real-Time Embedded Systems
Copyright © 2012 Embedded Systems Committee
Agenda
• Basic Definitions
• Introduction to RTOS
• Scheduling Algorithms
• Reentrancy
• Shared Resources
• RTOS APIs
Copyright © 2012 Embedded Systems Committee
Introduction to RTOS
Copyright © 2012 Embedded Systems Committee
Introduction to RTOS
• Basic Services provided by OS:– Task Management.
– Intertask Communication & synchronization.
– Timers.
– Device I/O Supervision.
– Dynamic Memory Allocation.
Copyright © 2012 Embedded Systems Committee
Introduction to RTOS
• What are tasks?- A task─ an independent process.
- No task can call another task. unlike the normal C function which can call another function.
void task(void){
/*Some Initialization Code*/for(;;){
/*Task Code*/}
}
Copyright © 2012 Embedded Systems Committee
Introduction to RTOS
• What is multitasking?
Copyright © 2012 Embedded Systems Committee
Introduction to RTOS
• What is context?
RAM
ROMPC
SP
CPU Registers
Copyright © 2012 Embedded Systems Committee
RAM
Task1 Stack
Introduction to RTOS
• What is context?
ROM
Task2 Stack
Task1 Control Block
Task2 Control Block
Task 1CPU Registers
Task 2CPU Registers
Copyright © 2012 Embedded Systems Committee
Introduction to RTOS
• What is context?
Copyright © 2012 Embedded Systems Committee
Introduction to RTOS
• Task Life Cycle:
Copyright © 2012 Embedded Systems Committee
Introduction to RTOS
• What is the difference between RTOS & GPOS?
RTOS
GPOS
Number of Tasks That Can Be Scheduled
Task Switching Time
Copyright © 2012 Embedded Systems Committee
Introduction to RTOS
• Characteristics of an RTOS?– Reliability
– Predictability
– Performance
– Compactness
– Scalability
Copyright © 2012 Embedded Systems Committee
Agenda
• Basic Definitions
• Introduction to RTOS
• Scheduling Algorithms
• Reentrancy
• Shared Resources
• RTOS APIs
Copyright © 2012 Embedded Systems Committee
Scheduling Algorithms
• What is a scheduler?– It is part of the kernel which decides which task can
run when.
– There are many algorithms for scheduling & they can be categorized into two main categories.
Copyright © 2012 Embedded Systems Committee
Scheduling Algorithms
• Non-preemptive (Suppose it is priority based):
TimeTask1
Copyright © 2012 Embedded Systems Committee
Scheduling Algorithms
• Non-preemptive:
TimeTask1
ISR
Copyright © 2012 Embedded Systems Committee
Scheduling Algorithms
• Non-preemptive:
TimeTask1
ISRTask2
is Ready
Copyright © 2012 Embedded Systems Committee
Scheduling Algorithms
• Non-preemptive:
TimeTask1
ISR
Task1
Task2 is
Ready
Copyright © 2012 Embedded Systems Committee
Scheduling Algorithms
• Non-preemptive:
TimeTask1
ISR
Task1
Task2Although task2 is higher in priority than task1, task 1 gets to finish before task2 gets to start.
Task2 is
Ready
Copyright © 2012 Embedded Systems Committee
Scheduling Algorithms
• Preemptive (Suppose it is priority based):
TimeTask1
Copyright © 2012 Embedded Systems Committee
Scheduling Algorithms
• Preemptive:
TimeTask1
ISR
Copyright © 2012 Embedded Systems Committee
Scheduling Algorithms
• Preemptive:
TimeTask1
ISR
Copyright © 2012 Embedded Systems Committee
Scheduling Algorithms
• Preemptive:
TimeTask1
ISR
Task2
Copyright © 2012 Embedded Systems Committee
Scheduling Algorithms
• Preemptive:
TimeTask1
ISR
Task1
Task2
Copyright © 2012 Embedded Systems Committee
Agenda
• Basic Definitions
• Introduction to RTOS
• Scheduling Algorithms
• Reentrancy
• Shared Resources
• RTOS APIs
Copyright © 2012 Embedded Systems Committee
Reentrancy
char x;void foo1(void){
x++;}
char x;foo1:
mov R1,x;
add R1,1;
mov x,R1;
C Assembly
/*Some Code*/foo1();
/*Some Code*/
Task1 Task2/*Some Code*/
foo1();
/*Some Code*/
Copyright © 2012 Embedded Systems Committee
Reentrancyx = 1
Task 1: R1=0 Task 2: R1=0
Copyright © 2012 Embedded Systems Committee
Reentrancyx = 1
Task 1: R1=1 Task 2: R1=0mov R1,x;
Copyright © 2012 Embedded Systems Committee
Reentrancyx = 1
Task 1: R1=2 Task 2: R1=0mov R1,x;
add R1,1;
Copyright © 2012 Embedded Systems Committee
Reentrancyx = 2
Task 1: R1=2 Task 2: R1=0mov R1,x;
add R1,1;
mov x,R1;
Copyright © 2012 Embedded Systems Committee
Reentrancyx = 2
Task 1: R1=2 Task 2: R1=0mov R1,x;
add R1,1;
mov x,R1;
Context SwitchingTask2 is ready
Copyright © 2012 Embedded Systems Committee
Reentrancyx = 2
Task 1: R1=2 Task 2: R1=2mov R1,x;mov R1,x;
add R1,1;
mov x,R1;
Copyright © 2012 Embedded Systems Committee
Reentrancyx = 2
Task 1: R1=2 Task 2: R1=3mov R1,x;
add R1,1;
mov x,R1;
mov R1,x;
add R1,1;
Copyright © 2012 Embedded Systems Committee
Reentrancyx = 3
Task 1: R1=2 Task 2: R1=3mov R1,x;
add R1,1;
mov x,R1;
mov R1,x;
add R1,1;
mov x,R1;
Copyright © 2012 Embedded Systems Committee
Reentrancy (Another Scenario)x = 1
Task 1: R1=0 Task 2: R1=0
Copyright © 2012 Embedded Systems Committee
Reentrancyx = 1
Task 1: R1=1 Task 2: R1=1mov R1,x;
Copyright © 2012 Embedded Systems Committee
Reentrancyx = 1
Task 1: R1=1 Task 2: R1=1mov R1,x;
Context SwitchingTask2 is ready
Copyright © 2012 Embedded Systems Committee
Reentrancyx = 1
Task 1: R1=1 Task 2: R1=1mov R1,x; mov R1,x;
Copyright © 2012 Embedded Systems Committee
Reentrancyx = 1
Task 1: R1=1 Task 2: R1=2mov R1,x; mov R1,x;
add R1,1;
Copyright © 2012 Embedded Systems Committee
Reentrancyx = 2
Task 1: R1=1 Task 2: R1=2mov R1,x; mov R1,x;
add R1,1;
mov x,R1
Copyright © 2012 Embedded Systems Committee
Reentrancyx = 2
Task 1: R1=1 Task 2: R1=2mov R1,x; mov R1,x;
add R1,1;
mov x,R1;
Context SwitchingTask2 is back to waiting
Copyright © 2012 Embedded Systems Committee
Reentrancyx = 2
Task 1: R1=2 Task 2: R1=2mov R1,x;
add R1,1;
mov R1,x;
add R1,1;
mov x,R1;
Copyright © 2012 Embedded Systems Committee
Reentrancyx = 2
Task 1: R1=2 Task 2: R1=2mov R1,x;
add R1,1;
mov x,R1;
mov R1,x;
add R1,1;
mov x,R1;
Copyright © 2012 Embedded Systems Committee
Reentrancy
• When to doubt your function reentrancy?– When your function accesses a global variable while
this variable is accessed in:• ISR
• Another task
• Hardware module.
Copyright © 2012 Embedded Systems Committee
Reentrancy
• How to make a non-reentrant function reentrant?– Either using critical section or any task
synchronization services provided by the OS.
Copyright © 2012 Embedded Systems Committee
Reentrancy
• Critical Section:– Context Switching always happens after an interrupt.
– If I disabled interrupts during the time I don’t want the schedule nor any ISR interrupts the running task then this part of code is reentrant.
char x;void foo1(void){
DI;x++;EI;
}
Copyright © 2012 Embedded Systems Committee
Agenda
• Basic Definitions
• Introduction to RTOS
• Scheduling Algorithms
• Reentrancy
• Shared Resources
• RTOS APIs
Copyright © 2012 Embedded Systems Committee
Shared Resources
• Tasks always race each other for resources.
• Resources could be many thing like HW modules, memory & even CPU time.
• We have to control the tasks resources access to avoid data corruption or basically any undesirable behavior.
• Semaphores are just one methods of controlling resources access.
Copyright © 2012 Embedded Systems Committee
• Semaphore vs. mutex
Shared Resources
Copyright © 2012 Embedded Systems Committee
IntertaskCommunication
• global variable
RAM
XTask 1 write X
Task 2 read X
Copyright © 2012 Embedded Systems Committee
IntertaskCommunication
• Mailboxes- Any task can send a message to a mailbox and any task can receive a message from a mailbox
Copyright © 2012 Embedded Systems Committee
IntertaskCommunication
• Message Queues
Copyright © 2012 Embedded Systems Committee
Agenda
• Basic Definitions
• Introduction to RTOS
• Scheduling Algorithms
• Reentrancy
• Shared Resources
• RTOS APIs
Copyright © 2012 Embedded Systems Committee
RTOS APIs “uCOS-III”• OSTaskCreate(Task ptr, arg, prio, stack size)
• OSSemCreate(Sem ptr, counter)
• OSSemPost(Sem ptr)
• OSSemPend(Sem ptr,Timeout)
• OSTmrCreate(Tmr ptr, period, callback)
• OSTmrStart, OSTmrStop(Tmr ptr)
• OSMemCreate(mem ptr, block size, n blocks)
• OSMemPut(mem ptr, blk ptr)
• OSMemGet(mem ptr)
Copyright © 2012 Embedded Systems Committee
References
• uC/OS-II, Jean Labrosse
• Operating Systems: Design & Implementation, Andrew Tanenbaum
• Embedded.com
Copyright © 2012 Embedded Systems Committee
Website: www.escommittee.net
Contact Us: [email protected]
FB: Embedded Systems Committee