ARM Interrupts

advertisement
Interrupts, Timer, and Interrupt Controller
Prof. Taeweon Suh
Computer Science Education
Korea University
Interrupt
• Interrupt is an asynchronous signal from hardware indicating the
need for attention or a synchronous event in software indicating the
need for a change in execution.
 Hardware interrupt causes the processor (CPU) to save its state of
execution via a context switch, and begin execution of an interrupt handler.
 Software interrupt is usually implemented as an instruction in the instruction
set, which cause a context switch to an interrupt handler similar to a
hardware interrupt.
• Interrupt is a commonly used technique in computer system for
communication between CPU and peripheral devices
• Operating systems also extensively use interrupt (timer interrupt)
for task (process, thread) scheduling
2
Korea Univ
Software Interrupt in ARM
•
There is an software interrupt instruction in ARM

•
SWI instruction
Software interrupt is commonly used by OS for system calls

Example: open(), close().. etc
3
Korea Univ
Hardware Interrupt in ARM
• IRQ (Normal interrupt request)
 Informed to CPU by asserting IRQ pin
 Program jumps to 0x0000_0018
• FIQ (Fast interrupt request)
 Informed to CPU by asserting FIQ pin
 Has a higher priority than IRQ
 Program jumps to 0x0000_001C
IRQ
FIQ
4
Korea Univ
Exception Vectors in ARM
RAZ: Read As Zero
5
Korea Univ
Exception Priority in ARM
6
Korea Univ
S3C2440A Block Diagram
7
Korea Univ
Simplified Hardware System
Interrupt
Controller
Interrupt
ARM920T
Address Bus
R15
….
EAX
R1
(PWM)
Timer
ALU
R0
32-bit
32-bit
0x00000FFF
4KB SRAM
(Steppingstone)
0x00000000
UART
GPIO
32MB SDRAM
Memory
Controller
Data Bus
0x30000000
AMBA
8
Korea Univ
INTC in S3C2440A
INTMOD (0x4A00_0004)
(Interrupt Mode Register)
SRCPND (0X4A00_0000)
(Source Pending Register)
32-bit
UART_IRQ
TIMER_IRQ
Bit14
Interrupt Controller
…
Only 1-bit with the
highest priority is set
…
nIRQ
0
1
nFIQ
…
Bit14
32-bit
…
INTMSK (0x4A00_0008)
(Interrupt Mask Register)
INTPND (0x4A00_0010)
(Interrupt Pending Register)
9
Korea Univ
INTMOD (0x4A00_0004)
(Interrupt Mode Register)
Example
0
SRCPND (0X4A00_0000)
(Source Pending Register)
UART_IRQ
TIMER_IRQ
0
32-bit
0
Interrupt Controller
0
0 Bit14
1
0
…
0
0
…
Only 1-bit with the
highest priority is set
0
0
0
0
0
0
0
1
0
0
0
0
1
nIRQ
nFIQ
…
0
0
0
0
0 Bit14
32-bit
0
…
0
0
0
INTMSK (0x4A00_0008)
(Interrupt Mask Register)
0
INTPND (0x4A00_0010)
(Interrupt Pending Register)
Note that the corresponding bit in both SRCPND and
INTPND should be cleared via SW after servicing an
interrupt.
10
Korea Univ
Timers
http://a-towntales.blogspot.kr/2011/09/dreaded-alarm-clock.html
http://www.ikea.com/us/en/catalog/products/50187566/
11
Korea Univ
Timer in S3C2440A
• 5 Timers
 Timer 0, 1, 2, 3 have
PWM (Pulse Width
Modulation) function
 Timer 4 has no output
 16-bit counters
