책 이미지

책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 모바일/무선/임베디드 프로그래밍
· ISBN : 9788960778450
· 쪽수 : 400쪽
· 출판일 : 2016-04-08
책 소개
목차
1부 ARM 시스템과 개발
1장 ARM의 역사
__ARM의 기원
____아콘이 새로운 프로세서를 만들기로 결정한 이유
____아콘은 어떻게 ARM이 되었을까?
____ARM이 실제로 마이크로프로세서를 생산하지 않는 이유
__ARM의 명명 규칙
____사용하는 프로세서의 이름에 대한 규칙
____ARM7TDMI와 ARM926EJ-S의 차이점
____ARM7과 ARMv7의 차이점
____Cortex-M 및 Cortex-A의 차이점
__제조사 문서
__오늘날의 ARM 역할
__정리
2장ARM 임베디드 시스템
__ARM 임베디드 시스템의 정의
____시스템 온 칩이란 무엇인가?
____임베디드 시스템과 시스템 프로그래밍의 차이점
____최적화가 중요한 이유
____RISC 아키텍처의 장점
__적합한 프로세서의 선택
__어떤 것부터 시작해야 할까?
____사용 가능한 보드
____사용 가능한 운영체제의 종류
____각자의 목적에 가장 부합하는 컴파일러는 무엇인가?
____디버깅을 위한 준비
____모든 게 갖춰진 개발 환경이 존재할까?
____알아둬야 할 그 밖의 사항들
__정리
3장 ARM 아키텍처
__기본적인 이해
____레지스터
____스택
____내부 RAM
____캐시
__다른 ARM 서브시스템 알아보기
____프로세서 레지스터의 표현
____CPSR
____연산 유닛
____파이프라인
____밀접하게 연결된 메모리
____코프로세서
__그 밖의 개념 이해
____예외란 무엇인가?
____각기 다른 예외 처리
____연산 모드
____벡터 테이블
____메모리 관리
__다른 기술
____JTAG 디버그(Debug, D)
____강화된 DSP(Enhanced DSP, E)
____벡터 부동소수점(Vector Floating Point, F)
____EmbeddedICE(I)
____제이젤(Jazelle, J)
____롱 멀티플라이(Long Multiply, M)
____Thumb(T)
____합성 가능(Synthesizable, S)
____트러스트존(TrustZone)
____NEON
____big.LITTLE
__정리
4장ARM 어셈블리 언어
__어셈블리 언어의 소개
__컴퓨터와의 대화
__어셈블리를 배워야 하는 이유
____속도
____용량
____재미!
____컴파일러는 완벽하지 않다
____어셈블리를 통해 컴퓨터 과학 이해하기
____직접 어셈블리로 작성하면 안 될까?
__어셈블리의 사용
____부트로더의 작성
____리버스 엔지니어링
____최적화
__ARM 어셈블리 언어
____레이아웃
____명령어 포맷
____조건 코드
____조건 플래그 업데이트
____어드레싱 모드
__ARM 어셈블리 프라이머
____로드와 저장
____값에 대한 설정
____분기
____수학 연산
____예제 프로그램의 이해
__정리
5장 첫발 내딛기
__Hello, World!
__좀 더 자세하게 살펴보기
__Hello World, 실제로 적용해보자!
__소프트웨어 구현
__메모리 매핑
__실제 예제
____실리콘 랩의 STK3800
____실리콘 랩의 STK3200
____아트멜 D20 Xplained Pro
__케이스 스터디: U-Boot
__머신 스터디: 라즈베리 파이
____부트 과정
____라즈베리 파이를 위한 프로그램 컴파일
____다음 작업
__정리
6장 Thumb 명령어 세트
__Thumb
__Thumb-2 기술
__Thumb을 실행하는 방법
__Thumb을 사용할 때의 장점
__Thumb을 사용하는 코어
__ARM-Thumb 인터워킹
__Thumb-1의 소개
____레지스터 사용 가능성
____제거된 명령어
____조건이 없음
____플래그 설정
____배럴 시프터가 없음
____즉시값의 감소
____스택 연산
__Thumb-2의 소개
____새로운 명령어
____코프로세서
____DSP
____FPU
__Thumb으로 작성하기
__정리
7장 어셈블리 명령어
__이동
____MOV
____MVN
____MOVW
____MOVT
____NEG
____예제: 명령어 스트림에서 32비트 상수의 로드
__산술
____ADD
____ADC
____SUB
____SBC
____RSB
____RSC
____예제: 기본적인 수학
__제한된 산술
____QADD
____QSUB
____QDADD
____QDSUB
__데이터 전송
____LDR
____STR
____예제: memcpy
__논리
____AND
____EOR
____ORR
____BIC
____CLZ
__비교
____CMP
____CMN
____TST
____TEQ
__분기
____B
____BL
____BX
____BLX
____예제: 0을 카운트하기
____예제: Thumb 인터워킹
____MOV pc, lr이란?
__곱셈
____MUL
____MLA
____UMULL
____UMLAL
____SMULL
____SMLAL
__나눗셈
____SDIV
____UDIV
__다중 레지스터 데이터 전송
____STM
____LDM
__배럴 시프터
____LSL
____LSR
____ASR
____ROR
____RRX
__스택 연산
____PUSH
____POP
____예제: 서브루틴으로부터의 리턴
__코프로세서 명령어
____MRC
____MCR
__추가적인 명령어
____SVC
____NOP
____MRS
____MSR
__정리
8장 NEON
__NEON을 사용할 때의 이점
__NEON에서 지원하는 데이터 타입
__어셈블리에서 NEON의 사용
____레지스터의 표현
____데이터의 로드와 저장
____최적화된 memcpy
____NEON 명령어
__C 언어에서 NEON의 사용
____인트린직
____NEON 인트린직의 사용
____이미지를 그레이스케일로 변환
__정리
9장 디버깅
__디버거란?
____디버거의 기능
____ARM 디버깅 능력
__디버깅 타입
____루프
____루틴
____인터럽트 컨트롤러
____부트로더
__디버거
____GNU 디버거
____J-Link GDB 디버거
__디버깅 예
____무한 루프
____알려지지 않은 예외
____0으로 나눗셈
__상세한 분석
____데이터 취소
____시리얼 라인의 문제
____64비트 연산
____시간 응답
__정리
10장 최적화된 C 코드의 작성
__코드 최적화의 규칙
____최적화로 시작하지는 말자
____컴파일러에 대한 지식
____여러분이 작성한 코드에 대한 지식
__프로파일링
____운영체제 안에서의 프로파일링
____베어 메탈 시스템에서의 프로파일링
__C 최적화
____기본적인 예제
____카운트를 높이는 것이 아니라 줄여야 한다.
____정수
____나눗셈
____너무 많은 파라미터를 사용하지는 말자
____객체가 아닌 포인터
____시스템 메모리를 자주 업데이트해서는 안 된다
____정렬
__어셈블리 최적화
____특별한 루틴
____인터럽트의 처리
__하드웨어 설정 최적화
____주파수 설정
____캐시 설정
__정리
2부 레퍼런스
부록 A 용어
__분기 예측
__캐시
____캐시 히트
____캐시 라인
____캐시 미스
__코프로세서
__CP10
__CP11
__CP14
__CP15
__사이클
__예외
__인터럽트
__제이젤
__JTAG
__MIPS
__NEON
__비순차 실행
__파이프라인
__레지스터
__SIMD
__SoC
__합성 가능
__트러스트존
__벡터 테이블
부록 B ARM 아키텍처 버전
__ARMv1
__ARMv2
__ARMv3
__ARMv4
__ARMv5
__ARMv6
__ARMv6-M
__ARMv7-A/R
__ARMv7-M
__ARMv8
부록 C ARM 코어 버전
__ARM6
__ARM7
__ARM7TDMI
__ARM8
__StrongARM
__ARM9TDMI
__ARM9E
__ARM10
__XScale
__ARM11
__Cortex
____Cortex-A
____Cortex-R
____Cortex-M
부록 D NEON 인트린직과 명령어
__데이터 타입
__레인 타입
__어셈블리 명령어
__인트린직 명명 규칙
부록 E 어셈블리 명령어
__ARM 명령어
____산술 명령어
____병렬 산술 명령어
____이동
____로드
____저장
____논리
____비교
____새튜레이트
____분기
____확장
____기타
__Cortex-M 코어에서의 Thumb 명령어