Interrupts (Exceptions) Gary J. Minden September 11, 2014

Similar documents
Interrupts (Exceptions) (From LM3S1968) Gary J. Minden August 29, 2016

Design and Implementation Interrupt Mechanism

Embedded Systems. October 2, 2017

Lab 4 Interrupt-driven operations

introduction to interrupts

Programming Embedded Systems

ARM Cortex core microcontrollers

Interrupts and Low Power Features

Exceptions and Interrupts ARM Cortex M3

Viewing the tm4c123gh6pm_startup_ccs.c file, the first piece of code we see after the comments is shown in Figure 1.

ECE251: Thursday September 27

ELC4438: Embedded System Design ARM Cortex-M Architecture II

COEN-4720 Embedded Systems Design Lecture 4 Interrupts (Part 1) Cristinel Ababei Dept. of Electrical and Computer Engineering Marquette University

Cortex-M3 Reference Manual

CMSC 313 COMPUTER ORGANIZATION & ASSEMBLY LANGUAGE PROGRAMMING LECTURE 09, SPRING 2013

Interrupts. Why Interrupts

Interrupt/Timer/DMA 1

EE458 - Embedded Systems Exceptions and Interrupts

Multitasking on Cortex-M(0) class MCU A deepdive into the Chromium-EC scheduler

The ARM Cortex-M0 Processor Architecture Part-1

ARM architecture road map. NuMicro Overview of Cortex M. Cortex M Processor Family (2/3) All binary upwards compatible

ARM Cortex-M and RTOSs Are Meant for Each Other

EEL 4744C: Microprocessor Applications. Lecture 7. Part 1. Interrupt. Dr. Tao Li 1

Reading Assignment. Interrupt. Interrupt. Interrupt. EEL 4744C: Microprocessor Applications. Lecture 7. Part 1

Grundlagen Microcontroller Interrupts. Günther Gridling Bettina Weiss

ARM Architecture (1A) Young Won Lim 3/20/18

Embedded System Design

Hercules ARM Cortex -R4 System Architecture. Processor Overview

Introduction. ! Exception*are*events*! They*occur*during*the*execution*of*the*program! Type*of*ARM*exceptions*! Exceptions*that*result*by*a*command

32-Bit RISC Microcontroller. TMPM3H Group(2) Reference Manual Exception (EXCEPT-M3H(2)) Revision

Lecture 10 Exceptions and Interrupts. How are exceptions generated?

Systems Programming and Computer Architecture ( ) Timothy Roscoe

GLOSSARY. VisualDSP++ Kernel (VDK) User s Guide B-1

STM32 MICROCONTROLLER

Operating System: Chap13 I/O Systems. National Tsing-Hua University 2016, Fall Semester

Input/Output Programming

ARM Interrupts. EE383: Introduction to Embedded Systems University of Kentucky. James E. Lumpp

Interrupts in Zynq Systems

Last 2 Classes: Introduction to Operating Systems & C++ tutorial. Today: OS and Computer Architecture

18-349: Introduction to Embedded Real-Time Systems

Input / Output. School of Computer Science G51CSA

Reset, Interrupts, Exceptions, and Break ECE 3534

Interrupt-Driven Input/Output

real-time kernel documentation

CPS104 Computer Organization and Programming Lecture 17: Interrupts and Exceptions. Interrupts Exceptions and Traps. Visualizing an Interrupt

CSE 153 Design of Operating Systems

Design document: Handling exceptions and interrupts

An Operating System in Action

The Definitive Guide to the ARM Cortex-M3

Application Note. Analyzing HardFaults on Cortex-M CPU

An Interrupt is either a Hardware generated CALL (externally derived from a hardware signal)

Operating Systems CMPSCI 377 Spring Mark Corner University of Massachusetts Amherst

SECTION 8 EXCEPTION PROCESSING

Troubleshooting Guide

ECE 485/585 Microprocessor System Design

AN316 Determining the stack usage of applications

Last Time. Think carefully about whether you use a heap Look carefully for stack overflow Especially when you have multiple threads