12
Korea Univ
Timer 4 in S3C2440A
• Timer 4 has no output
Interrupt generated
Read TCNTO4 to get the current counter value
TCNT4
TCNTB4
xx
5
5
4
3
2
TCNTB4 write to “5”
5
4
3
2
1
0
5
Manual_update=1
Start=1
0
1
Auto_reload=1
Manual_update=0
Program this register
13
Korea Univ
Timer 4 Registers
14
Korea Univ
Timer 4 Registers
15
Korea Univ
UART
• Universal Asynchronous Receiver
and Transmitter
 Used for serial communication
 Simply called serial port (or RS-232)
 Has a long history (~1970)
 Still widely used in embedded systems
design for debugging purpose
 Detected as a COM port in Windows
• Its original shaped port has almost been
disappeared in computers. Instead, the
serial-to-USB is used whenever necessary
http://sd.hancock.k12.mo.us/files/2010/11/Computer-Back-marked-in-red.jpg
http://linuxologist.com/01general/back-to-basics-identify-your-computer-ports/
http://www.passmark.com/products/loopback.htm
16
Korea Univ
UART
http://pcsbyjohn.wordpress.com/
17
http://tutorial.cytron.com.my/2012/02/16/uart-universal-asynchronous-receiver-and-transmitter/
Korea Univ
UART in S3C2440A
•
3 Channels (UART0, UART1,
and UART3)
•
We use UART0 for debugging



Transmission only to PC
Non-FIFO mode
No interrupt
18
Korea Univ
UART Registers
19
Korea Univ
UART Registers (Cont.)
20
Korea Univ
UART Registers (Cont.)
21
Korea Univ
Memory Map of Our System
0xFFFF_FFFF
Memory Space
Address Bus
ARM CPU
0x5600_0000
R15
….
EAX
R1
R0
ALU
GPIO
0x5100_0000
Timer
0x5000_0000
UART
0x4A00_1000
INTC
32-bit
32-bit
SDRAM
0x3000_0000
Data Bus
0x0000_0FFF
0x0
22
SRAM
4KB
Korea Univ
Linker Script
• Check out the linker script in Makefile
 Figure out what the linker script says where the code and data in the
