인터럽트의 개요
■ Interrupt
디바이스가 입력/출력/에러의 상황에 대한 프로세서의 처리를 요구하는 것.
■ IRQ Pin
인터럽트 요구를 위해 디바이스 별로 한 개씩 갖고 있는 하드웨어 신호 핀.
■ Interrupt Number
각 인터럽트 별로 할당된 번호. 한 개의 디바이스가 여러 개의 번호를 소유 할 수 있다.
■ Interrupt Service Routine
각 인터럽트에 대한 서비스 함수
■ Interrupt Vector
인터럽트 번호와 인터럽트 서비스 루틴의 순서쌍
■ Interrupt Vector Table
Interrupt Vector 를 모아 놓은 참조 테이블
■ Interrupt Controller
각 디바이스 별 인터럽트 요구를 일차적으로 처리하여 가장 우선 순위가 높은 인터럽트를 프로세서에게 처리 요구하는 장치
ARM에서 인터럽트가 처리되어지는 과정
1. 디바이스에 의한 인터럽트 요구
2. 인터럽트 컨트롤러에 의한 IRQ 발생
3. IRQ Exception 발생
4. IRQ 모드 변경 및 IRQ Exception Vector 로 분기
5. IRQ Handler 로 분기
6. Prologue ( 레지스터 Set을 저장)
7. Get Interrupt Number
8. Get ISR address ( From Interrupt Vector Table)
9. Call ISR
10. Epilogue ( 저장된 레지스터 Set 을 복구)
11. Return from Exception
Exception Vector Table
예외 |
모드 |
벡터주소 |
리셋 |
SVC |
0x00000000 |
정의되지 않은 명령어 |
UND |
0x00000004 |
Supervisor call |
SVC |
0x00000008 |
프리페치 중단(명령어 페치 메모리 폴트) |
Abort |
0x0000000C |
데이터 중단(데이터 접근 메모리 폴트) |
Abort |
0x00000010 |
IRQ |
IRQ |
0x00000018 |
FIQ |
FIQ |
0x00000010 |
※ 0x00000014 는 비어있다.
※ 0x00000018 은 IRQ Handler 가 된다.
'잡다한 IT > ARM' 카테고리의 다른 글
부트로더 동작 과정 (0) | 2018.08.30 |
---|---|
ARM 레지스터 간단한 설명 (0) | 2018.08.03 |
ARM 아키텍쳐 특징 (0) | 2018.08.03 |
Aligned Access & Unaligned Access (0) | 2018.07.19 |
ARM의 Register (0) | 2018.07.11 |