Corso di Elettronica dei Sistemi Programmabili
|
|
- Myra Ellis
- 6 years ago
- Views:
Transcription
1 Corso di Elettronica dei Sistemi Programmabili Sistemi Operativi Real Time freertos implementation Aprile 2014 Stefano Salvatori 1/40
2 Sommario RTOS tick Execution context Context switch example 2/40
3 RTOS Tick Oltre allo stato di esecuzione, un task può trovarsi in uno di questi stati: sleep block 3/40
4 RTOS Tick When sleeping, a task will specify a time after which it requires 'waking'. When blocking, a task can specify a maximum time it wishes to wait. 4/40
5 RTOS Tick Time measure The FreeRTOS real time kernel measures time using a tick count variable. A timer interrupt (the RTOS tick interrupt) increments the tick count with strict temporal accuracy - allowing the real time kernel to measure time to a resolution of the chosen timer interrupt frequency. 5/40
6 RTOS Tick At (1) the RTOS idle task is executing. At (2) the RTOS tick occurs, and control transfers to the tick ISR (3). The RTOS tick ISR makes vcontroltask ready to run, and as vcontroltask has a higher priority than the RTOS idle task, switches the context to that of vcontroltask. As the execution context is now that of vcontroltask, exiting the ISR (4) returns control to vcontroltask, which starts executing (5). 6/40
7 preempitive A context switch occurring in this way is said to be Preemptive, as the interrupted task is preempted without suspending itself voluntarily. The uc port of FreeRTOS uses a compare match event on a timer to generate the RTOS tick. In the following, the RTOS tick ISR is described in detail. In computing, preemption is the act of temporarily interrupting a task being carried out by a computer system, without requiring its cooperation, and with the intention of resuming the task at a later time. Such a change is known as a context switch. It is normally carried out by a privileged task or part of the system known as a preemptive scheduler, which has the power to preempt, or interrupt, and later resume, other tasks in the system. 7/40
8 FreeRTOS Tick Code /* */ /* Interrupt service routine for the RTOS tick. */ void SIG_OUTPUT_COMPARE1A( void ) { /* Call the tick function. */ vportyieldfromtick(); /* Return from the interrupt. If a context switch has occurred this will return to a different task. */ asm volatile ( "reti" ); } /* */ 8/40
9 FreeRTOS Tick Code void vportyieldfromtick( void ) { /* This is a naked function so the context is saved. */ portsave_context(); /* Increment the tick count and check to see if the new tick value has caused a delay period to expire. This function call can cause a task to become ready to run. */ vtaskincrementtick(); /* See if a context switch is required. Switch to the context of a task made ready to run by vtaskincrementtick() if it has a priority higher than the interrupted task. */ vtaskswitchcontext(); /* Restore the context. If a context switch has occurred this will restore the context of the task being resumed. */ portrestore_context(); /* Return from this naked function. */ asm volatile ( "ret" ); } /* */ 9/40
10 Execution Context es.: uc AVR 10/40
11 Saving the Context #define portsave_context() asm volatile ( \ "push r0 \n\t" \ "in r0, SREG \n\t" \ "cli \n\t" \ "push r0 \n\t" \ "push r1 \n\t" \ "clr r1 \n\t" \ "push r2 \n\t" \ "push r3 \n\t" \ "push r4 \n\t" \ "push r5 \n\t" \... "push r30 \n\t" \ "push r31 \n\t" \ "lds r26, pxcurrenttcb \n\t" \ "lds r27, pxcurrenttcb + 1 \n\t" \ "in r0, SP_L \n\t" \ "st x+, r0 \n\t" \ "in r0, SP_H \n\t" \ "st x+, r0 \n\t" \ ); macro 11/40
12 Saving the Context #define portsave_context() asm volatile ( \ "push r0 \n\t" \ "in r0, SREG \n\t" \ "cli \n\t" \ "push r0 \n\t" \ "push r1 \n\t" \ "clr r1 \n\t" \ "push r2 \n\t" \ "push r3 \n\t" \ "push r4 \n\t" \ "push r5 \n\t" \... "push r30 \n\t" \ "push r31 \n\t" \ "lds r26, pxcurrenttcb \n\t" \ "lds r27, pxcurrenttcb + 1 \n\t" \ "in r0, SP_L \n\t" \ "st x+, r0 \n\t" \ "in r0, SP_H \n\t" \ "st x+, r0 \n\t" \ ); r0 usato per salvare lo status register va salvato 12/40
13 Saving the Context #define portsave_context() asm volatile ( \ "push r0 \n\t" \ "in r0, SREG \n\t" \ "cli \n\t" \ "push r0 \n\t" \ "push r1 \n\t" \ "clr r1 \n\t" \ "push r2 \n\t" \ "push r3 \n\t" \ "push r4 \n\t" \ "push r5 \n\t" \... "push r30 \n\t" \ "push r31 \n\t" \ "lds r26, pxcurrenttcb \n\t" \ "lds r27, pxcurrenttcb + 1 \n\t" \ "in r0, SP_L \n\t" \ "st x+, r0 \n\t" \ "in r0, SP_H \n\t" \ "st x+, r0 \n\t" \ ); r0 SR 13/40
14 Saving the Context #define portsave_context() asm volatile ( \ "push r0 \n\t" \ "in r0, SREG \n\t" \ "cli \n\t" \ "push r0 \n\t" \ "push r1 \n\t" \ "clr r1 \n\t" \ "push r2 \n\t" \ "push r3 \n\t" \ "push r4 \n\t" \ "push r5 \n\t" \... "push r30 \n\t" \ "push r31 \n\t" \ "lds r26, pxcurrenttcb \n\t" \ "lds r27, pxcurrenttcb + 1 \n\t" \ "in r0, SP_L \n\t" \ "st x+, r0 \n\t" \ "in r0, SP_H \n\t" \ "st x+, r0 \n\t" \ ); interrupt disabilitati portsave_context potrebbe essere chiamata non dall'interno della ISR (che già disab. IRQ) p.es. un task che si autosospende 14/40
15 Saving the Context #define portsave_context() asm volatile ( \ "push r0 \n\t" \ "in r0, SREG \n\t" \ "cli \n\t" \ "push r0 \n\t" \ "push r1 \n\t" \ "clr r1 \n\t" \ "push r2 \n\t" \ "push r3 \n\t" \ "push r4 \n\t" \ "push r5 \n\t" \... "push r30 \n\t" \ "push r31 \n\t" \ "lds r26, pxcurrenttcb \n\t" \ "lds r27, pxcurrenttcb + 1 \n\t" \ "in r0, SP_L \n\t" \ "st x+, r0 \n\t" \ "in r0, SP_H \n\t" \ "st x+, r0 \n\t" \ ); salvo SR perché la prima istruzione non può essere CLI? 15/40
16 Saving the Context #define portsave_context() asm volatile ( \ "push r0 \n\t" \ "in r0, SREG \n\t" \ "cli \n\t" \ "push r0 \n\t" \ "push r1 \n\t" \ "clr r1 \n\t" \ "push r2 \n\t" \ "push r3 \n\t" \ "push r4 \n\t" \ "push r5 \n\t" \... "push r30 \n\t" \ "push r31 \n\t" \ "lds r26, pxcurrenttcb \n\t" \ "lds r27, pxcurrenttcb + 1 \n\t" \ "in r0, SP_L \n\t" \ "st x+, r0 \n\t" \ "in r0, SP_H \n\t" \ "st x+, r0 \n\t" \ ); salvo r1 16/40
17 Saving the Context #define portsave_context() asm volatile ( \ "push r0 \n\t" \ "in r0, SREG \n\t" \ "cli \n\t" \ "push r0 \n\t" \ "push r1 \n\t" \ "clr r1 \n\t" \ "push r2 \n\t" \ "push r3 \n\t" \ "push r4 \n\t" \ "push r5 \n\t" \... "push r30 \n\t" \ "push r31 \n\t" \ "lds r26, pxcurrenttcb \n\t" \ "lds r27, pxcurrenttcb + 1 \n\t" \ "in r0, SP_L \n\t" \ "st x+, r0 \n\t" \ "in r0, SP_H \n\t" \ "st x+, r0 \n\t" \ ); r1 è azzerato (ISR di FreeRTOS vede se r1=0) 17/40
18 Saving the Context #define portsave_context() asm volatile ( \ "push r0 \n\t" \ "in r0, SREG \n\t" \ "cli \n\t" \ "push r0 \n\t" \ "push r1 \n\t" \ "clr r1 \n\t" \ "push r2 \n\t" \ "push r3 \n\t" \ "push r4 \n\t" \ "push r5 \n\t" \... "push r30 \n\t" \ "push r31 \n\t" \ "lds r26, pxcurrenttcb \n\t" \ "lds r27, pxcurrenttcb + 1 \n\t" \ "in r0, SP_L \n\t" \ "st x+, r0 \n\t" \ "in r0, SP_H \n\t" \ "st x+, r0 \n\t" \ ); salvo tutti i registri della CPU 18/40
19 Saving the Context #define portsave_context() asm volatile ( \ "push r0 \n\t" \ "in r0, SREG \n\t" \ "cli \n\t" \ "push r0 \n\t" \ "push r1 \n\t" \ "clr r1 \n\t" \ ); "push r2 \n\t" \ "push r3 \n\t" \ "push r4 \n\t" \ "push r5 \n\t" \... è un puntatore "push r30 \n\t" \ "push r31 \n\t" \ "lds r26, pxcurrenttcb \n\t" \ "lds r27, pxcurrenttcb + 1 \n\t" \ "in r0, SP_L \n\t" \ "st x+, r0 \n\t" \ "in r0, SP_H \n\t" \ "st x+, r0 \n\t" \ salva l'indirizzo nel registro X (r27-r26) della CPU La variabile pxcurrenttcb di FreeRTOS contiene l'indirizzo della locazione di memoria da cui recuperare lo stack pointer dei task (vd. più avanti) 19/40
20 Saving the Context #define portsave_context() asm volatile ( \ "push r0 \n\t" \ "in r0, SREG \n\t" \ "cli \n\t" \ "push r0 \n\t" \ "push r1 \n\t" \ "clr r1 \n\t" \ "push r2 \n\t" \ "push r3 \n\t" \ "push r4 \n\t" \ "push r5 \n\t" \... "push r30 \n\t" \ "push r31 \n\t" \ "lds r26, pxcurrenttcb \n\t" \ "lds r27, pxcurrenttcb + 1 \n\t" \ "in r0, SP_L \n\t" \ "st x+, r0 \n\t" \ "in r0, SP_H \n\t" \ "st x+, r0 \n\t" \ ); lo stack pointer viene salvato 20/40
21 Saving the Context #define portrestore_context() \ asm volatile ( \ "lds r26, pxcurrenttcb \n\t" \ "lds r27, pxcurrenttcb + 1 \n\t" \ "ld r28, x+ \n\t" \ "out SP_L, r28 \n\t" \ "ld r29, x+ \n\t" \ "out SP_H, r29 \n\t" \ "pop r31 \n\t" \ "pop r30 \n\t" \... "pop r1 \n\t" \ "pop r0 \n\t" \ "out SREG, r0 \n\t" \ "pop r0 \n\t" \ anche questa è una macro ); 21/40
22 Saving the Context #define portrestore_context() \ asm volatile ( \ "lds r26, pxcurrenttcb \n\t" \ "lds r27, pxcurrenttcb + 1 \n\t" \ "ld r28, x+ \n\t" \ "out SP_L, r28 \n\t" \ "ld r29, x+ \n\t" \ "out SP_H, r29 \n\t" \ "pop r31 \n\t" \ "pop r30 \n\t" \... "pop r1 \n\t" \ "pop r0 \n\t" \ "out SREG, r0 \n\t" \ "pop r0 \n\t" \ carica pccurrenttcb nel registro X della CPU pxcurrenttcb contiene l'indirizzo della locazione di memoria da cui recuperare lo stack pointer dei task ); 22/40
23 Saving the Context #define portrestore_context() \ asm volatile ( \ "lds r26, pxcurrenttcb \n\t" \ "lds r27, pxcurrenttcb + 1 \n\t" \ "ld r28, x+ \n\t" \ "out SP_L, r28 \n\t" \ "ld r29, x+ \n\t" \ "out SP_H, r29 \n\t" \ "pop r31 \n\t" \ "pop r30 \n\t" \... "pop r1 \n\t" \ "pop r0 \n\t" \ "out SREG, r0 \n\t" \ "pop r0 \n\t" \ ripristina lo stack pointer della CPU ); 23/40
24 Saving the Context #define portrestore_context() \ asm volatile ( \ "lds r26, pxcurrenttcb \n\t" \ "lds r27, pxcurrenttcb + 1 \n\t" \ "ld r28, x+ \n\t" \ "out SP_L, r28 \n\t" \ "ld r29, x+ \n\t" \ "out SP_H, r29 \n\t" \ "pop r31 \n\t" \ "pop r30 \n\t" \... "pop r1 \n\t" \ "pop r0 \n\t" \ "out SREG, r0 \n\t" \ "pop r0 \n\t" \ recupera tutti i registri della CPU ); 24/40
25 Saving the Context #define portrestore_context() \ asm volatile ( \ "lds r26, pxcurrenttcb \n\t" \ "lds r27, pxcurrenttcb + 1 \n\t" \ "ld r28, x+ \n\t" \ "out SP_L, r28 \n\t" \ "ld r29, x+ \n\t" \ "out SP_H, r29 \n\t" \ "pop r31 \n\t" \ "pop r30 \n\t" \... "pop r1 \n\t" \ "pop r0 \n\t" \ "out SREG, r0 \n\t" \ "pop r0 \n\t" \ recupera lo SR ); 25/40
26 Saving the Context #define portrestore_context() \ asm volatile ( \ "lds r26, pxcurrenttcb \n\t" \ "lds r27, pxcurrenttcb + 1 \n\t" \ "ld r28, x+ \n\t" \ "out SP_L, r28 \n\t" \ "ld r29, x+ \n\t" \ "out SP_H, r29 \n\t" \ "pop r31 \n\t" \ "pop r30 \n\t" \... "pop r1 \n\t" \ "pop r0 \n\t" \ "out SREG, r0 \n\t" \ "pop r0 \n\t" \ recupera infine r0 ); 26/40
27 Context Switch Detailed Example 27/40
28 Detailed example (1) Prior to the RTOS tick interrupt This example starts with TaskA executing. TaskB has previously been suspended so its context has already been stored on the TaskB stack. 28/40
29 Detailed example (2) The RTOS tick interrupt occurs The RTOS tick occurs just as TaskA is about to execute an LDI instruction. When the interrupt occurs the uc automatically places the current program counter (PC) onto the stack before jumping to the start of the RTOS tick ISR. auto 29/40
30 Detailed example (3) The RTOS tick interrupt executes /* Interrupt service routine for the RTOS tick. */ void SIG_OUTPUT_COMPARE1A( void ) { vportyieldfromtick(); asm volatile ( "reti" ); } void vportyieldfromtick( void ) { portsave_context(); vtaskincrementtick(); vtaskswitchcontext(); portrestore_context(); asm volatile ( "ret" ); } 30/40
31 Detailed example (4) void vportyieldfromtick( void ) { } portsave_context(); vtaskincrementtick(); vtaskswitchcontext(); portrestore_context(); asm volatile ( "ret" ); /40
32 Detailed example (5) void vportyieldfromtick( void ) { portsave_context(); vtaskincrementtick(); vtaskswitchcontext(); portrestore_context(); asm volatile ( "ret" ); } Incrementing the Tick Count vtaskincrementtick() executes after the TaskA context has been saved. For the purposes of this example assume that incrementing the tick count has caused TaskB to become ready to run. 32/40
33 Detailed example (6) void vportyieldfromtick( void ) { } portsave_context(); vtaskincrementtick(); vtaskswitchcontext(); portrestore_context(); asm volatile ( "ret" ); Incrementing the Tick Count TaskB has a higher priority than TaskA so vtaskswitchcontext() selects TaskB as the task to be given processing time when the ISR completes. 33/40
34 Detailed example (7) The TaskB stack pointer is retrieved void vportyieldfromtick( void ) { 1 } portsave_context(); vtaskincrementtick(); vtaskswitchcontext(); portrestore_context(); asm volatile ( "ret" ); 34/40
35 Detailed example (8) Restore the TaskB context portrestore_context() completes by restoring the TaskB context from its stack into the appropriate processor registers Only the program counter remains on the stack. void vportyieldfromtick( void ) { portsave_context(); vtaskincrementtick(); vtaskswitchcontext(); portrestore_context(); asm volatile ( "ret" ); } 35/40
36 Detailed example (9) The RTOS tick exits vportyieldfromtick() returns to SIG_OUTPUT_COMPARE1A()... void vportyieldfromtick( void ) { portsave_context(); vtaskincrementtick(); vtaskswitchcontext(); portrestore_context(); asm volatile ( "ret" ); } 36/40
37 Detailed example (10) The RTOS tick exits vportyieldfromtick() returns to SIG_OUTPUT_COMPARE1A() where the final instruction is a return from interrupt (RETI). A RETI instruction assumes the next value on the stack is a return address placed onto the stack when the interrupt occurred. void SIG_OUTPUT_COMPARE1A ( void ) { vportyieldfromtick(); asm volatile ( "reti" ); } 37/40
38 Detailed example (11) The RTOS tick exits When the RTOS tick interrupt started the AVR automatically placed the TaskA return address onto the stack - the address of the next instruction to execute in TaskA. The ISR altered the stack pointer so it now points to the TaskB stack. Therefore the return address POP'ed from the stack by the RETI instruction is actually the address of the instruction TaskB was going to execute immediately before it was suspended. The RTOS tick interrupt interrupted TaskA, but is returning to TaskB the context switch is complete! 38/40
39 Detailed example (12) The RTOS tick interrupt interrupted TaskA, but is returning to TaskB the context switch is complete! /40
40 Riferimenti Richard Barry, FreeRTOS, at chapter 16, pp. 13, 14, /40
Corso di Elettronica dei Sistemi Programmabili
Corso di Elettronica dei Sistemi Programmabili Sistemi Operativi Real Time freertos implementation Aprile 2014 Stefano Salvatori 1/24 Sommario RTOS tick Execution context Context switch example 2/24 RTOS
More informationContext Switching & Task Scheduling
ECE3411 Fall 2015 Lab 6b. Context Switching & Task Scheduling Marten van Dijk, Syed Kamran Haider Department of Electrical & Computer Engineering University of Connecticut Email: {vandijk, syed.haider}@engr.uconn.edu
More informationFreeRTOS. A Brief Overview. Christopher Kenna. October 1, Avionics. FreeRTOS 1 / 34
FreeRTOS A Brief Overview Christopher Kenna Avionics October 1, 2010 FreeRTOS 1 / 34 Background Information The FreeRTOS Project supports 25 official architecture ports, with many more community developed
More informationFreeRTOS. A Brief Overview. Christopher Kenna. October 1, Avionics. FreeRTOS 1 / 34
A Brief Overview Christopher Kenna Avionics October 1, 2010 1 / 34 Introduction Outline 1 Introduction About Kernel Overview 2 Tasks Tasks versus Co-Routines Task Details 3 IPC and Synchronization Queues
More informationCOMP 7860 Embedded Real- Time Systems: Threads
COMP 7860 Embedded Real- Time Systems: Threads Jacky Baltes Autonomous Agents Lab University of Manitoba Winnipeg, Canada R3T 2N2 Email: jacky@cs.umanitoba.ca WWW: http://www.cs.umanitoba.ca/~jacky http://aalab.cs.umanitoba.ca
More informationAVR Subroutine Basics
1 P a g e AVR Subroutine Basics READING The AVR Microcontroller and Embedded Systems using Assembly and C) by Muhammad Ali Mazidi, Sarmad Naimi, and Sepehr Naimi Chapter 3: Branch, Call, and Time Delay
More informationFree-RTOS Implementation
Free-RTOS Implementation Deepak D Souza Department of Computer Science and Automation Indian Institute of Science, Bangalore. 23 August 2011 Outline 1 Architecture of Free-RTOS 2 Key data structures 3
More informationWhat we will learn. Threaded Systems: Threads. Threads. Threads. Bag of functions & procedures ST OS. AUCs. Threads. AUCs. Processes MT OS MP OS
What we will learn Threaded Systems: Threads A thread-driven approach is attractive in sensor networks for many of the same reasons that it has been adopted for PDAs, laptops, and servers. In a thread-driven
More informationAn Analysis and Description of the Inner Workings of the FreeRTOS Kernel
Carleton University Department of Systems and Computer Engineering SYSC5701: Operating System Methods for Real-Time Applications An Analysis and Description of the Inner Workings of the FreeRTOS Kernel
More informationreal-time kernel documentation
version 1.1 real-time kernel documentation Introduction This document explains the inner workings of the Helium real-time kernel. It is not meant to be a user s guide. Instead, this document explains overall
More informationLecture 4: Mechanism of process execution. Mythili Vutukuru IIT Bombay
Lecture 4: Mechanism of process execution Mythili Vutukuru IIT Bombay Low-level mechanisms How does the OS run a process? How does it handle a system call? How does it context switch from one process to
More informationEmbedded Systems and Software
Embedded Systems and Software Lecture 11 Interrupts Interrupts Slide 1 Interrupts One way to think of interrupts is that they are hardwaregenerated functions calls Internal Hardware When timer rolls over,
More informationModule 8: Atmega32 Stack & Subroutine. Stack Pointer Subroutine Call function
Module 8: Atmega32 Stack & Subroutine Stack Pointer Subroutine Call function Stack Stack o Stack is a section of RAM used by the CPU to store information temporarily (i.e. data or address). o The CPU needs
More informationGrundlagen Microcontroller Interrupts. Günther Gridling Bettina Weiss
Grundlagen Microcontroller Interrupts Günther Gridling Bettina Weiss 1 Interrupts Lecture Overview Definition Sources ISR Priorities & Nesting 2 Definition Interrupt: reaction to (asynchronous) external
More informationMicroprocessors & Interfacing
Lecture Overview Microprocessors & Interfacing Interrupts (I) Lecturer : Dr. Annie Guo Introduction to Interrupts Interrupt system specifications Multiple sources of interrupts Interrupt priorities Interrupts
More informationInterrupts (I) Lecturer: Sri Notes by Annie Guo. Week8 1
Interrupts (I) Lecturer: Sri Notes by Annie Guo Week8 1 Lecture overview Introduction to Interrupts Interrupt system specifications Multiple Sources of Interrupts Interrupt Priorities Interrupts in AVR
More information12. Interrupts and Programmable Multilevel Interrupt Controller
12. Interrupts and Programmable Multilevel Interrupt Controller 12.1 Features Short and predictable interrupt response time Separate interrupt configuration and vector address for each interrupt Programmable
More informationEE458 - Embedded Systems Exceptions and Interrupts
EE458 - Embedded Systems Exceptions and Interrupts Outline Exceptions Interrupts References RTC: Chapters 10 CUG: Chapters 8, 21, 23 1 Introduction An exception is any event that disrupts the normal execution
More informationEE 308: Microcontrollers
EE 308: Microcontrollers Interrupts Aly El-Osery Electrical Engineering Department New Mexico Institute of Mining and Technology Socorro, New Mexico, USA March 1, 2018 Aly El-Osery (NMT) EE 308: Microcontrollers
More informationCODE TIME TECHNOLOGIES. Abassi RTOS. Porting Document. ATmega128 IAR
CODE TIME TECHNOLOGIES Abassi RTOS Porting Document ATmega128 IAR Copyright Information This document is copyright Code Time Technologies Inc. 2011,2012. All rights reserved. No part of this document may
More informationCOMP2121: Microprocessors and Interfacing
Lecture 19: Interrupts II http://www.cse.unsw.edu.au/~cs2121 Lecturer: Hui Wu Session 1, 2006 Overview AVR Interrupts Interrupt Vector Table System Reset Watchdog Timer Timer/Counter0 Interrupt Service
More informationAN HONORS UNIVERSITY IN MARYLAND UMBC. AvrX. Yousef Ebrahimi Professor Ryan Robucci
AvrX https://github.com/kororos/avrx Yousef Ebrahimi Professor Ryan Robucci Introduction AvrX is a Real Time Multitasking Kernel written for the Atmel AVR series of micro controllers. The Kernel is written
More informationATmega Interrupts. Reading. The AVR Microcontroller and Embedded Systems using Assembly and C) by Muhammad Ali Mazidi, Sarmad Naimi, and Sepehr Naimi
1 P a g e ATmega Interrupts Reading The AVR Microcontroller and Embedded Systems using Assembly and C) by Muhammad Ali Mazidi, Sarmad Naimi, and Sepehr Naimi Chapter 10: AVR Interrupt Programming in Assembly
More informationMicroprocessors & Interfacing
Lecture Overview Microprocessors & Interfacing Interrupts (II) Interrupts in AVR External interrupts Internal interrupts Timers/Counters Lecturer : Dr. Annie Guo S2, 2008 COMP9032 Week7 1 S2, 2008 COMP9032
More informationInterrupts (II) Lecturer: Sri Parameswaran Notes by: Annie Guo
Interrupts (II) Lecturer: Sri Parameswaran Notes by: Annie Guo 1 External Interrupts The external interrupts are triggered by the INT7:0 pins. If enabled, the interrupts will trigger even if the INT7:0
More informationUNIVERSITY OF MANITOBA Final Exam
UNIVERSITY OF MANITOBA Final Exam Winter 2007 COMPUTER SCIENCE Real-time Systems Date: Fri, 20th April 2007 Time: 09:00-12:00 Room: Frank Kennedy Brown Gym (314-345) (Time allowed: 180 Minutes) NOTE: Attempt
More informationCODE TIME TECHNOLOGIES. Abassi RTOS. Porting Document. ATmega IAR
CODE TIME TECHNOLOGIES Abassi RTOS Porting Document ATmega IAR Copyright Information This document is copyright Code Time Technologies Inc. 2011-2013. All rights reserved. No part of this document may
More informationEmbedding OS in AVR microcontrollers. Prof. Prabhat Ranjan DA-IICT, Gandhinagar
Embedding OS in AVR microcontrollers Prof. Prabhat Ranjan (prabhat_ranjan@daiict.ac.in) DA-IICT, Gandhinagar Operating System Fundamentals The kernel is the core component within an operating system Operating
More informationEmbedded Systems. 5. Operating Systems. Lothar Thiele. Computer Engineering and Networks Laboratory
Embedded Systems 5. Operating Systems Lothar Thiele Computer Engineering and Networks Laboratory Embedded Operating Systems 5 2 Embedded Operating System (OS) Why an operating system (OS) at all? Same
More informationWireless Sensor Networks (WSN)
Wireless Sensor Networks (WSN) Operating Systems M. Schölzel Operating System Tasks Traditional OS Controlling and protecting access to resources (memory, I/O, computing resources) managing their allocation
More informationInterrupts and timers
Applied mechatronics, Lab project Interrupts and timers Sven Gestegård Robertz Department of Computer Science, Lund University 2018 Outline 1 Interrupts Interrupt types Execution of an interrupt Maskable
More informationConcurrent programming: Introduction I
Computer Architecture course Real-Time Operating Systems Concurrent programming: Introduction I Anna Lina Ruscelli - Scuola Superiore Sant Anna Contact info Email a.ruscelli@sssup.it Computer Architecture
More informationNewbie s Guide to AVR Interrupts
Newbie s Guide to AVR Interrupts Dean Camera March 15, 2015 ********** Text Dean Camera, 2013. All rights reserved. This document may be freely distributed without payment to the author, provided that
More informationProcesses and Non-Preemptive Scheduling. Otto J. Anshus
Processes and Non-Preemptive Scheduling Otto J. Anshus Threads Processes Processes Kernel An aside on concurrency Timing and sequence of events are key concurrency issues We will study classical OS concurrency
More informationPrecept 2: Non-preemptive Scheduler. COS 318: Fall 2018
Precept 2: Non-preemptive Scheduler COS 318: Fall 2018 Project 2 Schedule Precept: Monday 10/01, 7:30pm (You are here) Design Review: Monday 10/08, 3-7pm Due: Sunday 10/14, 11:55pm Project 2 Overview Goal:
More informationInterrupts & Interrupt Service Routines (ISRs)
ECE3411 Fall 2015 Lecture 2c. Interrupts & Interrupt Service Routines (ISRs) Marten van Dijk, Syed Kamran Haider Department of Electrical & Computer Engineering University of Connecticut Email: vandijk,
More informationMicrium µc/os II RTOS Introduction EE J. E. Lumpp
Micrium µc/os II RTOS Introduction (by Jean Labrosse) EE599 001 Fall 2012 J. E. Lumpp μc/os II μc/os II is a highly portable, ROMable, very scalable, preemptive real time, deterministic, multitasking kernel
More informationImplementation of the ART Real Time Micro Kernel
Implementation of the ART Real Time Micro Kernel This document describes the functions constituting the application interface of the ART kernel. Task administration exception init_kernel() This function
More informationCODE TIME TECHNOLOGIES. Abassi RTOS. Porting Document. ATmega128 GCC
CODE TIME TECHNOLOGIES Abassi RTOS Porting Document ATmega128 GCC Copyright Information This document is copyright Code Time Technologies Inc. 2011,2012. All rights reserved. No part of this document may
More informationWhy use an Operating System? Operating System Definition
Why use an Operating System? Operating System Definition Provides a set of services to system users (collection of service programs) Shield between the user and the hardware Resource manager: CPU(s) memory
More informationToday s Topics. u Thread implementation. l Non-preemptive versus preemptive threads. l Kernel vs. user threads
Today s Topics COS 318: Operating Systems Implementing Threads u Thread implementation l Non-preemptive versus preemptive threads l Kernel vs. user threads Jaswinder Pal Singh and a Fabulous Course Staff
More informationADAPTING MODE SWITCHES INTO THE HIERARCHICAL SCHEDULING DANIEL SANCHEZ VILLALBA
ADAPTING MODE SWITCHES INTO THE HIERARCHICAL SCHEDULING DANIEL SANCHEZ VILLALBA 0. Abstract Mode switches are used to partition the system s behavior into different modes to reduce the complexity of large
More informationComputer architecture. A simplified model
Computer architecture A simplified model Computers architecture One (or several) CPU(s) Main memory A set of devices (peripherals) Interrupts Direct memory access Computers architecture Memory Keyboard
More informationAGH University of Science and Technology Cracow Department of Electronics
AGH University of Science and Technology Cracow Department of Electronics Microprocessors laboratory Tutorial 7 Interrupts Author: Paweł Russek http://www.fpga.agh.edu.pl/upt ver. 25/05/16 1/11 1. Introduction
More informationEngineer To Engineer Note
Engineer To Engineer Note EE-134 Phone: (800) ANALOG-D, FAX: (781) 461-3010, EMAIL: dsp.support@analog.com, FTP: ftp.analog.com, WEB: www.analog.com/dsp Copyright 2001, Analog Devices, Inc. All rights
More informationInterrupts and Time. Real-Time Systems, Lecture 5. Martina Maggio 28 January Lund University, Department of Automatic Control
Interrupts and Time Real-Time Systems, Lecture 5 Martina Maggio 28 January 2016 Lund University, Department of Automatic Control Content [Real-Time Control System: Chapter 5] 1. Interrupts 2. Clock Interrupts
More informationToday s Menu. >Use the Internal Register(s) >Use the Program Memory Space >Use the Stack >Use global memory
Today s Menu Methods >Use the Internal Register(s) >Use the Program Memory Space >Use the Stack >Use global memory Look into my See examples on web-site: ParamPassing*asm and see Methods in Software and
More informationChapters 2, 3: bits and pieces. Chapters 2 & 3. Chapters 2, 3: bits and pieces. Chapters 2, 3: bits and pieces. Using C. A last word about hardware
Chapters 2 & 3 Chapters 2, 3: bits and pieces A review of hardware essentials Most of you have seen this material in other classes Still worth a careful read: may give you new insight We ll touch briefly
More informationInterrupts and Time. Interrupts. Content. Real-Time Systems, Lecture 5. External Communication. Interrupts. Interrupts
Content Interrupts and Time Real-Time Systems, Lecture 5 [Real-Time Control System: Chapter 5] 1. Interrupts 2. Clock Interrupts Martina Maggio 25 January 2017 Lund University, Department of Automatic
More informationIntroduction to Real-Time Systems and Multitasking. Microcomputer Architecture and Interfacing Colorado School of Mines Professor William Hoff
Introduction to Real-Time Systems and Multitasking Real-time systems Real-time system: A system that must respond to signals within explicit and bounded time requirements Categories Soft real-time system:
More informationProcesses Prof. James L. Frankel Harvard University. Version of 6:16 PM 10-Feb-2017 Copyright 2017, 2015 James L. Frankel. All rights reserved.
Processes Prof. James L. Frankel Harvard University Version of 6:16 PM 10-Feb-2017 Copyright 2017, 2015 James L. Frankel. All rights reserved. Process Model Each process consists of a sequential program
More informationOPERATING SYSTEM OVERVIEW
OPERATING SYSTEM OVERVIEW Contents Basic hardware elements Interrupts Most I/O devices are much slower than the processor Active waiting cycle (polling) Interrupt request signal Interrupt mechanism An
More informationToday s Topics. u Thread implementation. l Non-preemptive versus preemptive threads. l Kernel vs. user threads
Today s Topics COS 318: Operating Systems Implementing Threads u Thread implementation l Non-preemptive versus preemptive threads l Kernel vs. user threads Jaswinder Pal Singh Computer Science Department
More informationCommon Computer-System and OS Structures
Common Computer-System and OS Structures Computer System Operation I/O Structure Storage Structure Storage Hierarchy Hardware Protection General System Architecture Oct-03 1 Computer-System Architecture
More informationSMD149 - Operating Systems
SMD149 - Operating Systems Roland Parviainen November 3, 2005 1 / 45 Outline Overview 2 / 45 Process (tasks) are necessary for concurrency Instance of a program in execution Next invocation of the program
More informationCprE 288 Translating C Control Statements and Function Calls, Loops, Interrupt Processing. Instructors: Dr. Phillip Jones Dr.
CprE 288 Translating C Control Statements and Function Calls, Loops, Interrupt Processing Instructors: Dr. Phillip Jones Dr. Zhao Zhang 1 Announcements Final Projects Projects: Mandatory Demos Deadweek
More information8051 Microcontroller Interrupts
8051 Microcontroller Interrupts There are five interrupt sources for the 8051, which means that they can recognize 5 different events that can interrupt regular program execution. Each interrupt can be
More informationCooperative Multitasking
Cooperative Multitasking Cooperative Multitasking let's make the controller for the lamp in an LCD projector Lamp off Fan off evbutton Lamp on Fan on evtimeout Lamp off Fan on evbutton Code for LCD Projector
More informationAutomatic Creation of Define.xml for ADaM
Automatic Creation of Define.xml for ADaM Alessia Sacco, Statistical Programmer www.valos.it info@valos.it 1 Indice Define.xml Pinnacle 21 Community Valos ADaM Metadata 2 Define.xml Cos è: Case Report
More informationAVR Microcontrollers Architecture
ก ก There are two fundamental architectures to access memory 1. Von Neumann Architecture 2. Harvard Architecture 2 1 Harvard Architecture The term originated from the Harvard Mark 1 relay-based computer,
More informationhardware interrupts software interrupts
CS 5212Operating Systems wk 4 Interrupts An interrupt is a signal received by the CPU that causes a temporary halt in the execution of a program while some other task is performed. Interrupts may be generated
More informationUNIT -3 PROCESS AND OPERATING SYSTEMS 2marks 1. Define Process? Process is a computational unit that processes on a CPU under the control of a scheduling kernel of an OS. It has a process structure, called
More informationCOMP2121: Microprocessors and Interfacing
Interfacing Lecture 9: Program Control Instructions http://www.cse.unsw.edu.au/~cs2121 Lecturer: Hui Wu Session 1, 2006 Program control instructions in AVR Stacks Overview Sample AVR assembly programs
More informationProcess Context & Interrupts. New process can mess up information in old process. (i.e. what if they both use the same register?)
1 Process Context 1.1 What is context? A process is sometimes called a task, subroutine or program. Process context is all the information that the process needs to keep track of its state. Registers Temporary
More informationARM Cortex-M and RTOSs Are Meant for Each Other
ARM Cortex-M and RTOSs Are Meant for Each Other FEBRUARY 2018 JEAN J. LABROSSE Introduction Author µc/os series of software and books Numerous articles and blogs Lecturer Conferences Training Entrepreneur
More informationInterrupts (Exceptions) Gary J. Minden September 11, 2014
Interrupts (Exceptions) Gary J. Minden September 11, 2014 1 Interrupts Motivation Implementation Material from Stellaris LM3S1968 Micro-controller Datasheet Sections 2.5 and 2.6 2 Motivation Our current
More informationINTERRUPTS in microprocessor systems
INTERRUPTS in microprocessor systems Microcontroller Power Supply clock fx (Central Proccesor Unit) CPU Reset Hardware Interrupts system IRQ Internal address bus Internal data bus Internal control bus
More informationMWS3-3 - MOC NETWORKING WITH WINDOWS SERVER 2016
MWS3-3 - MOC 20741 - NETWORKING WITH WINDOWS SERVER 2016 Categoria: Windows Server 2016 INFORMAZIONI SUL CORSO Durata: Categoria: Qualifica Istruttore: Dedicato a: Produttore: 5,00000 Giorni Windows Server
More informationReal-Time Programming
Real-Time Programming Week 7: Real-Time Operating Systems Instructors Tony Montiel & Ken Arnold rtp@hte.com 4/1/2003 Co Montiel 1 Objectives o Introduction to RTOS o Event Driven Systems o Synchronization
More informationx86 architecture et similia
x86 architecture et similia 1 FREELY INSPIRED FROM CLASS 6.828, MIT A full PC has: PC architecture 2 an x86 CPU with registers, execution unit, and memory management CPU chip pins include address and data
More informationAGH University of Science and Technology Cracow Department of Electronics
AGH University of Science and Technology Cracow Department of Electronics Microprocessors laboratory Tutorial 7 Interrupts Author: Paweł Russek http://www.fpga.agh.edu.pl/upt ver. 01/07/14 1/12 1. Introduction
More informationRT3 - FreeRTOS Real Time Programming
Formation FreeRTOS Real Time Programming: Real-time programming applied to the FreeRTOS operating system - Systèmes d'exploitation: RTOS RT3 - FreeRTOS Real Time Programming Real-time programming applied
More informationComputer Systems Overview
Computer Systems Overview Maurizio Pizzonia slides adattate da W. Stalling Operating Systems: Internals and Design Principles http://williamstallings.com/os/os5e.html 1 Basic Elements Processor Main Memory
More informationInterrupts (Exceptions) (From LM3S1968) Gary J. Minden August 29, 2016
Interrupts (Exceptions) (From LM3S1968) Gary J. Minden August 29, 2016 1 Interrupts Motivation Implementation Material from Stellaris LM3S1968 Micro-controller Datasheet Sections 2.5 and 2.6 2 Motivation
More informationObjectives. Making TOS preemptive Avoiding race conditions
TOS Arno Puder 1 Objectives Making TOS preemptive Avoiding race conditions 2 Status Quo TOS is non-preemptive. i.e., a process has to relinquish control of the CPU voluntarily via resign() The implication
More informationThe Kernel Abstraction. Chapter 2 OSPP Part I
The Kernel Abstraction Chapter 2 OSPP Part I Kernel The software component that controls the hardware directly, and implements the core privileged OS functions. Modern hardware has features that allow
More informationPreemptive Scheduling
Preemptive Scheduling Lecture 18 18-1 Big Picture Methods learned so far We ve been using a foreground/background system Interrupt service routines run in foreground Task code runs in background Limitations
More information8-bit Microcontroller with 8K Bytes Programmable Flash AT90C8534. Preliminary
Features Utilizes the AVR RISC Architecture AVR High-performance and Low-power RISC Architecture 118 Powerful Instructions Most Single Clock Cycle Execution 32 x 8 General-purpose Working Registers Up
More informationMechatronics and Microcomputers. Stipendium Hungaricum 2018/2019 Autumn Semester Szilárd Aradi, PhD
Mechatronics and Microcomputers Stipendium Hungaricum 2018/2019 Autumn Semester Szilárd Aradi, PhD ATmega128 CPU Single-level pipelining Egyciklusú ALU működés Reg. reg., reg. konst. közötti műveletek
More informationQ.1 Explain Computer s Basic Elements
Q.1 Explain Computer s Basic Elements Ans. At a top level, a computer consists of processor, memory, and I/O components, with one or more modules of each type. These components are interconnected in some
More informationLecture Topics. Announcements. Today: Uniprocessor Scheduling (Stallings, chapter ) Next: Advanced Scheduling (Stallings, chapter
Lecture Topics Today: Uniprocessor Scheduling (Stallings, chapter 9.1-9.3) Next: Advanced Scheduling (Stallings, chapter 10.1-10.4) 1 Announcements Self-Study Exercise #10 Project #8 (due 11/16) Project
More informationAVR ISA & AVR Programming (I) Lecturer: Sri Parameswaran Notes by: Annie Guo
AVR ISA & AVR Programming (I) Lecturer: Sri Parameswaran Notes by: Annie Guo 1 Lecture Overview AVR ISA AVR Instructions & Programming (I) Basic construct implementation 2 Atmel AVR 8-bit RISC architecture
More informationScheduling - Overview
Scheduling - Overview Quick review of textbook scheduling Linux 2.4 scheduler implementation overview Linux 2.4 scheduler code Modified Linux 2.4 scheduler Linux 2.6 scheduler comments Possible Goals of
More informationHomework / Exam. Return and Review Exam #1 Reading. Machine Projects. Labs. S&S Extracts , PIC Data Sheet. Start on mp3 (Due Class 19)
Homework / Exam Return and Review Exam #1 Reading S&S Extracts 385-393, PIC Data Sheet Machine Projects Start on mp3 (Due Class 19) Labs Continue in labs with your assigned section 1 Interrupts An interrupt
More informationComputer System Overview. Chapter 1
Computer System Overview Chapter 1 Operating System Exploits the hardware resources of one or more processors Provides a set of services to system users Manages secondary memory and I/O devices Basic Elements
More informationMultitasking on Cortex-M(0) class MCU A deepdive into the Chromium-EC scheduler
Multitasking on Cortex-M(0) class MCU A deepdive into the Chromium-EC scheduler $whoami Embedded Software Engineer at National Instruments We just finished our first product using Chromium-EC and future
More informationLecture 3. Introduction to Real-Time kernels. Real-Time Systems
Real-Time Systems Lecture 3 Introduction to Real-Time kernels Task States Generic architecture of Real-Time kernels Typical structures and functions of Real-Time kernels Last lecture (2) Computational
More informationVCC PB2 (SCK/ADC1/T0/PCINT2) PB1 (MISO/AIN1/OC0B/INT0/PCINT1) PB0 (MOSI/AIN0/OC0A/PCINT0)
Features High Performance, Low Power AVR 8-Bit Microcontroller Advanced RISC Architecture 120 Powerful Instructions Most Single Clock Cycle Execution 32 x 8 General Purpose Working Registers Fully Static
More informationProcesses and Operating Systems
CHAPTER Processes and Operating Systems The process abstraction. Switching contexts between programs. Real-time operating systems (RTOSs). Interprocess communication. Task-level performance analysis and
More informationFreeRTOS - Common Task Design Patterns in Multi-tasking Applications
FreeRTOS - Common Task Design Patterns in Multi-tasking Applications Richard Barry, Founder Real Time Engineers Ltd. Class ID: 9C11L Renesas Electronics America Inc. 2012 Renesas Electronics America Inc.
More informationChapter 7 Subroutines. Richard P. Paul, SPARC Architecture, Assembly Language Programming, and C
Chapter 7 Subroutines Richard P. Paul, SPARC Architecture, Assembly Language Programming, and C 2 Subroutines Subroutines allow us to either to repeat a computation or to repeat the computation with different
More informationReview: Program Execution. Memory program code program data program stack containing procedure activation records
Threads and Concurrency 1 Review: Program Execution Registers program counter, stack pointer,... Memory program code program data program stack containing procedure activation records CPU fetches and executes
More informationIntroduction to Real-Time Operating Systems
Introduction to Real-Time Operating Systems GPOS vs RTOS General purpose operating systems Real-time operating systems GPOS vs RTOS: Similarities Multitasking Resource management OS services to applications
More informationBasic Concepts. Based on original slides by Silberschatz, Galvin, Gagne, and Anastasi. PerLab
Alessio Vecchio alessio.vecchio@unipi.it Pervasive Computing & Networking Lab. () Dip. di Ingegneria dell'informazione Università di Pisa Based on original slides by Silberschatz, Galvin, Gagne, and Anastasi
More informationCS 550 Operating Systems Spring System Call
CS 550 Operating Systems Spring 2018 System Call 1 Recap: The need for protection When running user processes, the OS needs to protect itself and other system components For reliability: buggy programs
More informationAVR ISA & AVR Programming (I) Lecturer: Sri Parameswaran Notes by: Annie Guo
AVR ISA & AVR Programming (I) Lecturer: Sri Parameswaran Notes by: Annie Guo 1 Lecture Overview AVR ISA AVR Instructions & Programming (I) Basic construct implementation 2 Atmel AVR 8-bit RISC architecture
More informationFast Interrupts. Krste Asanovic, UC Berkeley / SiFive Inc. (Chair) Kevin Chen, Andes (Vice-Chair)
Fast Interrupts Krste Asanovic, UC Berkeley / SiFive Inc. (Chair) Kevin Chen, Andes (Vice-Chair) 8 th RISC-V Workshop Barcelona Supercomputer Center, Barcelona, Spain May 9, 2018 RISC-V for Embedded Embedded
More informationCS 318 Principles of Operating Systems
CS 318 Principles of Operating Systems Fall 2017 Lecture 5: Thread Ryan Huang Administrivia HW1 solution released on Piazza resources Lab 0 grading - In progress - Cheating policy Lab 1 review session
More informationThreads and Concurrency
Threads and Concurrency 1 Threads and Concurrency key concepts threads, concurrent execution, timesharing, context switch, interrupts, preemption reading Three Easy Pieces: Chapter 26 (Concurrency and
More informationThreads and Concurrency
Threads and Concurrency 1 Threads and Concurrency key concepts threads, concurrent execution, timesharing, context switch, interrupts, preemption reading Three Easy Pieces: Chapter 26 (Concurrency and
More information