program should be located in memory
test.lds
test.s
MEMORY
{
RAM (rwx) : ORIGIN = 0x0, LENGTH = 4K
}
.text
b
b
b
b
b
b
b
b
REGION_ALIAS("REGION_TEXT", RAM);
REGION_ALIAS("REGION_RODATA", RAM);
REGION_ALIAS("REGION_DATA", RAM);
REGION_ALIAS("REGION_BSS", RAM);
ResetHandler
.
.
.
.
.
.
.
SECTIONS
{
.text :
{
*(.text)
. = ALIGN(4);
} > REGION_TEXT
.rodata :
{
__RO_BASE__ = .;
*(.rodata)
*(.rodata.*)
ResetHandler:
mov r0, #16
ldr r2, =LED_BASE
. = ALIGN(4);
__RO_LIMIT__ = .;
} > REGION_RODATA
23
Korea Univ
Backup Slides
24
Korea Univ
AMBA
• Advanced Microcontroller Bus Architecture
 On-chip bus protocol from ARM
• On-chip interconnect specification for the connection and
management of functional blocks including processor and
peripheral devices
 Introduced in 1996
 AMBA is a registered trademark of ARM Limited.
 AMBA is an open standard
Wikipedia
25
Korea Univ
AMBA History
• AMBA
• AMBA 3 (2003)
 AXI3 (or AXI v1.0)
 ASB
 APB
• widely used on ARM Cortex-A
processors including Cortex-A9
 AHB-Lite v1.0
 APB3 v1.0
 ATB v1.0
• AMBA 2 (1999)
 AHB
• widely used on ARM7, ARM9 and
ARM Cortex-M based designs
 ASB
 APB2 (or APB)
• AMBA 4 (2010)
 ACE
• widely used on the latest ARM CortexA processors including Cortex-A7 and
Cortex-A15
 ACE: AXI Coherency Extensions
 AXI: Advanced eXtensible Interface
 AHB: Advanced High-performance Bus
 ASB: Advanced System Bus
 APB: Advanced Peripheral Bus
 ATB: Advanced Trace Bus
Wikipedia






26
ACE-Lite
AXI4
AXI4-Lite
AXI-Stream v1.0
ATB v1.1
APB4 v2.0
Korea Univ
ASB
AMBA Specification V2.0
27
Korea Univ
ASB
Hardware
Device 0
Hardware
Device 1
Hardware
Device 2
Hardware
Device 4
Hardware
Device 5
ASB
Hardware
Device 3
28
Korea Univ
AHB
AMBA Specification V2.0
29
Korea Univ
AHB with 3 Masters and 4 Slaves
 “H” indicates AHB signals
AMBA Specification V2.0
30
Korea Univ
AHB Basic Transfer Example with Wait
Write data
Read data
HREADY Source: Slave
AMBA Specification V2.0
31
Korea Univ
AHB Burst Transfer Example
HREADY Source: Slave
AMBA Specification V2.0
32
Korea Univ
AHB Split Transaction
• If slave decides that it
may take a number of
cycles to obtain and
provide data, it gives a
SPLIT transfer response
• Arbiter grants use of the
bus to other masters
HRESP: Transfer response fro slave (OKAY, ERROR, RETRY, and SPLIT)
AMBA Specification V2.0
33
Korea Univ
APB Write/Read
AMBA Specification V2.0
34
Korea Univ
AXI v1.0
• AMBA AXI protocol is targeted at high-performance,
high-frequency system designs
• AXI key features
 Separate address/control and data phases
 Support for unaligned data transfers using byte strobes
 Separate read and write data channels to enable low-cost
Direct Memory Access (DMA)
 Ability to issue multiple outstanding addresses
 Out-of-order transaction completion
 Easy addition of register stages to provide timing closure
AMBA AXI Specification V1.0
35
Korea Univ
5 Independent Channels
• Read address channel and Write address channel
 Variable length burst: 1 ~ 16 data transfers
 Burst with a transfer size of 8 ~ 1024 bits (1B ~ 256B)
• Read data channel
 Convey data and any read response info.
 Data bus can be 8, 16, 32, 64, 128, 256, 512, or 1024 bits
• Write data channel
 Data bus can be 8, 16, 32, 64, 128, 256, 512, or 1024 bits
• Write response channel
 Write response info.
36
Korea Univ
AXI Read Operation
Read
Address
Channel
Read
Response
Channel
RREADY: From master, indicate that master can accept the read data and response info.
AMBA AXI Specification V1.0
37
Korea Univ
AXI Write Operation
Write
Address
Channel
Write
Data
Channel
Write
Response
Channel
 WVALID Source: Master
 WREADY Source: Slave
AMBA AXI Specification V1.0
 BVALID Source: Slave
 BREADY Source: Master
38
Korea Univ
Out-of-order Completion
• AXI gives an ID tag to every transaction
 Transactions with the same ID are completed in order
 Transactions with different IDs can be completed out of order
AMBA AXI Specification V1.0
39
Korea Univ
ID Signals
Write
Data
Channel
Write
Address
Channel
Write
Response
Channel
Read
Address
Channel
Read
Response
Channel
AMBA AXI Specification V1.0
40
Korea Univ
Out-of-order Completion
• Out-of-order transactions can improve system performance in
2 ways
 Fast-responding slaves respond in advance of earlier transactions
with slower slaves
 Complex slaves can return data out of order
• A data item for a later access might be available before the data for an
earlier access is available
• If a master requires that transactions are completed in the
same order that they are issued, they must all have the same
ID tag
• It is not a required feature
 Simple masters and slaves can process one transaction at a time in
the order they are issued
AMBA AXI Specification V1.0
41
Korea Univ
Addition of Register Slices
• AXI enables the insertion of a register slice in any
channel at the cost of an additional cycle latency
 Trade-off between latency and maximum frequency
• It can be advantageous to use
 Direct and fast connection between a processor and highperformance memory
 Simple register slices to isolate a longer path to less
performance-critical peripherals
AMBA AXI Specification V1.0
42
Korea Univ
Download