Real-Time Operating Systems With Example PICOS18. What is an Operating System?



Similar documents
Operating Systems 4 th Class

Embedded Systems. 6. Real-Time Operating Systems

Performance Comparison of RTOS

Real-Time Systems Prof. Dr. Rajib Mall Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

Chapter 1: Introduction. What is an Operating System?

SYSTEM ecos Embedded Configurable Operating System

Linux Process Scheduling Policy

CS 377: Operating Systems. Outline. A review of what you ve learned, and how it applies to a real operating system. Lecture 25 - Linux Case Study

Chapter 2: OS Overview

Embedded & Real-time Operating Systems

Christopher John Nitta B.S. (University of California, Davis) 2000 THESIS. Master of Science. Computer Science. in the OFFICE OF GRADUATE STUDIES

1. Computer System Structure and Components

Real Time Programming: Concepts

Module 8. Industrial Embedded and Communication Systems. Version 2 EE IIT, Kharagpur 1

REAL TIME OPERATING SYSTEMS. Lesson-10:

An Implementation Of Multiprocessor Linux

Operating Systems Concepts: Chapter 7: Scheduling Strategies

Real-time Operating Systems. VO Embedded Systems Engineering Armin Wasicek

Scheduling. Yücel Saygın. These slides are based on your text book and on the slides prepared by Andrew S. Tanenbaum

The Real-Time Operating System ucos-ii

Chapter 3: Operating-System Structures. System Components Operating System Services System Calls System Programs System Structure Virtual Machines

Introduction. What is an Operating System?

Chapter 11 I/O Management and Disk Scheduling

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture

Linux 2.4. Linux. Windows