Process Scheduling Queues

TI ARM Lab 4 Digilent Orbit Board

AN209 Using Cortex-M3/M4/M7 Fault Exceptions

Fault Handling and Detection

Fault Handling and Detection

CS 550 Operating Systems Spring Interrupt

ECE254 Lab3 Tutorial. Introduction to MCB1700 Hardware Programming. Irene Huang

ECE 372 Microcontroller Design Parallel IO Ports - Interrupts. ECE 372 Microcontroller Design Parallel IO Ports - Interrupts

Measuring Interrupt Latency

Computer Architecture 5.1. Computer Architecture. 5.2 Vector Address: Interrupt sources (IS) such as I/O, Timer 5.3. Computer Architecture

ECE 598 Advanced Operating Systems Lecture 8

8086 Interrupts and Interrupt Responses:

IoT and Security: ARM v8-m Architecture. Robert Boys Product Marketing DSG, ARM. Spring 2017: V 3.1

Module Introduction. PURPOSE: The intent of this module is to explain MCU processing of reset and interrupt exception events.

Microprocessors & Interfacing

PC Interrupt Structure and 8259 DMA Controllers

Interrupts (I) Lecturer: Sri Notes by Annie Guo. Week8 1

Mobile Operating Systems Lesson 01 Operating System

OUTLINE. STM32F0 Architecture Overview STM32F0 Core Motivation for RISC and Pipelining Cortex-M0 Programming Model Toolchain and Project Structure

Lecture notes Lectures 1 through 5 (up through lecture 5 slide 63) Book Chapters 1-4

EECS 373 Design of Microprocessor-Based Systems

Kinetis Software Optimization

ARM PROGRAMMING. When use assembly

Computer System Overview OPERATING SYSTEM TOP-LEVEL COMPONENTS. Simplified view: Operating Systems. Slide 1. Slide /S2. Slide 2.

Computer System Overview

An Interrupt is either a Hardware generated CALL (externally derived from a hardware signal)

These three counters can be programmed for either binary or BCD count.

CISC RISC. Compiler. Compiler. Processor. Processor

Cortex-M Software Development

Digital Control of Electric Drives

Modes and Levels. Registers. Registers. Cortex-M3 programming

12. Interrupts and Programmable Multilevel Interrupt Controller

EE4144: ARM Cortex-M Processor

The control of I/O devices is a major concern for OS designers

SISTEMI EMBEDDED. (Software) Exceptions and (Hardware) Interrupts. Federico Baronti Last version:

CSE 153 Design of Operating Systems Fall 18

Computer System Overview. Chapter 1

CODE TIME TECHNOLOGIES. Abassi RTOS. Porting Document. ARM Cortex-M3 CCS

2.5 Address Space. The IBM 6x86 CPU can directly address 64 KBytes of I/O space and 4 GBytes of physical memory (Figure 2-24).

CPUs. Input and output. Supervisor mode, exceptions, traps. Co-processors. Computers as Components 4e 2016 Marilyn Wolf

W4118: interrupt and system call. Junfeng Yang

Cortex-A9 MPCore Software Development

by I.-C. Lin, Dept. CS, NCTU. Textbook: Operating System Concepts 8ed CHAPTER 13: I/O SYSTEMS

Transcription:

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 task model is called polling Each task asks the question, Is it time to execute? Excessive computation Most of the time the answer is NO! Not scalable to a large number of tasks Not responsive Task i cannot check for execution until all the other tasks check Replication of common code The time-check if statement and set Task_NextExecute Low priority tasks can block high priority tasks 3

Mechanism Peripheral is enabled and configured Interrupts are enabled on peripheral and CPU Enable interrupts for peripheral, e.g. Timer0 Enable interrupts for part of a peripheral, e.g. Timer0_CounterA Event happens, e.g. Timer0_CounterA reaches 0 Peripheral generates an interrupt flag CPU detects interrupt flag Saves current CPU state (Registers) on Stack Saves PC in LR Loads PC from Interrupt Vector Table based on Peripheral ID Interrupt Service Routine (ISR) is executed Return via saved PC 4

