ARM 아키텍처
- 아키텍처 = 명령어 체계 자체(명령어들을 instruction set 혹은 어셈블리어라 함)
- 아키텍처 기반으로 CPU 코어 설계
- 하나의 아키텍처로 여러 가지 코어 설계 가능
- ARM Cortex 시리즈 : A, R, M
* ARMv1 -> ARMv2 : MUL 추가
* ARMv2 -> ARMv3 : 프로세스 캐시 추가
ARM CPU
- STM32F103 : ARMv7-M 아키텍처 구조, ARM Cortex-M3 코어 사용
- Exynos4412 : ARMv7-A 아키텍처 구조, ARM Cortex-A9 코어 사용
ARM 코어 레지스터
- 동작 모드 : User, FIQ, SVC, Abort, IRQ, undefined
- 일정 조건에 따라 자동으로 바뀜
- User -> IRQ -> User : 펌웨어로 제어
- System : CPU가 특수 상황시 전환
- User : R0 ~ R15의 16개 + CPSR 레지스터 사용
- SVC(supervisor), Abort, IRQ, Undefined : R13, R14, SPSR 레지스터 사용
- 총 37개 레지스터 사용 = 17 + 8 + 3 + 3 + 3 + 3
- 동작 모드 별 레지스터
ARM 명령어 체계
- ARM 모드 : 32비트 체계
- Thumb 모드 : 16비트 명령어 체계, 일부 레지스터만 사용, 컴파일 시 Thumb 전용 컴파일러나 옵션으로 선택
ARM 코어 레지스터
- R15 : 프로그램 카운터
- R14 : 링크 레지스터, 서브루틴 함수서 돌아갈 주소
- R13 : 스택 포인터
- CPSR current program status register
- SPSR saved program status register : cpsr 레지스터 값을 모드마다 백업용으로 저장하기 위해 사용.
명령어 집합 종류
- 분기 명령 : 함수, if then else 구조
- 데이터 처리 명령 : 프로세서 내부 데이터 이동, 산술, 논리, 비교 명령어
- 상태 레지스터 접근 명령 : CPSR, SPSR 제어 명령어
- Single register load and store instruction : 프로세서 메모리 간 단일 데이터 전송명령
- 다중 레지스터 로드 앤 스토어 레지스터 : 프로세서 메모리 간 다중 데이터 전송 명령
- 코프로세서 명령 : coprocossor(ARM core에서 처리못하거나 확장기능 구현시 사용하는 별도 프로세서) 제어 명령
ARM 명령어 집합 포멧
- 명령어 종류 별로 다른 형식
Thumb 명령어 집합
- 16비트 명령어 체계
- 보통 ARM 코드에 비해 30% 메모리 절약
- BX, BLX 명령으로 ARM 과 Thumb 상태 변환
'컴퓨터과학 > 임베디드' 카테고리의 다른 글
조금씩 임베디드 - 10. 어셈블리어 (0) | 2022.08.17 |
---|---|
조금씩 임베디드 - 9. 링커 스크립트 (0) | 2022.08.17 |
조금씩 임베디드 - 7. C언어, 어셈블리어 최적화 기법 (0) | 2022.08.17 |
조금씩 임베디드 - 6. 임베디드 시스템 개발과 부트로더 (0) | 2022.06.22 |
조금씩 임베디드 - 5. 주변장치 2 (0) | 2022.06.22 |