본문 바로가기
Embedded System/Embedded Recipes

2.3 ARM 동작 Mode

by 리미와감자 2022. 8. 15.

2.3 ARM 동작 Mode

 

  ARM을 다루기 위해서는 ARM의 동작 Mode를 잘 이해해야한다. System Design, Debugging할 때 유용하게 사용할 수 있기 때문에 이번 장은 계속해서 곱씹을 필요가 있다.

 

  • ARM의 7가지 동작 Mode

  크게 User Mode와 Privileged Mode로 나뉜다. User Mode는 말 그대로 표준 사용자 모드이고 Privileged Mode(특권 모드)는 그 외의 나머지 6개 모드를 일컫는다.

 

User : Normal Program execution mode

  User Task나 Application을 수행할 때 사용하는 동작모드로 7개의 동작모드 중 유일하게 비특권 모드이다. User Mode는 메모리, I/O장치와 같은 시스템 자원을 사용하는 데 제한을 두어 사용자의 실수롤 방지하고, 다른 모드(SVC)로 이동하기 위한 방법으로 소프트웨어 인터럽트(SWI)를 발생시킨다.

 

System : Run privileged operating system tasks

  OS를 위한 동작모드로 OS 커널 작업을 실행하며, 시스템 자원에 접근이 가능하다. 예외 발생 없이 진입하며, User Mode와 동일한 레지스터 셋을 사용하는 특권 모드이다.

 

Supervisor : A protected mode for the operating system entered when a SWI instruction is executed

  시스템 자원을 자유롭게 관리하는 동작모드이다. 주로 커널이나 디바이스 드라이버를 처리(System Call)할 때 사용하는 모드이다. Reset 신호나 SWI가 발생하면 SVC모드로 전환된다. 시스템에 전원이 공급되면 가장 먼저 진입하는 모드로, SWI를 사용해 진입이 가능하다.

 

FIQ : When a high priority (fast) interrupt is raised

  아주 빠르게 인터럽트를 처리하는 모드, 빠른 처리를 위해 Exception Vector에서 최하단에 존재하고 별도의 레지스터를 소유한다. 일부 운영체제에서는 FIQ를 디버깅 용도로 사용한다. 

 

IRQ : When a low priority (normal) interrupt is raised

  일반적으로 사용되는 인트럽트 모드이다. 외부 장치에서 요청된 하드웨어적인 IRQ를 인터럽트로 처리한다. IRQ 모드에서는 IRQ가 발생하기 직전의 ARM 모드를 저장한 후 인터럽트 처리를 한다. 대부분 운영체제에서는 IRQ 모드로 진입하면 인터럽트에 대한 후속 처리를 수행하며 이를 ISR(Interrupt Service Routine)이라고 부른다.

 

Abort : Used to handle memory access violations

  메모리에서 명령을 읽거나 데이터를 읽고 쓰는 도중에 오류가 발생할 때 사용하는 모드이다. OS에서 Abort 모드에 진입하면 Abort가 발생할 때의 정보를 로그로 출력하면서 시스템이 리셋된다.

 

Undef : Used to handle undefined instructions

  읽어온 명령이 디코더에 정의되지 않는 명령일 때 발생하는 오류를 처리하는 모드이다. 디버깅 작업/명령어 셋 확장에 사용할 수 있다. OS에서는 Undef 모드에 진입하면 시스템이 리셋된다. 메모리나 하드웨어 부품에 문제가 생겼을 경우Undefined 모드로 진입한다. 일부러 유효하지 않는 명령어를 실행해 Undefined 모드의 Exception Vector를 실행시켜 디버깅 목적으로 사용할 수 있다.

 

  • ARM 동작 변경

  Priviledged Mode는 서로 Mode 변경이 자유자재로 가능하지만, Normal Mode는 자기 스스로 Privileged Mode로 Mode의 변경이 불가능하다. 예를 들어, SYS ↔ FIQ, IRQ ↔ SVC, Privileged Mode → Normal Mode (USR)은 가능하지만, USR → Privileged Mode로의 변경은 불가능하다.

 

※ ARM의 default 모드는 SVC이다. 전원을 키고 boot up시 ARM에 관한 모든 권한을 행사할 수 있게된다.

 

User와 SVC는 같은 Stack을 사용한다. 

User Mode는 OS에 올라가는 Application 실행할 때, System Mode는 OS Level의 Task를 실행할 때, SVC Mode는 Application이 I/O같은 시스템자원이 필요할 때 사용한다.


  글로만 봐서는 크게 와닿지 않는다. 나중에도 계속해서 곱씹어볼 필요가 있는 내용들이다.

 

참고

http://recipes.egloos.com/4985227

 

ARM 동작 Modes - 나는 어느 mode를 써야 하나

 

recipes.egloos.com

https://shinluckyarchive.tistory.com/270

 

ARM Processor의 7개 동작 Mode

ARM 프로세서에는 특이하게 7개의 모드가 존재한다. 동작모드는 프로세서가 어떤 권한을 가지고 무슨 일을 처리하는지 나타내는 프로세서의 동작상태를 일컷는다. 이 7개의 Mode서, 각 모드가 따

shinluckyarchive.tistory.com

https://twinparadox.tistory.com/281

 

ARM 프로세서 동작모드

프로세서가 프로그램 실행할 때 권한을 설정하며 6개의 특권 모드(Privileged Mode)와 1개의 사용자 모드(User Mode)로 총 7개의 동작모드가 존재함. Privileged Mode 예외 처리, 시스템 자원에 접근하며, 아

twinparadox.tistory.com

http://egloos.zum.com/rousalome/v/10019366

 

[ARM프로세서] ARMv7: ARM 동작 모드란

ARM 아키텍처 문서를 보면 가장 먼저 보이는 용어가 ARM 동작 모드입니다. ARM 아키텍처를 이해하기 위해 꼭 알아야 하는 개념이니 자주 보면서 익혔으면 합니다. ARM 동작 모드를 잘 배워야 시스템

egloos.zum.com

 

'Embedded System > Embedded Recipes' 카테고리의 다른 글

2.3 ARM mode와 Thumb mode  (1) 2022.08.15
2.2 ARM Inside  (1) 2022.08.15
2.1 Microprocessor  (1) 2022.08.15
1.18 일반적인 CPU의 동작 예(Core)와 Pipe Line  (1) 2022.08.15
1.17 확장 to the CPU - How CPU works  (2) 2022.08.12

댓글