장바구니 담기 close

장바구니에 상품을 담았습니다.

ARMv7 프로세서 프로그래밍(컴퓨터/IT)

ARMv7 프로세서 프로그래밍(컴퓨터/IT) C와 NEON을 이용한 하드웨어 성능 최적화 기법

  • 제임스 랭브리지 지음 | 이유찬 옮김
  • |
  • 에이콘출판
  • |
  • 2016-04-08 출간
  • |
  • 400페이지
  • |
  • 188 X 235 mm
  • |
  • ISBN 9788960778450
★★★★★ 평점(10/10) | 리뷰(1)
판매가

35,000원

즉시할인가

31,500

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

수량
+ -
총주문금액
31,500

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

목차

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 명령어

도서소개

★ 이 책에서 다루는 내용 ★

■ 여러 시스템에서 모든 ARM 프로세서에 공통적으로 사용하는 기술을 명확하게 설명해 임베디드 ARM 개발의 세계에 좀 더 쉽게 적응하도록 해준다.
■ 보드, 소프트웨어, 레퍼런스를 포함해 ARM 시스템에서 개발에 필요한 여러 가지 툴을 소개한다.
■ 어셈블리 언어를 사용해 빠른 속도로 로우 레벨 프로그래밍과 디버깅을 시작할 수 있게 해준다.
■ ARM 프로세서를 통해 빠른 코드를 개발하는 데 필요한 최적화 방법을 알려준다.

★ 이 책의 대상 독자 ★

주로 임베디드 분야에서 처음 시작하는 개발자들을 대상으로 한다. C 언어에 대한 기본적인 이해가 있어야 이 책에 나오는 대부분의 예제 코드를 이해할 수 있지만 어셈블리 언어에 대한 지식은 굳이 필요하지 않다. 또한 이 책은 프로세서의 내부 지식에 대해 좀 더 공부하고 싶은 개발자와 코어 내부를 좀 더 깊게 이해하고 싶은 개발자를 위해 작성됐다.

★ 이 책의 구성 ★

이 책은 ARM 프로세서를 사용해본 경험이 없는 독자들에게 가능한 한 많은 정보를 주기 위한 목적으로 만들어졌다. ARM의 철학을 이해하려면, ARM이 어디서부터 왔으며 ARM 프로세서가 어떻게 탄생했는지를 이해해야 한다. 따라서 이 책은 임베디드 프로젝트의 모든 영역을 다룬다. 또한 프로세서와 그 확장 모델에 대한 이해, 어셈블러의 이해, 그리고 더 친숙한 C 언어를 사용한 첫 번째 프로그램의 작성과 디버깅 및 최적화 방법에 대해서도 설명한다.

1장, 'ARM의 역사'에서는 ARM의 역사를 개괄적으로 다루는데, ARM이 어디서부터 왔고 왜 오늘날의 ARM이 되었는지에 대해 설명한다.

2장, 'ARM 임베디드 시스템'에서는 임베디드 시스템이 무엇인지 알아보고, ARM 시스템의 강점을 살펴본다.

3장, 'ARM 아키텍처'에서는 ARM 프로세서를 구성하는 여러 가지 항목을 설명하고, 이를 효과적으로 사용하는 방법을 배워본다.

4장, 'ARM 어셈블리 언어'에서는 ARM 어셈블리 언어를 소개하고, 어셈블리 언어를 이해하는 일이 왜 중요한지 살펴본다.

5장, '첫발 내딛기'에서는 프로그램을 작성하기 위한 시뮬레이터와 실시간 카드에 대해 소개한다. 이 두 가지를 사용해 ARM 프로세서를 시작할 수 있으며, 더 복잡한 프로그램을 만들기 위한 기본에 대해 설명한다. 또한 실제 시나리오 프로젝트에 대해서도 설명한다.

6장, 'Thumb 명령어 세트'에서는 Thumb 모드와 Thumb-2 확장에 대해 설명한다. Cortex-M 프로세서에서는 Thumb 모드만 사용할 수 있지만, Thumb은 코드의 밀도(density)가 필요한 모든 현대 프로세서에서 사용할 수 있다.

7장, '어셈블리 명령어'에서는 ARM의 UALUnified Assembly Language에서 제공하는 어셈블리 명령어와 그 어셈블리 명령어를 사용해 쉽게 프로그램을 작성하는 방법을 배워본다.

8장, 'NEON'에서는 ARM의 향상된 SIMDSingle Instruction Multiple Data 프로세서인 NEON에 대해 살펴보고, 이 NEON을 사용해 수학적으로 복잡한 루틴을 가속화하는 방법을 알아본다.

9장, '디버깅'에서는 프로그램을 디버깅할 때 필요한 디버깅 방법에 대해 설명한다. 또한 실제 예제도 다룬다.

10장, '최적화된 C 언어 작성'에서는 애플리케이션을 작성하는 마지막 단계인 최적화를 다룬다. 몇 가지 간단한 예제를 통해 최적화된 코드를 작성하는 방법과, 더 나은 최적화를 구현하기 위해 프로세서 내부에서 일어나는 일들을 이해할 수 있다.

부록 A, '용어'에서는 임베디드 시스템에서 작업할 때 접하게 되는 용어들을 알아본다. 특별히 ARM 임베디드 시스템과 관련된 용어들을 살펴본다.

부록 B, 'ARM 아키텍처 버전'에서는 각기 다른 ARM 아키텍처와 각 버전을 기술적 향상 측면에서 설명한다. 또한 어떤 프로세서가 어떤 아키텍처를 기반으로 설계됐는지에 대해서도 살펴본다.

부록 C, 'ARM 코어 버전'에서는 ARM 코어에 대해 그리고 각 프로세서의 차이점에 대해 좀 더 자세히 알아본다. ARM6부터 각 프로세서에 대해서는 간략하게 설명하고, 현재의 Cortex 계열 프로세서에 대해서는 자세히 설명한다.

부록 D, 'NEON 인트린직과 명령어'에서는 ARM NEON 엔진에서 사용 가능한 명령어들을 정리하고, C를 사용한 최적화된 방법에서 NEON 연산을 수행할 때 사용되는 인트린직에 대해 설명한다.

부록 E, '어셈블리 명령어'에서는 UAL에서 사용되는 여러 가지 어셈블리 언어에 대해 각각 설명하며, 다른 Cortex-M 클래스 프로세서에서 사용되는 Thumb 명령어도 정리한다

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.