Posted at 2010/02/01 10:39 //
in 전자 공학/Embedded //
by downright
1. ARM Register Set과 Mode - ARM9, 11의 경우 32-bit 범용 Register가 31개, 상태 Register가 6개 존재합니다. Mode는 총 7가지의 Mode(Supervisor, System, User, FIQ, IRQ, Abort, Undefined)를 갖는데, System Mode와 User Mode는 같은 Register를 사용하기 때문에 상태 Register가 6개가 됩니다.
- Cortex A8의 경우는 기존 시스템에서 Monitor Mode가 하나 더 추가되어 해당 Mode를 위한 Register 3개(SPSR, SP, LR)가 추가되어 총 40개의 Register로 구성됩니다.
2. Program Status Register 구성
(※DNM(Do Not Modify) 영역은 소프트웨어로 수정해서는 안 되는 영역)
2.1 Condition code Flag N: Negative/Less than / Z: Zero / C: Carry/Borrow/Extend / V: Sticky overflow 2.2 Q Flag: Set the Sticky Overflow, 특정한 곱셈과 분수 산술 명령에서 ‘1’로 Set 2.3 IT execution state bits: IT[7:5] - 현재의 IT blcok의 기본 조건 코드(base condition code)를 encode, 활성화 IT block이 없을 때 b000 IT[4:0] - 조건적으로 수행될 명령의 수를 encode, 각각의 조건은 base condition code 또는 base condition code의 반전 값 * Processor가 IT 명령을 수행할 때 명령의 조건에 따라 값이 set 되고, IT block을 수행하는 동안 IT[4:0]의 값이 shift.
2.4 Java State bit:(T=1일 때) J=0; Thumb state / J=1; ThumbEE state 2.5 GE[3:0]: 수행 결과의 각각의 half word 도는 byte에 대해서 크거나 같음을 지시함. 2.6 E: Load/store Endianness를 제어하는 bit, ‘CFGEND0’ 입력을 사용해서 reset에서 초기화 할 수 있음. 2.7 A: 자동적으로 ‘1’로 set되고 Imprecise data aborts를 불가능하게 할 때 사용함. 2.8 Control Bits: I: Interrupt Disable bits / F: FIQ Disable bits / T: Thumb 동작 mode M[4:0]: 동작 모드 값, b10000(User), b10001(FIQ), b10010(IRQ), b10011(SVC), b10111(ABT) b11011(UND), b11111(SYS), b10110(MON)