ARM 프로세서 익셉션과 모드
- ARM은 user모드와 system모드를 제외한 모드를 익셉션에 의해 변경 할 수 있다.
익셉션 모드를 변경 시킬때 코어는 자동으로 다음 4단계의 과정을 거친다.
1) 익셉션 모드의 spsr에 현재의 cpsr을 저장
2) lr에 현재의 pc를 저장
3) cpsr update
4) pc에 익셉션 핸들러 주소를 저장
=> IRQ가 발생하게 되면 아래에서 보이는 벡터 테이블의 '0x18'로 자동으로 분기 해준다.
(코어가 자동으로 해준다!!)
- 익셉션의 종류
FIQ: 고속 인터럽트 처리
IRQ: 일반 인터럽트 처리
SVC: 운영체제를 위한 보호 모드
abort: 가상 메모리와 메모리 보호 처리
undefined: 하드웨어 코프로세서의 소프트웨어 에뮬레이션
- 벡터 테이블
익셉션이 발생 했을 때, ARM 코어가 분기하게 되는 주소 테이블
익셉션 |
모드 |
벡터 테이블 오프셋 |
Reset |
SVC |
+0x00 |
Undefined Instruction |
UND |
+0x04 |
Software Interrupt(SWI) |
SVC |
+0x08 |
Prefetch Abort |
ABT |
+0x0c |
Data Abort |
ABT |
+0x10 |
Not assigned |
- |
+0x14 |
IRQ |
IRQ |
+0x18 |
FIQ |
FIQ |
+0x1c |