Software Setup -- Mainline Write ISR as a C subroutine void SysTickIntHandler(void) { // // Increment the tick count. // g_ultickcount++; } 5

Software Setup -- Interrupt Vector Table Edit Interrupt Vector Table in startup_ccs.c extern void SysTickIntHandler(void); void (* const g_pfnvectors[])(void) = { (void (*)(void))((unsigned long)& STACK_TOP), // The initial stack pointer ResetISR, // The reset handler NmiSR, // The NMI handler FaultISR, // The hard fault handler IntDefaultHandler, // The MPU fault handler IntDefaultHandler, // The bus fault handler IntDefaultHandler, // The usage fault handler 0, // Reserved 0, // Reserved 0, // Reserved 0, // Reserved IntDefaultHandler, // SVCall handler IntDefaultHandler, // Debug monitor handler 0, // Reserved IntDefaultHandler, // The PendSV handler SysTickIntHandler, // The SysTick handler IntDefaultHandler, // GPIO Port A 6

Review Timer Code 7

ARM Nested Vector Interrupt Controller 8

Exception States Inactive -- The exception is not active and not pending. Pending -- The exception is waiting to be serviced by the processor. An interrupt request from a peripheral or from software can change the state of the corresponding interrupt to pending. Active -- An exception that is being serviced by the processor but has not completed. Note: An exception handler can interrupt the execution of another exception handler. In this case, both exceptions are in the active state. Active and Pending -- The exception is being serviced by the processor, and there is a pending exception from the same source. 9

Exception Types Reset. Reset is invoked on power up or a warm reset. The exception model treats reset as a special form of exception. When reset is asserted, the operation of the processor stops, potentially at any point in an instruction. When reset is deasserted, execution restarts from the address provided by the reset entry in the vector table. Execution restarts as privileged execution in Thread mode. NMI. A non-maskable Interrupt (NMI) can be signaled using the NMI signal or triggered by software using the Interrupt Control and State (INTCTRL) register. This exception has the highest priority other than reset. NMI is permanently enabled and has a fixed priority of -2. NMIs cannot be masked or prevented from activation by any other exception or preempted by any exception other than reset. 10

Exception Types Hard Fault. A hard fault is an exception that occurs because of an error during exception processing, or because an exception cannot be managed by any other exception mechanism. Hard faults have a fixed priority of -1, meaning they have higher priority than any exception with configurable priority. Memory Management Fault. A memory management fault is an exception that occurs because of a memory protection related fault, including access violation and no match. The MPU or the fixed memory protection constraints determine this fault, for both instruction and data memory transactions. This fault is used to abort instruction accesses to Execute Never (XN) memory regions, even if the MPU is disabled. 11

Exception Types Bus Fault. A bus fault is an exception that occurs because of a memory-related fault for an instruction or data memory transaction such as a prefetch fault or a memory access fault. This fault can be enabled or disabled. Usage Fault. A usage fault is an exception that occurs because of a fault related to instruction execution, such as: An undefined instruction An illegal unaligned access Invalid state on instruction execution An error on exception return An unaligned address on a word or halfword memory access or division by zero can cause a usage fault when the core is properly configured. 12

Exception Types SVCall. A supervisor call (SVC) is an exception that is triggered by the SVC instruction. In an OS environment, applications can use SVC instructions to access OS kernel functions and device drivers. Debug Monitor. This exception is caused by the debug monitor (when not halting). This exception is only active when enabled. This exception does not activate if it is a lower priority than the current activation. PendSV. PendSV is a pendable, interrupt-driven request for systemlevel service. In an OS environment, use PendSV for context switching when no other exception is active. PendSV is triggered using the Interrupt Control and State (INTCTRL) register. 13

Exception Types SysTick. A SysTick exception is an exception that the system timer generates when it reaches zero when it is enabled to generate an interrupt. Software can also generate a SysTick exception using the Interrupt Control and State (INTCTRL) register. In an OS environment, the processor can use this exception as system tick. Interrupt (IRQ). An interrupt, or IRQ, is an exception signaled by a peripheral or generated by a software request and fed through the NVIC (prioritized). All interrupts are asynchronous to instruction execution. In the system, peripherals use interrupts to communicate with the processor. 14

Peripheral Interrupts (IRQ) 15

Peripheral Interrupts (IRQ) 16

Interrupt Vector Table 17

Exception Priorities All Exceptions have a priority Most Exceptions have a programmable priority Smaller numbers have higher priority Reset has priority -3 NMI (Non-Maskable Interrupt) has priority -2 Hard Fault has priority -1 IRQs have priority between 0 and 7 If multiple pending exceptions have the same priority, the pending exception with the lowest exception number takes precedence. For example, if both IRQ[0] and IRQ[1] are pending and have the same priority, then IRQ[0] is processed before IRQ[1]. When the processor is executing an exception handler, the exception handler is preempted if a higher priority exception occurs. If an exception occurs with the same priority as the exception being handled, the handler is not preempted, irrespective of the exception number. However, the status of the new interrupt changes to pending. 18

Exception Handlers Interrupt Service Routines (ISRs). Interrupts (IRQx) are the exceptions handled by ISRs. Fault Handlers. Hard fault, memory management fault, usage fault, and bus fault are fault exceptions handled by the fault handlers. System Handlers. NMI, PendSV, SVCall, SysTick, and the fault exceptions are all system exceptions that are handled by system handlers. 19

Exception Entry and Return Preemption. When the processor is executing an exception handler, a new exception can preempt the current exception handler if its priority is higher than the priority of the exception being handled. Return. Return occurs when the exception handler is completed, and there is no pending exception with sufficient priority to be serviced and the completed exception handler was not handling a late-arriving exception. The processor pops the stack and restores the processor state to the state it had before the interrupt occurred. 20

Exception Entry and Return Tail-Chaining. This mechanism speeds up exception servicing. On completion of an exception handler, if there is a pending exception that meets the requirements for exception entry, the stack pop is skipped and control transfers to the new exception handler. Late-Arriving. This mechanism speeds up preemption. If a higher priority exception occurs during state saving for a previous exception, the processor switches to handle the higher priority exception and initiates the vector fetch for that exception. State saving is not affected by late arrival because the state saved is the same for both exceptions. Therefore, the state saving continues uninterrupted. The processor can accept a late arriving exception until the first instruction of the exception handler of the original exception enters the execute stage of the processor. On return from the exception handler of the late-arriving exception, the normal tailchaining rules apply. 21

Exception Stack Frame 22

Faults A bus error on an instruction fetch or vector table load or a data access. An internally detected error such as an undefined instruction or an attempt to change state with a BX instruction. Attempting to execute an instruction from a memory region marked as Non-Executable (XN). An MPU fault because of a privilege violation or an attempt to access an unmanaged region. 23

Fault Types 24

Lockup The processor enters a lockup state if a hard fault occurs when executing the NMI or hard fault handlers. When the processor is in the lockup state, it does not execute any instructions. The processor remains in lockup state until it is reset, an NMI occurs, or it is halted by a debugger. If the lockup state occurs from the NMI handler, a subsequent NMI does not cause the processor to leave the lockup state. 25

Interrupt API 26

But the Navy last fall learned a difficult lesson about automation: The very information technology on which the ships depend also makes them vulnerable. The Yorktown last September suffered a systems failure when bad data was fed into its computers during maneuvers off the coast of Cape Charles, Va. The ship had to be towed into the Naval base at Norfolk, Va., because a database overflow caused its propulsion system to fail, according to Anthony DiGiorgio, a civilian engineer with the Atlantic Fleet Technical Support Center in Norfolk. 27

The Yorktown lost control of its propulsion system because its computers were unable to divide by the number zero, the memo said. The Yorktown s Standard Monitoring Control System administrator entered zero into the data field for the Remote Data Base Manager program. That caused the database to overflow and crash all LAN consoles and miniature remote terminal units, the memo said. 28