배우고픈 공돌이
[교육] ARM 개론 본문
1. 파이프라인 5단계
fetch > decode > excute > mem access > write back
2. 레지스터 뱅크의 개수
총 37개, 범용 31개 - 특수범용 : r13 - 15 (sp, lr, pc)
상태 레지스터 - 6개 : CPSR -1, SPSR - 5
3. 상태 레지스터 구조
1) Carry 발생 조건 : 정수 >> i - j >=0
2) FIQ, IRQ set 1 >> disable
3) 5번 비트 set 1 >> thumb 명령 / set 0 >> arm 명령 ( 예외처리할 때에는 arm모드여야한다. )
** 전원이 들어왔을 때, reset으로 분기하고 PSR을 셋팅하는데 사용하는 값 : 0xD3 (no exception, arm mode, supervisor mod)
4. exception vector table (빈칸 문제)
5. exception 후의 복귀 명령 ( PC 조정 )
6. arm 데이터 프로세싱 명령어 구조
1) 즉치 값(immediate value) : 오퍼랜드2에 즉치 값으로 #0x8000/000F를 넣는다면 12비트에는 어떤 형식으로 저장되는가?
op2 = 0x13E
2) 데이터 프로세싱에서의 어셈 표현이 틀린 것은?
ADD r0, r1, r2
ADD r0, r1, r2, LSL #2
ADD r0, r1, r2, LSL r3
ADD r0, r1, #0xFF
7. 64bit 산술 연산에서 사용하는 명령어
하위바이트 먼저 계산 후, 상위바이트를 계산 ( double 형 )
8. 비교 명령어에서 셋팅되는 상태 플래그
CMP에서 셋팅되는 상태 비트 : Z, C
9. 분기 명령어
10. 싱글 & 멀티 로드, 스토어 명령어
1)
LDM - increase - after = 현재 sp 공간부터 위로 데이터를 불러온다.
LDM - increase - before = 현재 sp 위부터 위로 데이터를 불러온다.
LDM - decrease - after = 아래부터 현재 위치까지 데이터를 불러온다.
LDM - decrease - before = 아래부터 현재 전까지 데이터를 불러온다.
STM - increase - after = 현재 sp 공간부터 위로 데이터를 저장한다.
STM - increase - before = 현재 sp 위부터 위로 데이터를 저장한다.
STM - decrease - after = 아래부터 현재 위치까지 데이터를 저장한다.
STM - decrease - before = 아래부터 현재 전까지 데이터를 저장한다.
ex)
11. ARM 어셈블러 사용
리셋을 제외한 다른 예외 접근에 대해서 위에 설명한 것과 같이 바로 pc에 값을 넣는다.
그 이유는 분기하기에는 너무 멀기 때문.
mrs = move to register from status register
bic = bit clear
orr = or
msr = move to status register from register
bleq : 상태 레지스터 Z의 값이 1이면 eq 조건에 만족하여 cmp_eq_ok 함수로 분기되었다가 돌아온다.
blne : 상태 레지스터 Z의 값이 0이면 not eq로 cmp_ne_ok 함수로 분기되었다가 돌아온다.
mov r5, lr / mov lr, r5 :
- 분기했다가 복귀하면서 lr이 변경되어 돌아온다. 즉, 미리 저장(백업)의 의미가 크다.
- lr은 분기할 때, 돌아갈 주소를 저장한다.
- cmp_eq_ok로 분기했다 가정하면 lr은 asm_cmp_test의 mov lr, r5 을 저장하고 있다.
- 그렇게 된다면 메인으로 돌아가기 위한 lr는 사라지는 것임으로 사전에 back-up한다.
12. 커널 모듈의 적재와 장치 추가. 어플리케이션이 open할 때, 시스템 콜 과정
'ARM > Tutorial' 카테고리의 다른 글
[교육] ARM 프로세서와 명령어 (0) | 2017.09.09 |
---|---|
[교육] ARM 개요 (0) | 2017.09.04 |
stm32cubemux 사용 (0) | 2017.07.31 |
STM32F4 디스커버리 보드 : LED blink (0) | 2017.05.08 |
ARM 컴파일과정 (0) | 2017.04.29 |