본문 바로가기
dev, tech/embedded

<img src="http://blogimgs.naver.com/nblog/ico_scrap01.gif" class="i_scrap" width="50" height="15" alt="본문스크랩" /> Exception Vector Table

by 구띵 2006. 7. 13.

Exception Vector Table

 -  임베디드 프로그램이 메모리에 바이너리로 로딩될 때 가장 앞번지에 위치하고 있는 테이블

        (가끔씩 젤 마지막에 위치하는 수도 있음)

 

exception 발생시, 각 모드에 맞게 cpu의 PC(program counter)에 exception을 처리하기 위한 주소(exception vector table)가 강제적으로 할당된다.

 

아래는 excption에 따라 cpu의 PC에 강제적으로 할당되는 EVT의 주소를 나타낸다.

   

     우선순위

                ------------------------

       [3]      0x1C :FIQ

                ------------------------

       [4]       0x18 :IRQ

                ----------------------------

        .           0x14 : (reserved)

                ----------------------------

       [2]       0x10 :Data Abort

                ----------------------------

       [5]       0x0c :Prefetch Abort

                ----------------------------

       [6]       0x08 :Software Interrupt

                ----------------------------

       [6]       0x04 :Undefined Instruction

                ----------------------------

       [1]      0x00 :Reset

                ----------------------------

 

 이상의 어드레스가 PC에 할당되면 이동된 번지에서는 cpu가 exception에 따라 어떤 처리를 해야할 지를 코딩해주어야한다.

 

 

이 때 약간의 주의해야 할 점들이 있다.

 

 Branch Instruction (B, BL, BX, BLX) 은 현재 프로그램 카운터에서 ± 32MB 이내의 범위로 뛰어넘을 수 있다.

 

 그래서, Exception vector table에서 각 테이블들은 LDR과 PC를 사용하여 직접 PC(r15)에 주소값을 넣어주는 편이 좋다.  이때는, 4GB의 범위를 가지게 된다. (long branch)

 

 

 

======>>>       실행을 위한 메모리 내에서의 코딩

 

                        0x00000000 : LDR  pc,EVT

                        0x00000004 : LDR  pc,EVT + 4

                        0x00000008 : LDR   pc,EVT + 8

                        0x0000000c : LDR  pc,EVT + 12

                        0x00000010 : LDR  pc,EVT + 16

                        0x00000014 : LDR  pc,EVT + 20

                        0x00000018 : LDR  pc,EVT + 24

                        0x0000001c : LDR  pc,EVT + 28

 

-------------------------------------------------------

참고 :http://blog.naver.com/dreamingduck/5508019

 

 

 

댓글