Objectives. Chapter 2: Operating-System Structures. Operating System Services (Cont.) Operating System Services. Operating System Services (Cont.

OSEK/VDX. Operating System. Version February 17 th, 2005

Lesson Objectives. To provide a grand tour of the major operating systems components To provide coverage of basic computer system organization

Linux Driver Devices. Why, When, Which, How?

Deciding which process to run. (Deciding which thread to run) Deciding how long the chosen process can run

POSIX. RTOSes Part I. POSIX Versions. POSIX Versions (2)

Porting ecos to the Analog Devices BLACKfin DSP

Real-Time Operating Systems.

Chapter 6, The Operating System Machine Level

Hard Real-Time Linux

Embedded OS. Product Information

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture

Page 1 of 5. IS 335: Information Technology in Business Lecture Outline Operating Systems

LynxOS RTOS (Real-Time Operating System)

White Paper. Real-time Capabilities for Linux SGI REACT Real-Time for Linux

Red Hat Linux Internals

Tools Page 1 of 13 ON PROGRAM TRANSLATION. A priori, we have two translation mechanisms available:

Example of Standard API

Chapter 1 Computer System Overview

快 速 porting μc/os-ii 及 driver 解 說

Review from last time. CS 537 Lecture 3 OS Structure. OS structure. What you should learn from this lecture

Chapter 3 Operating-System Structures

Linux for Embedded and Real-Time Systems

Operating System Tutorial

Embedded & Real-time Operating Systems Communication Libraries

Operating System Overview. Otto J. Anshus

Overview and History of Operating Systems

the high-performance embedded kernel User Guide Version 5.0 Express Logic, Inc Toll Free 888.THREADX FAX

Real Time Operating Systems. Tajana Simunic Rosing Department of Computer Science and Engineering University of California, San Diego.

Outline: Operating Systems

First-class User Level Threads

Linux A multi-purpose executive support for civil avionics applications?

ò Paper reading assigned for next Thursday ò Lab 2 due next Friday ò What is cooperative multitasking? ò What is preemptive multitasking?

S7 for Windows S7-300/400

Introduction to Embedded Systems. Software Update Problem

Real Time Operating System for Embedded DSP Applications

How do Users and Processes interact with the Operating System? Services for Processes. OS Structure with Services. Services for the OS Itself

Operating Systems. III. Scheduling.

Have both hardware and software. Want to hide the details from the programmer (user).

Predictable response times in event-driven real-time systems

What is best for embedded development? Do most embedded projects still need an RTOS?

Real-time processing the basis for PC Control

Operating Systems. Lecture 03. February 11, 2013

Mobile Operating Systems Lesson 05 Windows CE Part 1

Comparison between scheduling algorithms in RTLinux and VxWorks

RTAI. Antonio Barbalace (modified by M.Moro 2011) RTAI

Real-Time Component Software. slide credits: H. Kopetz, P. Puschner

INtime 4.0 Software September 2009

Chapter 3. Operating Systems

Real-Time Scheduling 1 / 39

CSE 120 Principles of Operating Systems. Modules, Interfaces, Structure

Digitale Signalverarbeitung mit FPGA (DSF) Soft Core Prozessor NIOS II Stand Mai Jens Onno Krah

Programming real-time systems with C/C++ and POSIX

Types Of Operating Systems

Chapter 3: Operating-System Structures. Common System Components

OPERATING SYSTEM SERVICES

I/O. Input/Output. Types of devices. Interface. Computer hardware

Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C

CPU SCHEDULING (CONT D) NESTED SCHEDULING FUNCTIONS

ELEC 377. Operating Systems. Week 1 Class 3

Tasks Schedule Analysis in RTAI/Linux-GPL

This tutorial will take you through step by step approach while learning Operating System concepts.

Enhancing the Monitoring of Real-Time Performance in Linux

System Structures. Services Interface Structure

Overview of Operating Systems Instructor: Dr. Tongping Liu

Chapter 13 Embedded Operating Systems

CS 3530 Operating Systems. L02 OS Intro Part 1 Dr. Ken Hoganson

Programación de Sistemas Empotrados y Móviles (PSEM)

Linux Scheduler. Linux Scheduler

1 Organization of Operating Systems

Real- Time Scheduling

TEST CHAPTERS 1 & 2 OPERATING SYSTEMS

Operating system Dr. Shroouq J.

Lecture 3 Theoretical Foundations of RTOS

Transcription:

Real-Time Operating Systems With Example PICOS18 Sebastian Fischmeister 1 What is an Operating System? A program that acts as an intermediary between a user of a computer and the computer hardware Operating system goals: o Execute user programs and make solving user problems easier. o Make the computer system convenient to use Use the computer hardware in an efficient manner CSE480/CIS700 S. Fischmeister 2 1

Computer System Components 1. Hardware provides basic computing resources (CPU, memory, I/O devices) 2. Operating system controls and coordinates the use of the hardware among the various application programs for the various users 3. Applications programs define the ways in which the system resources are used to solve the computing problems of the users (compilers, database systems, video games, business programs) 4. Users (people, machines, other computers) CSE480/CIS700 S. Fischmeister 3 Abstract View of System Components CSE480/CIS700 S. Fischmeister 4 2

What is an RTOS? Often used as a control device in a dedicated application such as controlling scientific experiments, medical imaging systems, industrial control systems, and some display systems Well-defined fixed-time constraints CSE480/CIS700 S. Fischmeister 5 More Precisely? The system allows access to sensitive resources with defined response times. o Maximum response times are good for hard real-time o Average response times are ok for soft real-time Any system that provides the above can be classified as a real-time system o 10us for a context switch, ok? o 10s for a context switch, ok? CSE480/CIS700 S. Fischmeister 6 3

Taxonomy of RTOSs Small, fast, proprietary kernels RT extensions to commercial timesharing systems Component-based kernels University-based kernels CSE480/CIS700 S. Fischmeister 7 Small, Fast, Proprietary Kernels They come in two varieties: o Homegrown o Commercial offerings Usually used for small embedded systems Typically specialized for one particular application Typically stripped down and optimized versions: o Fast context switch o Small size, limited functionality o Low interrupt latency o Fixed or variable sized partitions for memory management PICOS18, psos, MicroC, CSE480/CIS700 S. Fischmeister 8 4

RT Extensions A common approach is to extend Unix o Linux: RT-Linux, RTLinuxPro, RTAI, o Posix: RT-Posix o MACH: RT-MACH Also done for Windows based on virtualization. Generally slower and less predictable. Richer environment, more functionality. These systems use familiar interfaces, even standards. Problems when converting an OS to an RTOS: o Interface problems (nice and setpriority in Linux) o Timers too coarse o Memory management has no bounded execution time o Intolerable overhead, excessive latency CSE480/CIS700 S. Fischmeister 9 How to do an RT Extension? Compliant kernels o Takes an existing RTOS and make it execute other UNIX binaries (see LynxOS). o Interfaces need to be reprogrammed. o Behavior needs to be correctly reimplemented. CSE480/CIS700 S. Fischmeister 10 5

How to do an RT Extension? Dual kernels o Puts an RTOS kernel between the hardware and the OS. o Hard tasks run in the RTOS kernel, the OS runs when CPU is available. o Native applications can run without any changes. o Hard tasks get real-time properties. o See RTLinuxPro Problems: A single failing hard task can kill the whole system. The RTOS kernel requires its own IO drivers. CSE480/CIS700 S. Fischmeister 11 How to do an RT Extension? Core kernel modifications o Takes the non-rt operating systems and modifies it to become an RTOS. Problem: (need to do all this) o Implement high-resolution timers o Make the kernel preemptive o Implement priority inheritance o Replace FIFOs with priority queues o Find and change long kernel execution paths CSE480/CIS700 S. Fischmeister 12 6

Component-based Kernels The source consists of a number of components that can be selectively included to compose the RTOS. See OS-Kit, Coyote, PURE, 2k, MMLite, Pebble, Chaos, ecos. ecos o Hardware Abstraction Layer (HAL) o Real-time kernel Interrupt handling Exception handling Choice of schedulers Thread support Rich set of synchronization primitives Timers, counters and alarms Choice of memory allocators Debug and instrumentation support Counters -- Count event occurrences Clocks -- Provide system clocks Alarms -- Run an alarm function Mutexes -- Synchronization primitive Condition Variables -- Synchronization primitive Semaphores -- Synchronization primitive Mail boxes -- Synchronization primitive Event Flags -- Synchronization primitive Spinlocks -- Low-level Synchronization Primitive Scheduler Control -- Control the state of the scheduler Interrupt Handling -- Manage interrupt handlers CSE480/CIS700 S. Fischmeister 13 Component-based Kernels ecos o µitron 3.0 compatible API o POSIX compatible API o ISO C and math libraries o Serial, ethernet, wallclock and watchdog device drivers o USB slave support o TCP/IP networking stacks o GDB debug support All components can be added through a configuration file that includes and excludes parts of the source code. CSE480/CIS700 S. Fischmeister 14 7

Research Kernels Many researchers built a new kernel for one of these reasons: o Challenge basic assumptions made in timesharing OS o Developing real-time process models o Developing real-time synchronization primitives o Developing solutions facilitating timing analysis o Strong emphasis on predictability o Strong emphasis on fault tolerance o Investigate the object-oriented approach o Real-time multiprocessor support o Investigating QoS CSE480/CIS700 S. Fischmeister 15 What Typically Differs 16 8

Requirements RTOS must be predictable o We have to validate the system o We have to validate the OS calls/services We must know upper bounds to o Execution time of system calls o Memory usage We must have static bounds on o Memory layout o Size of data structures (e.g. queues) Fine grain interrupt control CSE480/CIS700 S. Fischmeister 17 RTOS Predictability All components of the RTOS must be predictable o System calls, device drivers, kernel internal management Memory access o Page faults, lookup time, caches Disk access o Bound for head movement while reading/writing data Net access o Bound for time for transmission, switching o Dropped packets?? Scheduling must be deterministic CSE480/CIS700 S. Fischmeister 18 9

Admission Control Admission control is a function that decides if new work entering the system should be admitted or not. To perform this it requires: o A model of the state of system resources o Knowledge about incoming requests o An algorithm to make the admission decision o Policies for actions to take upon admission and rejection Statically scheduled systems require no admission control. CSE480/CIS700 S. Fischmeister 19 Admission Control The admission algorithm requires preanalyzed tasks Shared data Execution time Precedence information Importance level Deadlines Positive decision assigns time slices to the task Negative decision has options: o Run a simpler version of the task o Run on a different machine o Reject the task Admission algorithms can be complex as they have to consider multiple resources (e.g., networked video streaming). CSE480/CIS700 S. Fischmeister 20 10

Resource Reservation Resource reservation is the act of actually assigning resources to a task. o Initially no resource reservation, only allocation as the task runs. o Valuable for hard real-time systems. o Introduces an overhead as resources might be unused => introduction of resource reclaiming strategies Closely linked to resource kernels that offer interfaces for resource reservation, donation, and reflection. CSE480/CIS700 S. Fischmeister 21 Task Declaration RTOSs tailored to microprocessors often require a static declaration of tasks. Advantages are: o Simple check that the system has sufficient resources. o No admission control necessary. o No overhead introduced by the admission test. o No thread spawning problems => but quite static CSE480/CIS700 S. Fischmeister 22 11

Boot from ROM The RTOS typically boots from the ROM when used on microprocessors. Requires the application program to actually start up the RTOS: void main (void) { /* Perform Initializations */... OSInit();... /* Create at least one task by calling OSTaskCreate() */ OSStart(); } CSE480/CIS700 S. Fischmeister 23 Configurability As mentioned with component-based RTOS, the system must be configurable. Include only components needed for the present system Components must be removable o Inter-module dependencies limit configurability Configuration tailors OS to system o Different configuration possibilities Example RoboVM (PICDEM and modular robot). CSE480/CIS700 S. Fischmeister 24 12

Configurability Remove unused functions o May be done via linker automatically Replace functionality o Motor placement comes in three functions: Calculated Lookup table (program memory) Lookup table (EEPROM) Conditional compilation o Use #if, #ifdef constructs o Needs configuration editor o Example: Linux make config. CSE480/CIS700 S. Fischmeister 25 Problem with Configurability Per (boolean) configuration option, we obtain two new OS versions. Embedded systems require extensive testing. The application must be tested with each configuration separately: o 100 configuration options we get around 2^100 o Require hardware setup o Require software setup o Require reporting for automated testing CSE480/CIS700 S. Fischmeister 26 13

Embedded RTOS I/O I/O normally only through kernel via an system call. o Expensive but provides control In an RTOS for embedded systems, tasks are allowed to do I/O operations directly o Direct fast access o Direct task to task communication between chips Problem: Can cause troubles if tasks interfere Solution: Programmer must do synchronization too CSE480/CIS700 S. Fischmeister 27 Embedded RTOS: Interrupts Normal OS: Interrupts are kernel only o Must be reliable (dropped disk interrupts ) o Costly: Notification via context switch/syscalls Embedded OS: tasks can use interrupts o Again: only trusted/tested programs o Speed important o Fast task control possible o But: modularity decreases, as tasks may have to share interrupts correctly CSE480/CIS700 S. Fischmeister 28 14

PICOS18 29 Terminology Critical section, or critical region, is code that needs to be treated indivisibly. o No interrupts o No context switch Resource is an entity used by a task. o Printer, keyboard, CAN bus, serial port Shared resource is a resource that can be used by more than one task. o => mutual exclusion Multitasking is the process of scheduling and switching the CPU between several tasks. CSE480/CIS700 S. Fischmeister 30 15

Task Task, also called thread, is a user application. o Shares the CPU and resources with other tasks o Follows a defined life cycle CSE480/CIS700 S. Fischmeister 31 Context Switches A context switch occurs whenever the multitasking kernel decides to run a different task. o Save the current task s context in the storage area. o Restores the new task s context from the storage area. o Resumes the new task Context switching adds overhead. The more registers a processor has, the higher the overhead => irrelevant for RTOS as long as its known. CSE480/CIS700 S. Fischmeister 32 16

Kernels The kernel is responsible for managing the tasks. Most fundamental service is the context switch. Non-preemtive kernels, also cooperative multitasking o The task needs to explicitly give up control of the CPU. o Allows low interrupt latency, because they may be never disabled. o Allows non-reentrant functions at the task level. o Response time is determined by the longest task. o No overhead for protecting shared data. o Responsiveness may be low, because of low priority task requiring a lot of time until it releases the CPU. CSE480/CIS700 S. Fischmeister 33 Kernels Preemptive kernel o Responsiveness is good, because tasks get preempted. o A higher-priority task can preempt a lower priority task that still requires more time to compute. o Response time becomes deterministic, because at the next tick, the OS switches to the other new task. o Non-reentrant functions require careful programming. o Periodic execution of the tick adds to the overhead. CSE480/CIS700 S. Fischmeister 34 17

Introduction PICOS18 is a preemptive RTOS for the PIC18 series. Bases on OSEK/VDX, an open industry standard. Developed by Pragmatec. GPL www.picos18.com www.picos18.com/forum CSE480/CIS700 S. Fischmeister 35 Services PICOS18 provides o Core services: initialization, scheduling o Alarm and counter manager o Hook routines o Task manager o Event manager o Interrupt manager CSE480/CIS700 S. Fischmeister 36 18

PICOS18 Interrupt Routine Part of the user application. One for the high priority interrupts and one for low priority interrupts. Most important part: AddOneTick() Let s have a look. CSE480/CIS700 S. Fischmeister 37 PICOS18 Context Switch The active task gets suspended and its context gets pushed onto its stack. The preempted task gets resumed and its context gets restored. Let s have look at the save_task_ctx routine. CSE480/CIS700 S. Fischmeister 38 19

Static Declarations PICOS18 requires you to statically declare o Alarms o Resources o Tasks Let s have a look. CSE480/CIS700 S. Fischmeister 39 Task API StatusType ActivateTask (TaskType TaskID) o Change the state of a task from SUSPENDED to READY. StatusType TerminateTask (void) o Changes the state of a task from READY to SUSPENDED. StatusType ChainTask (TaskType TaskID) o Terminates the current task, activates a follow up task. StatusType Schedule(void) o Invoke the scheduler to find a new active task. o Not necessary, because PICOS18 is a preemptive OS. StatusType GetTaskID (TaskRefType TaskID) StatusType GetTaskState (TaskType TaskID, TaskStateRefType State) CSE480/CIS700 S. Fischmeister 40 20

Tasks Implementation At most 16 events. The task state is encoded in the following variables: o tsk_x_state_id Bits 0-3: task identifier Bit 4: unused Bit 5-7: task state o tsk_x_active_prio Bits 0-3: task priority Bit 5-7: activation counter o Let s look at some of the functions in pro_man.c CSE480/CIS700 S. Fischmeister 41 Event Management StatusType SetEvent (TaskType TaskID, EventMaskType Mask) o Posts an event to another task. Causes a scheduling operation. StatusType ClearEvent (EventMaskType Mask) o Clears the event, otherwise an infinite loop. StatusType GetEvent (TaskType TaskID, EventMaskRefType Event) o Receives the event value for a specific task. StatusType WaitEvent (EventMaskType Mask) o Blocks the current task until the event occurs. CSE480/CIS700 S. Fischmeister 42 21

Event Implementation At most 16 events. The event status is encoded in these two variables: o EventMaskType event_x For each task 16 possible events. o EventMaskType wait_x Each task can listen for 16 possible events. Let s have a look at the code. CSE480/CIS700 S. Fischmeister 43 Alarm Management StatusType GetAlarm (AlarmType AlarmID, TickRefType Tick) o Returns the number of ticks until the alarm goes off. StatusType SetRelAlarm (AlarmType AlarmID, TickType increment, TickType cycle) o Registers an alarm relative to the current kernel counter. StatusType SetAbsAlarm (AlarmType AlarmID, TickType start, TickType cycle) o Registers an alarm as absolute kernel counter tick value. StatusType CancelAlarm (AlarmType AlarmID) o Deactivate an alarm. CSE480/CIS700 S. Fischmeister 44 22

Alarm Implementation Each tick the alarm counters get incremented by one. If the alarm value equals the counter value, then the alarm will cause an event. Let s look at the code. CSE480/CIS700 S. Fischmeister 45 Sample Application Let s look at the sample application that comes with PICOS18. CSE480/CIS700 S. Fischmeister 46 23