A look at interrupts What are interrupts and why are they needed in an embedded system? Equally as important – how are these ideas handled on the Blackfin.

Slides:



Advertisements
Similar presentations
Computer Architecture
Advertisements

Chapter 3 Basic Input/Output
Chapter 10 And, Finally.... Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display A Final Collection of ISA-related.
Interrupts Chapter 8 – pp Chapter 10 – pp Appendix A – pp 537 &
1/1/ / faculty of Electrical Engineering eindhoven university of technology Architectures of Digital Information Systems Part 1: Interrupts and DMA dr.ir.
A look at interrupts What are interrupts and why are they needed.
8051 Core Specification.
68HC11 Polling and Interrupts
EET 2261 Unit 9 Interrupts  Read Almy, Chapters 17 – 19.  Homework #9 and Lab #9 due next week.  Quiz next week.
A Play Core Timer Interrupts Acted by the Human Microcontroller Ensemble from ENCM415.
CSC Timers Since this is a microcontroller it mainly finds itself in embedded devices Quite often embedded devices need to synchronize events The.
Interrupts What is an interrupt? What does an interrupt do to the “flow of control” Interrupts used to overlap computation & I/O – Examples would be console.
Communication Lab - Interrupts 1/13 Sequential Programming  Our C++ programs are sequential ( סדרתיים), they start at the first instruction and end at.
A look at interrupts What are interrupts and why are they needed.
Computer System Structures memory memory controller disk controller disk controller printer controller printer controller tape-drive controller tape-drive.
Timers and Interrupts Shivendu Bhushan Summer Camp ‘13.
INTERRUPTS PROGRAMMING
Exception and Interrupt Handling
COMP201 Computer Systems Exceptions and Interrupts.
Input Laboratory: GPIO Pin control needed to have the Blackfin accept your commands Re-uses information from ENEL353 and ENCM369 courses and text books.
Chapter 10 And, Finally... The Stack. Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display Stacks A LIFO.
A Simple Tour of the MSP430. Light LEDs in C LEDs can be connected in two standard ways. Active high circuit, the LED illuminates if the pin is driven.
Chapter 10 The Stack Stack: An Abstract Data Type An important abstraction that you will encounter in many applications. We will describe two uses:
Khaled A. Al-Utaibi  Interrupt-Driven I/O  Hardware Interrupts  Responding to Hardware Interrupts  INTR and NMI  Computing the.
Chapter 8 I/O. Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 8-2 I/O: Connecting to Outside World So far,
1 CS/COE0447 Computer Organization & Assembly Language Chapter 5 part 4 Exceptions.
The Functions of Operating Systems Interrupts. Learning Objectives Explain how interrupts are used to obtain processor time. Explain how processing of.
Tami Meredith, Ph.D. CSCI  Devices need CPU access  E.g., NIC has a full buffer it needs to empty  These device needs are often asynchronous.
Microprocessors 1 MCS-51 Interrupts.
A Play Core Timer Interrupts Acted by the Human Microcontroller Ensemble from ENCM511.
Lecture 14 Today’s topics MARIE Architecture Registers Buses
13-Nov-15 (1) CSC Computer Organization Lecture 7: Input/Output Organization.
1 Interrupts, Resets Today: First Hour: Interrupts –Section 5.2 of Huang’s Textbook –In-class Activity #1 Second Hour: More Interrupts Section 5.2 of Huang’s.
Dec Hex Bin 14 E ORG ; FOURTEEN Interrupts In x86 PC.
Embedded Systems Design 1 Lecture Set 8 MCS-51 Interrupts.
Interrupt driven I/O Computer Organization and Assembly Language: Module 12.
Chapter 3 : Top Level View of Computer Functions Basic CPU function, Interconnection, Instruction Format and Interrupt.
9/20/6Lecture 3 - Instruction Set - Al1 Exception Handling.
A Play Core Timer Interrupts Acted by the Human Microcontroller Ensemble from ENCM415.
“Lab. 5” – Updating Lab. 3 to use DMA Test we understand DMA by using some simple memory to memory DMA Make life more interesting, since hardware is involved,
Interrupts and Exception Handling. Execution We are quite aware of the Fetch, Execute process of the control unit of the CPU –Fetch and instruction as.
Introduction to Exceptions 1 Introduction to Exceptions ARM Advanced RISC Machines.
Architectures of Digital Information Systems Part 1: Interrupts and DMA dr.ir. A.C. Verschueren Eindhoven University of Technology Section of Digital.
Interrupts and exceptions
Chapter 13 The Function of Operating Systems
Interrupts and signals
8085 Interrupts LAKSHMI.B.E..
68HC11 Interrupts & Resets.
Microprocessor Systems Design I
Timer and Interrupts.
Computer Architecture
Interrupts In 8085 and 8086.
BVM Engineering College Electrical Engineering Department : Microprocessor and Microcontroller Interfacing Interrupts of 8051 Prepared by:
Chapter 10 And, Finally... The Stack
Chapter 10 The Stack.
A Play Core Timer Interrupts
Subject Name: Microprocessors Subject Code:10EC46 Department: Electronics and Communication Date: /20/2018.
Computer System Overview
ENCM K Interrupts Theory and Practice
Moving Arrays -- 2 Completion of ideas needed for a general and complete program Final concepts needed for Final DMA.
COMPUTER PERIPHERALS AND INTERFACES
Interrupts.
A Play Lab. 2 Task 8 Core Timer Interrupts
Chapter 10 And, Finally... The Stack
Interrupts 1/18/2019.
Moving Arrays -- 2 Completion of ideas needed for a general and complete program Final concepts needed for Final DMA.
Computer System Overview
Independent timers build into the processor
COMP3221: Microprocessors and Embedded Systems
Presentation transcript:

