ARM Processor 7개의 Mode
ARM Processor Modes of Operation
Mode |
Description |
CPSR M[4:0] |
User |
User Task나 Application을 수항 할때의 동작모드로 모든 동작모드 중 유일하게 비특권 모드이다. User Mode는 메모리, I/O장치와 같은 시스템 자원을 사용하는데 제한을 두어 사용자의 실수를 방지한다. 다른 모드(SVC)로 이동하기 위한 방법으로는 소프트웨어 인터럽트를 발생시킨다. |
10000b |
FIQ(Fast IRQ) |
2개의 인터럽트 소스 중 아주 빠르게 인터럽트를 처리할 수 있도록 구성된 모드이다. 빠른 처를 위해서 Exception Vector에서도 최하단에 존재하고 별도의 레지스터를 소유한다. |
10001b |
IRQ(Interrupt Request) |
일반적으로 사용되는 인터럽트로 외부 장치에서 요청되는 하드웨어적인 IRQ의 발생에 의해 ARM Core는 IRQ모드로 전환하고 인터럽트를 처리한다. |
10010b |
SVC(Superviser) |
대부분의 시스템 자원을 자유롭게 관리할 수 있는 동작모드로 주로 커널이나 디바이스 드라이버를 처리할 때(System Call) 동작되는 모드이다. Reset 신호 입력 시 및 SWI가 발생하면 SVC Mode로 전환된다. |
10011b |
Abort |
메모리에서 명령을 읽거나 데이터를 읽거나 쓸때 오류가 발생할 때 Abort Mode로 전환하여 오류를 처리한다. 커널등의 패닉시 Abort Mode로 전환되어 스택 내용이 전달됨을 알 수 있다. |
10111b |
Undefined |
명령어를 읽어 실행하고자 하나 읽어온 명령이 디코더에 정의되어 있지 않은 명령인 경우 발생되는 오류를 처리하는 모드이다. |
11011b |
System |
User Mode와 동일한 Register를 사용하고 동일한 용도로 사용된다. |
11111b |
ARM Core의 default Mode는 SVC Mode 입니다. SVC에서 출발하여 boot up시에 ARM Core에 대한 모든 권한을 행사할 수 있어야 하기 때문입니다. U-Boot 등의 부트로더 등의서 ARM Core 부팅 및 리셋 시 SVC 모드로 Start.S 등의 어셈블리어 코드가 실행됨을 알 수 있습니다.
'System Programming > Arm' 카테고리의 다른 글
ARM64(AArch64) Page Table Normal Memory Attribute (0) | 2024.03.31 |
---|---|
라즈베리파이(RPI)4 OpenOCD JTAG 연결 디버깅 방법 (0) | 2023.06.18 |
Rockchip AP 부팅 흐름 정리 (0) | 2020.03.11 |
ARM Processor 개요 (0) | 2016.08.29 |