블로그 이미지
JoyfulLife

공지사항

최근에 받은 트랙백

글 보관함

calendar

          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

4장 Exception verctor table 구성하기

2010.08.11 21:17 | Posted by JoyfulLife
 Arm에서는 인터럽트와 예외를 처리하기 위해 exception vector table 을 둔다.
모두 7가지로 구분한다.

4.1 Arm의 exception 과 프로세서 동작 모드
Data abort, FIQ, IRQ, Prefetch Abort , SWI, Reset, Undeined Instruction

1.Data abort=segmentation fault(메모리 접근 오류)
2.FIQ, IRQ, 외부 인터럽트
3.Prefetch Abort 명령어 해석 실패, 명령어 읽다가 오류 발생
4.SWI Software Interrupt 의 약자,  시스템 콜
5.Reset 리셋
6.Undefined Instruction 명령어가 존재 하지 않음

7가지 동작모드
Abort, FIQ, IRQ, SVC(Supervisor), System(SYS), Undefined(UND), USER(USR)

ABT, FIQ, IRQ, SVC, UND 모드는 ARM에서 자동으로 변경되는 모드
SYS와 USR 는 개발자가 소스코드에서 변경시켜 줌

동작모드로 진행하는 방법은 cpsr 의 동작모드 필드의 값을 ARM코어나 개발자가 수정함으로써 이루어짐
cpsr의 0-4번비트까지ㅡ이 값은 현재 프로세서의 동작 모드를 나타낸다.

USER->시스템콜->SWI->SVC->USER

키보드 입력은 IRQ로 처리


4.2 ARM의 exception vector table
 ARM코어가 실행을 분기할 주소를 모아놓은 테이블

작업 처리 순서
exception 발생 -> exception 모드의 spsr에 cpsr을 저장함 -> exception모드의 lr에 pc값을 저장함 -> cpsr의 모든 비트를 변경하여, 해당 exception에 대응하는 프로세서 동작 모드로 진입함 -> pc에 exception 핸들러의 주소를 저장하여 해당 exception 에서 해야 할 일을 처리함

 마지막 핸드러의 주소를 pc에 옮길 때 우리는 핸들러의 주소를 모아 놓은 벡터 테이블을 사용할 것이다.


나빌룩스는 부트로더를 수정해서 Software Interrupt 와 IRQ exception 만 처리
Software Interrupt 시스템 콜을 구현하는데 필요함
IRQ exception 외부입력 과 OS타이머를 작동하기 위해서 꼭 사용해야 하는 exception



신고

'운영체제' 카테고리의 다른 글

4장 Exception verctor table 구성하기  (0) 2010.08.11

티스토리 툴바