A look at interrupts What are interrupts and why are they needed in an embedded system? Equally as important – how are these ideas handled on the Blackfin

Dispatch_Tasks ( )

The “standard” instruction cycle of a microprocessor (ENCM369) RESET THE PROCESSOR RESET* INTERRUPT (ACTIVE low) FETCH AN INSTRUCTION FROM PROGRAM MEMORY DECODE THE INSTRUCTION AND FETCH ANY VALUES NEEDED FROM REGISTER OR MEMORY EXECUTE THE INSTRUCTION WRITE BACK THE ANSWER PROCESSOR RESET* +5V RC time constant 200 ms on 68K +5V GROUND

The “standard” instruction cycle RESET THE PROCESSOR RESET* (ACTIVE low) FETCH AN INSTRUCTION FROM PROGRAM MEMORY DECODE THE INSTRUCTION AND FETCH ANY VALUES NEEDED FROM REGISTER OR MEMORY EXECUTE THE INSTRUCTION WRITE BACK THE ANSWER EXECUTING ‘YOUR PROGRAM’ UNTIL POWER IS REMOVED

The “standard” instruction cycle with external device having important data RESET THE PROCESSOR RESET* (ACTIVE low) FETCH AN INSTRUCTION FROM PROGRAM MEMORY DECODE THE INSTRUCTION AND FETCH ANY VALUES NEEDED FROM REGISTER OR MEMORY EXECUTE THE INSTRUCTION WRITE BACK THE ANSWER EXTERNAL HARDWARE Control signal – I have data for you 16-bits This is the data Control signal – Thanks Data received Check if ready

The “wait till ready” approach of reading data from external device In decode phase – read control register value In execute phase – check if 1 -- keep waiting (fetch-decode-execute-writeback instruction cycle) until the control value changes from 0 (device not ready) to 1 (device ready) When 1 – go to a different part of your program code to read the data e.g. call ReadData( ) Then your program must send an acknowledge back to device that the data has been read. e.g. call AcknowledgeReadData( ). The device can then go and get more values for you. PROBLEM: You have no time to do anything else other than wait Not a problem if waiting for this device is the only thing you want to do with the processor

