ARM PROCESSOR 소개
ARM processor란 영국의 Advanced RISC Machine(ARM)사가 개발한 범용 32 bit RISC processor를 의미합니다. ARM사는 직접 processor 반도체를 제조해 판매하지 않습니다. 대신 설계한 processor를 Intellectual property( IP) 형태로 제공하며, 이에 대한 license를 판매합니다. ARM processor IP는 일종의 설계도로, 여러 반도체 회사들이 여기에 필요한 주변장치들을 추가해 System On Chip(SoC) 형태로 반도체를 제조해 판매합니다.
ARM processor의 가장 큰 특징은 성능에 비해 전력 소비량이 작다는 것입니다. 때문에 휴대전화기나 PDA같은 비교적 큰 computing power가 필요하지만 전력 소비량이 작어야하는 하는 휴대용 기기 또는 내장형 기기 분야에서 많이 사용되고 있습니다.
Arichitecture | 특징 | Core |
ARMv1 |
|
ARM1 |
ARMv2 |
|
ARM2 |
ARMv2a |
|
ARM3 |
ARMv3 |
|
ARM6 ARM7DI |
ARMv3M |
|
ARM7M |
ARMv4 |
|
StrongARM |
ARMv4T |
|
ARM7TDMI ARM9TDMI |
ARMv5TE |
|
ARM9E ARM10E |
ARMv5TEJ |
|
ARM7EJ ARM926EJ |
ARMv6 |
|
ARM architecture, ARM core, 또는 ARM processor 이름에 포함된 알파벳과 숫자의 의미는 다음과 같습니다.
ARM [a] [b] [T] [D] [M] [I] [E] [J] [F] [-S]
a : 속한 ARM core family
b : memory management unit, memory protection unit, cache, TCM 구성
T : Thumb 명령 지원
D : 디버그 기능 지원
M : 64 bit 결과를 내는 곱셈기 지원
I : In-Circuit Emulator(이하 ICE) 기능 지원
E : DSP 성능 향상을 위한 명령(Enhanced DSP 명령) 지원
J : Java bytecode 성능 향상을 위한 명령(Jazelle 기술) 지원
F : Vector Floating-Point(이하 VFP) 구조 지원
-S: Electronic Design Automation(이하 EDA) 도구로 synthesis 할 수 있음
Register
ARM state register
ARM state일 경우, 16개의 general purpose register와 1개 또는 2개의 status register를 사용할 수 있습니다. 아래 그림은 ARM state일 경우의 register 구성을 보여줍니다.
ARM state registers |
색칠 되어 있는 레지스터가 자신만의 별도 레지스터(banked register)이고 나머지는 범용레지스터 입니다.
CPSR - 프로그램 상태 레지스터
SPSR - 예외처리를 위한 상태 레지스터
system and user 에 SPSR 레지스터가 없는이유는 인터럽트 자신이 인터럽트 걸릴필요는 없기 때문입니다.
레지스터 갯수는.
r0 ~ r15 = 16개
FIQ = 7개
IRQ, supervisor, Abort, undefined 각각 2개 =8개
CPSR, 상태레지스터 5개 = 6개
총 레지스터 37개.
다시 설명하면 위 그림에서 진하게 표시된 것은 banked register로, 같은 이름으로 접근하지만 해당 operating mode 일때 다른 operating mode 일 때와는 다른 독립적인 값을 가집니다.
Register r13은 일반적으로 stack point(SP)로 사용하며, register r14는 함수 호출시 복귀할 주소를 저장하는 link register(LR)로 사용합니다. 그리고 register r15는 다음에 수행할 instruction 주소를 저장하는 program counter(PC)로 사용합니다.
FIQ mode일 경우는 특별히 register r8~r12 역시 banked register입니다. 때문에 FIQ mode에서 수행되는 FIQ handler는 진입할 때 이전 register 값을 저장했다가 복귀할 때 register를 이전 값으로 되돌리는 작업을 해 줄 필요가 없습니다. 때문에 FIQ handler는 원하는 작업을 IRQ handler에 비해 빠르게 처리할 수 있습니다.
Current Porgram Status Register (CPSR)는 이름 그대로 현재 상태 정보를 저장하고 있습니다. Saved Program Status Register (SPSR)는 현재 operating mode로 들어가기 직전 operating mode의 상태 정보를 담고 있습니다.
Thumb state register
아래 그림은 Thumb state일 때 접근 가능한 register들을 보여줍니다. 일부를 제외한 대부분의 instruction들의 경우, ARM state일 때와는 달리 아래 그림에 표시되지 않은 r8~r12를 사용할 수 없습니다. 이 차이점을 제외하면 다른 내용은 ARM state일 경우와 동일합니다.
Thumb state registers |
Exception
Exception은 오류가 발생했거나 외부 장치의 요청(interrupt)이 들어와서 현재 수행중인 프로그램을 잠시 멈추고 발생한 오류 또는 요청(interrupt)을 먼저 처리하는 상황을 의미합니다. 이 exception handling은 ARM state에서만 가능하기 때문에, exception handler는 ARM instruction set으로 작성해야 합니다. Exception이 발생하면 다음과 같은 과정을 거쳐 exception을 처리하는 exception vector가 실행됩니다.
- PC를 LR에 복사
- CPSR을 SPSR에 복사
- Operating mode 변경
- Operating state를 ARM state로 변경
- 필요에 따라 interrupt을 disable 시킴
- PC를 해당 exception vector 주소로 변경
Exception 처리가 끝나면 다음과 같은 과정을 거쳐 다시 exception이 발생하기 직전에 수행 중이던 프로그램으로 복귀합니다.
- LR에 저장된 값을 참조해 PC 값 복원
- SPSR에 저장된 값으로 CPSR 복원
AT91SAM7S 메모리 맵
시스템을 효율적으로 개발하기 위해서는 메모리맵을 정확하게 이해하고 있어야 되는데 AT91SAM7S의 메모리 컨트롤러는 내부 메모리를 위해 256mb 메모리공간, 주변장치들의 주소 공간을 위해 256mb의 메모리 공간을 할당하여 제어한다.
처음에 0x00000000 플래쉬롬 영역에 SAMBA 가 있다고 가정했을때 전원을 인가하고 사용자가 작성했던 프로그램을 0x00200000~0x00300000 SRAM 영역에 올리고 전원을 끈뒤 다시 전원을 인가하면 아까전의 플래쉬롬 영역에 SRAM이 맵핑이 된다.
'코스웨어 > 10년 스마트폰BSP' 카테고리의 다른 글
[BSP]-업무일지-정홍환-20100628 (1) | 2010.06.28 |
---|---|
[BSP]업무일지-강혜정-20100625 (0) | 2010.06.26 |
[BSP]업무일지_차상목_20100624 (0) | 2010.06.24 |
[BSP]업무일지_이도헌_ 20100623 (0) | 2010.06.23 |
[BSP]업무일지-한정효-20100621 (0) | 2010.06.21 |
[BSP]업무일지-송동규-20100618 (0) | 2010.06.19 |
[BSP]업무일지-김동훈-20100617 (0) | 2010.06.18 |
[BSP]업무일지-김상식-20100616 (0) | 2010.06.16 |