목차
Chapter 1 ARM 소개
1.1 ARM 역사 및 현황 = 3
1.2 ARM 아키텍처 = 5
1.2.1 ARM 기본 아키텍처 = 6
1.2.2 ARM 확장 아키텍처 = 9
1.2.3 ARM 명령어 집합 아키텍처 진보 = 11
1.3 ARM 코어 로드맵 = 13
1.3.1 ARM 코어 소개 = 13
1.3.2 ARM7 Thumb 계열 = 15
1.3.3 ARM9 Thumb 계열 = 17
1.3.4 ARM9E Thumb 계열 = 19
1.3.5 ARM10E Thumb 계열 = 22
1.3.6 ARM11 계열 = 24
1.3.7 SecureCore 계열 = 26
1.3.8 StrongARM과 XScale 기술 = 27
1.4 ARM 기반 SoC 칩 = 28
1.5 ARM 응용 분야 = 30
Chapter 2 ARM 프로그래머 모델
2.1 프로세서 동작 상태 = 35
2.2 메모리 모델 = 37
2.2.1 메모리 주소 공간과 주소 계산 = 37
2.2.2 메모리 엔디언 = 38
2.3 입출력 주소 모델 = 40
2.3.1 입출력 장치 제어 방식 = 40
2.4 정보 형식 = 42
2.5 프로세서 모드 = 43
2.5.1 프로세서의 7가지 동작 모드 = 43
2.5.2 프로세서 모드 전환 = 45
2.6 ARM 프로세서 코어 레지스터 = 47
2.6.1 ARM 상태 레지스터 = 47
2.6.2 Thumb 상태 레지스터 = 49
2.7 프로그램 상태 레지스터(PSR: Program Status Register) = 51
2.7.1 조건 코드 플래그 = 51
2.7.2 Q 플래그 = 53
2.7.3 J 비트 = 53
2.7.4 제어 비트 = 53
2.8 ARM 코어의 예외 및 예외 처리 = 55
2.8.1 ARM 코어의 예외 = 55
2.8.2 ARM 코어의 예외 처리 = 58
2.8.3 각 예외의 상세한 동작 = 60
2.9 확장된 XScale 아키텍처 = 68
2.9.1 DSP 보조프로세서 0(CPO) = 68
2.9.2 MMU의 페이지 속성 확장 = 73
2.9.3 CP 15 기능의 추가 = 75
2.9.4 이벤트 아키텍처 = 76
Chapter 3 ADS(ARM Developer Suite) 사용법
3.1 CodeWarrior for ARM 소개 = 83
3.1.1 New Project Window = 85
3.1.2 Project Window = 85
3.1.3 타겟 옵션 Window = 86
3.2 AXD(ARM eXtended Debugger) = 92
3.2.1 이미지 다운로딩 = 93
3.2.2 디버깅 = 93
3.3 ARMulator를 이용한 ADS 실습 = 95
3.3.1 프로그램 작성, 빌드 = 95
3.3.2 실행/디버깅 = 98
3.3.3 추가 실습 = 100
Chapter 4 ARM 어셈블리어 실습(Ⅰ)
4.1 ARM 어셈블리어 소개 = 103
4 1.1 ARM 동작 모드 = 103
4.1.2 ARM 레지스터 = 104
4.1.3 ARM 명령어의 특징 = 106
4.1.4 ARM 데이터 처리 명령어 = 107
4.2 실습 프로그램 = 109
4.2.1 비트 필드 조작 = 109
4.2.2 상수 곱셈 = 110
4.2.3 64-비트 연산 수행 = 110
4.3 실습 = 111
4.3.1 실습의 목적 = 111
4.3.2 방법 및 절차 = 111
4.3.3 추가 실습 과제 = 113
Chapter 5 ARM 어셈블리어 실습(Ⅱ)
5.1 ARM 메모리 접근 명령어 소개 = 117
5.1.1 단일 레지스터 적재(Load)/저장(Store) 명령어 = 118
5.1.2 다중 레지스터 적재(Load)/저장(Store) 명령어 = 121
5.2 실습 프로그램 = 124
5.2.1 단일 레지스터 메모리 접근 명령어 = 124
5.2.2 다중 레지스터 메모리 접근 명령어 = 125
5.3 실습 = 127
5.3.1 실습의 목적 = 127
5.3.2 방법 및 절차 = 127
5.3.3 추가 실습 과제 = 128
Chapter 6 ARM 어셈블리어 실습(Ⅲ)
6.1 ARM 흐름 제어 명령어 소개 = 133
6.1.1 PC 상대 분기 = 133
6.1.2 절대 분기와 상태 변환 분기 = 136
6.2 실습 프로그램 = 138
6.2.1 루프를 이용한 블록 복사 프로그램 = 138
6.2.2 스트링 비교 함수 = 138
6.3 실습 = 139
6.3.1 실습의 목적 = 139
6.3.2 방법 및 절차 = 139
6.3.3 추가 실습 과제 = 140
Chapter 7 ARM 어셈블리어 실습(Ⅳ)
7.1 ARM 시스템 명령어 소개 = 143
7.1.1 MRS와 MSR 명령어 = 143
7.1.2 SWI 명령어 = 144
7.2.3 SWP 명령어 = 145
7.2 실습 프로그램 = 147
7.2.1 모드 전환 및 스택 초기화 프로그램 = 147
7.2.2 메모리 교환 프로그램 = 148
7.3 실습 = 149
7.3.1 실습의 목적 = 149
7.3.2 방법 및 절차 = 149
Chapter 8 교육보드 소개 및 소프트웨어 개발환경
8.1 타겟 보드를 사용한 소프트웨어 개발 환경 = 153
8.1.1 전체 소프트웨어 개발 환경 = 153
8.1.2 타겟 보드 소개 = 156
8.2 타겟 보드를 이용한 ADS 실습 = 158
8.2.1 프로그램 작성, 빌드 = 158
8.2.2 실행/디버깅 = 160
8.2.3 추가 실습 = 160
Chapter 9 초기화 코드 실습
9.1 실습 보드 초기화 코드 소개 = 163
9.1.1 Exception 벡터 설정 = 164
9.1.2 Exception handling 구조 = 164
9.1.3 Clock, INTC, OS Timer 초기화 = 165
9.1.4 Memory Bank 초기화 = 167
9.1.5 스택 초기화 = 167
9.1.6 C 언어용 데이터 영역 초기화 및 C 함수 진입 = 168
9.2 초기화 루턴 실습 = 169
9.2.1 실습의 목적 = 169
9.2.2 방법 및 절차 = 170
9.2.3 추가 실습 과제 = 170
Chapter 10 입출력 포트를 이용한 LED 점등 제어
10.1 LED 설명 = 173
10.1.1 입출력 포트 설명 = 173
10.2 Static memory에 연결된 LED 동작 설명 = 177
10.3 LED 제어 프로그램 설명 = 177
10.4 LED 제어 실습 = 183
10.4.1 실습의 목적 = 183
10.4.2 방법 및 절차 = 183
10.4.3 추가 실습 과제 = 183
Chapter 11 FND 실습
11.1 FND 설명 = 187
11.3 FND 제어 프로그램 설명 = 189
11.3 FND 제어 실습 = 190
11.3.1 실습의 목적 = 190
11.3.2 방법 및 절차 = 190
11.3.3 추가 실습 과제 = 191
Chapter 12 PLL을 이용한 시스템 동작 주파수 제어
12.1 PLL(Phase Locked Loop) 설명 = 195
12.2 32.768㎑ 오실레이터 = 196
12.3 3.6864㎒ 오실레이터 = 196
12.4 Core Phase Locked Loop(Core PLL) = 197
12.5 95.85㎒ Peripheral Phase Locked Loop = 201
12.6 147.46㎒ Peripheral Phase Locked Loop = 201
12.7 PLL 제어 프로그램 설명 = 202
12.8 PLL 제어 실습 = 204
12.8.1 실습의 목적 = 204
12.8.2 방법 및 절차 = 204
12.8.3 추가 실습 = 204
Chapter 13 Operating System Timer
13.1 Timer(OS Timer) 설명 = 207
13.2 Interrupt Controller = 210
13.3 Timer제어 프로그램 설명 = 217
13.4 Timer 제어 실습 = 220
13.4.1 실습의 목적 = 220
13.4.2 방법 및 절차 = 221
13.4.3 제출물 = 221
13.4.4 추가 실습 = 221
Chapter 14 Watch Dog Timer를 이용한 시스템 리셋
14.1 WDT(Watch Dog Timer) 설명 = 225
14.2 Watchdog Timer 제어 프로그램 설명 = 226
14.3 Watchdog Timer 제어 실습 = 227
14.3.1 실습의 목적 = 227
14.3.2 방법 및 절차 = 227
14.3.3 추가 실습 = 228
Chapter 15 UART를 이용한 직렬 통신
15.1 UART 설명 = 231
15.1.1 데이터 전송 및 수신 동작 = 232
15.1.2 UART에 사용되는 핀 = 233
15.1.3 Baud-Rate 발생 및 제어 레지스터 = 233
15.2 UART 제어 프로그램 설명 = 238
15.3 UART 제어 실습 = 239
15.3.1 실습의 목적 = 239
15.3.2 방법 및 절차 = 239
15.3.3 추가 실습 과제 = 240
Chapter 16 LCD 제어기를 이용한 LCD 패널 동작 실습
16.1 LCD 제어기 설명 = 243
16.1.1 LCD 제어기 블록도 = 244
16.1.2 FUNCTIONAL TIMING = 246
16.1.3 256 PALETTE USAGE(TFT) = 247
16.2 LCD 제어 프로그램 설명 = 253
16.3 LCD 제어 실습 = 256
16.3.1 실습의 목적 = 256
16.3.2 방법 및 절차 = 256
16.3.3 추가 실습 과제 = 256
Chapter 17 Timer와 LCD 제어기를 이용한 시계 구현
17.1 시계 구현 설명 = 259
17.2 시계 구현 실습 = 259
17.2.1 실습의 목적 = 259
17.2.2 방법 및 절차 = 259
17.2.3 추가 실습 = 259
부록 : xStation 하드웨어 구성 및 ADS, Multi-ICE 개발 환경
1. 하드웨어 구성 = 263
2. 하드웨어 사양 = 266
3. GPIO 포트 초기화 = 288
4. ADS 및 Multi-ICE의 소프트웨어 개발 환경 = 292