Wait till ready approach Very problematic if many devices RESET THE PROCESSOR RESET* (ACTIVE low) FETCH AN INSTRUCTION FROM PROGRAM MEMORY DECODE THE INSTRUCTION AND FETCH ANY VALUES NEEDED FROM REGISTER OR MEMORY EXECUTE THE INSTRUCTION WRITE BACK THE ANSWER EXTERNAL HARDWARE 16-bits EXTERNAL HARDWARE 16-bits EXTERNAL HARDWARE 16-bits Check if ready WAITS TOO LONG

The “Poll approach” of getting data Not much waiting – but a lot of “doing” read control register value of device 1 -- if 1 go to a different part of the code to “read the data” (ReadData1( ) ) – after reading the data send an acknowledge signal back to device 1 (AcknowledgeReadData1( ) ) -- if 0 go and read the control value of device 2 – don’t worry about device 1 for some time read control register value of device 2 -- if 1 go to a different part of the code to “read the data” (ReadData2() ) – after reading the data send an acknowledge signal back to device 2 (AcknowledgeReadData2( ) ) -- if 0 go and read the control value of device 3 – don’t worry about device 2 and 3 for some time ETC PROBLEM: What happens if, while you are handling device 2, device 1 has “time sensitive information” that will disappear if device 1 is not serviced immediately

Interrupt Approach – basic idea Extra “phase” in instruction cycle RESET THE PROCESSOR RESET* (ACTIVE low) FETCH AN INSTRUCTION FROM “NORMAL” (NOT ISR) PROGRAM MEMORY DECODE THE INSTRUCTION AND FETCH ANY VALUES NEEDED FROM REGISTER OR MEMORY EXECUTE THE INSTRUCTION WRITE BACK THE ANSWER EXTERNAL HARDWARE 16-bits data CHECK IF AN INTERRUPT REQUEST HAS OCCURRED CONTROL SIGNAL DATA READY SIGNAL BECOMES INTERRUPT REQUEST NO yes DO ISR CONTINUE AS BEFORE Acknowledge Request done

Issues that MUST be solved if using interrupts on a real uP 1.What if device hardware can only provide a “quick” I am ready signal? 2.What if more than one hardware device wants to send an interrupt request? 3.What if the programmer wants to “ignore” “low priority” interrupt requests? 4.What if certain interrupt requests are too important to ignore?

What if hardware device can only provide a “quick” I am ready signal? Add interrupt (capture) latch to processor EXTERNAL HARDWARE 16-bits CHECK IF AN INTERRUPT REQUEST HAS OCCURRED CONTROL SIGNAL FAST CHANGING DATA READY SIGNAL Signal send (1) and then becomes 0 yes DO ISR CONTINUE AS BEFORE Acknowledge done Interrupt Buffer Interrupt Latch (Capture Request) Processor clock signal causes load of the latch to capture the transient interrupt

What if the programmer wants to “ignore” a “low priority” interrupt? Add (Ignore) Interrupt Mask EXTERNAL HARDWARE 16-bits CHECK IF AN INTERRUPT REQUEST HAS OCCURRED CONTROL SIGNAL DATA READY SIGNAL BECOMES INTERRUPT REQUEST LINE yes DO ISR CONTINUE AS BEFORE Acknowledge done Interrupt Buffer Interrupt Mask Ignore Processor clock signal causes load of the latch to capture the transient interrupt Interrupt Latch (Capture) e.g. IGNORE INTERRUPT IF FIO_MASK_A BIT is 0

What if certain hardware interrupts are too important to ignore? NMI bypass the IGNORE Interrupt Mask EXTERNAL HARDWARE 16-bits CHECK IF AN INTERRUPT REQUEST HAS OCCURRED CONTROL SIGNAL DATA READY SIGNAL BECOMES INTERRUPT REQUEST LINE yes DO ISR CONTINUE AS BEFORE Acknowledge done Interrupt Buffer Interrupt Mask Ignore Processor clock signal causes load of the latch to capture the transient interrupt Interrupt Latch (Capture)

