저자 서문 ... 4 이 책의 주요 내용 ... 6 이 책의 학습 로드맵 ... 14 CD 수록 내용 ... 16 PART 1 임베디드 시스템 1장 임베디드 시스템 개요 ... 29 01 임베디드 시스템의 이해 ... 30 02 프로세서 ... 35 03 메모리 장치 ... 44 04 입출력 장치 ... 52 05 시스템 버스 ... 59 2장 임베디드 시스템 설계 ... 63 01 임베디드 시스템의 설계 과정 ... 64 02 임베디드 하드웨어의 설계 ... 65 03 임베디드 소프트웨어 설계 ... 69 PART 2 ARM 프로세서의 이해 3장 ARM 아키텍처와 동작원리 ... 79 01 ARM 아키텍처 ... 80 02 ARM 명령어와 파이프라인 ... 83 03 ARM 구조와 명령어 실행 ... 88 4장 Programmer's 모델 ... 93 01 명령어 ... 94 02 동작모드 ... 96 03 레지스터 ... 98 04 메모리 구조 ... 104 05 예외처리 ... 106 5장 ARM 프로세서 명령어 ... 111 01 ARM 프로세서 명령어의 특징 ... 112 02 32비트 ARM 명령어 ... 115 03 아키텍처 v5TE의 ARM 명령어 ... 153 04 16비트 Thumb 명령어 ... 160 05 ARM의 의사 명령어 ... 163 6장 예외처리와 시스템 리셋 ... 167 01 ARM 프로세서의 예외처리 ... 168 02 예외처리 ... 172 03 시스템 리셋 ... 180 PART 3 ARM 프로세서와 임베디드 하드웨어 설계 7장 ARM 프로세서 코어 ... 185 01 ARM9 프로세서 코어 ... 186 02 ARM11 프로세서 코어 ... 196 03 Xscale 마이크로 아키텍처 ... 203 8장 ARM 프로세서 ... 207 01 ARM 프로세서의 구조 ... 208 02 ARM 프로세서의 제어 ... 209 03 캐시와 쓰기 버퍼 ... 221 04 MMU ... 227 05 MPU ... 240 06 TCM ... 248 9장 SoC 구조 ... 251 01 SoC와 AMBA 버스 ... 252 02 상용 SoC 제품 ... 257 10장 임베디드 시스템 하드웨어 설계 ... 263 01 하드웨어 구성요소 ... 264 02 하드웨어 설계 ... 271 PART 4 임베디드 소프트웨어 설계 11장 소프트웨어 개발 툴의 이해와 활용 ... 297 01 소프트웨어 개발 툴의 구성 및 사용법 ... 298 02 메모리 구조 설계 ... 308 03 다운로드와 디버깅 ... 317 12장 임베디드 C 프로그래밍과 소프트웨어 최적화 ... 327 01 컴파일러 사용과 옵션 설정 ... 328 02 임베디드 C의 구성요소와 프로그램 최적화 ... 331 03 나눗셈과 나머지 연산 ... 340 04 메모리 참조와 포인터 ... 349 05 ARM/Thumb 인터워킹 ... 351 13장 시스템 리셋과 부트코드 ... 357 01 리셋 핸들러 ... 358 02 부트코드 작성 ... 362 14장 하드웨어 제어 ... 385 01 GPIO 제어와 LED 점멸 ... 386 02 UART 장치 제어 ... 394 03 타이머 제어 ... 402 15장 부트로더 개발 ... 415 01 부트로더 이해 ... 416 02 U-Boot 빌드와 설치 ... 421 03 U-Boot 활용 ... 424 04 U-Boot 포팅 ... 445 PART 5 임베디드 ARM 리눅스 16장 리눅스 커널 ... 457 01 임베디드 시스템과 리눅스 ... 458 02 리눅스 커널과 프로세스 ... 461 03 리눅스의 메모리 사용 ... 468 04 예외처리와 인터럽트 ... 471 05 시스템 콜 인터페이스 ... 474 06 가상 파일 시스템 ... 476 07 사용자 프로그램 실행 ... 480 08 프로세스간 통신 ... 482 09 리눅스 커널 소스 ... 486 10 리눅스 커널 초기화 과정 ... 490 17장 디바이스 드라이버 ... 505 01 디바이스 드라이버의 이해 ... 506 02 문자 디바이스 ... 512 03 블록 디바이스 ... 522 04 네트워크 인터페이스 ... 527 05 커널 모듈 ... 540 18장 리눅스 애플리케이션과 루트 파일 시스템 ... 545 01 리눅스 애플리케이션 ... 546 02 루트 파일 시스템 ... 549 PART 6 커널 포팅 및 디바이스 제어 19장 커널 포팅 준비 ... 557 01 타깃 머신 선정 및 등록 ... 558 02 커널 소스 준비 ... 563 03 커널 소스 설치, 빌드 및 탑재 ... 566 20장 커널 포팅 ... 583 01 타깃 머신 추가 ... 584 02 커널 포팅 ... 603 21장 루트 파일 시스템 ... 629 01 루트 파일 시스템 마운트 ... 630 02 루트 파일 시스템 구축하기 ... 640 22장 디바이스 제어 ... 651 01 개발환경 ... 652 02 디바이스 드라이버 기초 ... 661 03 문자 디바이스 드라이버 활용 ... 678 04 그래픽 LCD와 프레임 버퍼 ... 691 PART 7 임베디드 리눅스의 활용과 미니 프로젝트 23장 임베디드 리눅스의 활용 ... 701 01 Nano-X 윈도우 시스템 ... 702 02 Qt/Embedded ... 707 03 Boa 웹서버 ... 716 04 USB 장치 사용 ... 727 24장 미니 프로젝트 ... 735 01 카메라에 입력된 영상 LCD로 출력 ... 736 02 웹서버를 활용한 입출력 장치 제어 ... 739 03 점프-업 프로젝트 ... 743 부록 A 개발환경 설치 및 사용법 ... 745 A-1 개발환경 구성에 앞서 ... 746 A-2 타깃 시스템 설정 ... 749 A-3 윈도우 기반의 호스트 시스템 설정 ... 752 A-4 리눅스 기반의 호스트 시스템 설정 ... 782 부록 B ARM 어셈블러 프로그래밍 ... 795 B-1 ARM 어셈블러 프로그래밍 실습에 앞서 ... 796 B-2 ARM 명령어 기초 ... 810 B-3 데이터 처리 명령어 실습 ... 817 B-4 데이터 전송 명령어 실습 ... 826 참고문헌 ... 839 찾아보기 ... 842