What if more than one hardware wants to send an interrupt? EXTERNAL HARDWARE 16-bits CHECK IF AN INTERRUPT REQUEST HAS OCCURRED CONTROL SIGNAL DATA READY SIGNAL BECOMES INTERRUPT REQUEST LINE yes DO ISR CONTINUE AS BEFORE Acknowledge done Interrupt Buffer Interrupt Mask Ignore Processor clock signal causes load of the latch to capture the transient interrupt Interrupt Latch (Capture) Pending interrupts (still to be done

Blackfin MASKS and Latches Same hardware in concept

Using “idle” low power mode in Lab. 2

Normal “linear flow” PC increments to next instruction Use program counter PC as an Instruction Pointer register Fetch instruction at memory location PC then increment the PC to point at the next instruction PC = PC+2 PC = PC + 4;

Subroutine call flow PC = PC + 2 CALL INSTRUCTION DOES RETS = PC + 4 (FFA03C78) PC set to 0xFFA01E24 So instruction 0xFFA01E24 done next This instruction is NOT fetched (until end of subroutine) This instruction is now fetched HAVE JUMPED TO SUBROUTINE

Interrupt occurs HERE Must Jump to ISR NOW– but how? Use program counter PC as an Instruction Pointer register Fetch instruction at memory location PC then increment the PC to point at the next instruction PC = PC+2 PC = PC + 4;

Interrupt occurs HERE (green arrow) Must Jump to ISR NOW – but how? First step is obvious PC has 0xFFA01E44 in it – Just about to fetch P0.L = instruction Remember what instruction you were about to execute – so you can do that instruction after finishing the ISR RETI is “register used to remember the instruction “stopped” by interrupt RETI = PC (0xFFA01E44) PC now set to ????? value to make interrupt happen How make this happen?

Interrupt occurs HERE Must Jump to ISR – but how First step is obvious Remember what instruction you were about to execute RETI = PC (0xFFA01E44) PC = ????? Some how – like magic we must set PC = start of Timer ISR 0xFFA01EC0 then processor will start executing TimerISR code

Solution – Blackfin has Lookup table of what value to put into PC for each interrupt than can occur Look-up table for the start of every interrupt routine is stored in EVR table Event vector register table Event (e.g interrupts) Table

Why are all these “event addresses” in the EVR (ISR jump) table the same? This is the address of the “ the processor does not know what to do if there is an interrupt of this sort” EXCEPTION

IDLE This is the assembly code While (wait till some happens) instruction VDSP Emulator puts in a “breakpoint” so for us the program stops. In real life – processor can’t “stop”, just goes into an infinite loop until “watchdog timer” resets the processor The “don’t know what to do” “exception” service routine (ESR)

“Don’t know what to do” Exception This exception hangs the processor –Keeps doing same instruction (doing nothing) which is safer than doing something –The developer should have provided a better ESR if had known what to do Problem solved by using “WATCHDOG TIMER”

Solution – Lookup table of what value to put into PC for each type of interrupt that occurs Question – the start of the ISR is in the event table – How did it get there? Event (e.g interrupts) Table

The start address of the ISR got into the event table HOW? Tell (register) the processor how to handle each interrupt service routine Also we can understand what the raise( ) C++ function does – This is a special C++ instruction to allow us to test ISR

Blackfin MASKS and Latches Raise( ) use “software to put a 1 into the interrupt latch register – making the processor think that a hardware interrupt has happened

Event table information can be found in the Blackfin Hardware Manual

What happens if the device does take away its “I’m ready” signal during an interrupt? EXTERNAL HARDWARE 16-bits CHECK IF AN INTERRUPT REQUEST HAS OCCURRED CONTROL SIGNAL DATA READY SIGNAL yes DO ISR CONTINUE AS BEFORE Acknowledge done Interrupt Buffer Interrupt Latch (Capture) Processor clock signal causes load of the latch to capture the transient interrupt

Tackled today Three ways of handling hardware requests for service Wait till the device signals “ready” then process the data If device 1 ready – process its data Else If device 2 ready – process its data POLL Interrupt – start processing the data from a “specific device NOW!