장바구니 담기 close

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

안드로이드 임베디드 프로그래밍 깊게 들어가기

안드로이드 임베디드 프로그래밍 깊게 들어가기

  • 로저예
  • |
  • 스포트라잇북
  • |
  • 2017-07-20 출간
  • |
  • 368페이지
  • |
  • 190 X 251 X 31 mm /921g
  • |
  • ISBN 9791187431084
판매가

35,000원

즉시할인가

31,500

배송비

무료배송

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

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

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

출판사서평




이제 시스템 환경에 구애받지 말고 임베디드 프로그래밍으로 깊게 들어가자

이 책은 임베디드 시스템 프로그래밍의 전반적인 분야를 논의한다. 기본적인 베어 메탈 프로그래밍부터 부트로더에서 안드로이드 시스템 부팅까지 일반적인 프로그래밍 지식의 제공뿐 아니라 컴파일러를 개발하고 디버깅 기술에도 초점을 맞추고 있다. 목표는 탄탄한 기초를 다질 수 있게 임베디드 시스템 프로그래밍의 기본적인 지식을 전하여, 좀 더 전문적인 영역으로 나아갈 수 있는 통로를 제공하는 것이다. 이 책은 수준에 따라 원하는 장을 읽고 하위 주제를 탐구하는 방식으로 선택하여 읽기를 권한다. 책은 3부로 이루어져 있다.

제1부는 저수준 프로그래밍의 기반을 포함한 소위 베어 메탈이라고 하는 프로그래밍과 안드로이드 시스템 프로그래밍에 초첨을 맞춘다. 1장~4장에서는 어셈블리 코드를 직접 사용하여 하드웨어에서 프로그램을 실행하는 방법을 포함한 베어 메탈 프로그래밍과 관련된 핵심 지식을 제공한다. 5장에서는 C 언어 프로그래밍으로 관심이 이동한다. 다음으로 U-Boot를 사용하여 리눅스 커널을 부팅하는 데 필요한 하드웨어 인터페이스의 최소 요소들을 설명한다. 5장~8장에서는 베어 메탈 환경에서 하드웨어 인터페이스 프로그래밍의 시리얼 포트, 인터럽트 컨트롤러, 리얼타임 클록과 NAND 플래시 컨트롤러에 초점을 맞춘다.

제2부는 U-Boot를 골드피시 플랫폼으로 포팅하는 방법이 기술되어 있다. 10장에서는 U-Boot를 사용하여 리눅스 커널과 안드로이드 시스템을 부팅한다. 이 책에 소개된 작업을 완료하면, U-Boot에 드라이버 프레임워크에서 하드웨어 복잡성을 분리하여 U-Boot 포팅을 처리할 수 있게 된다. 같은 기술을 리눅스 드라이버에 구현할 때 마찬가지로 사용할 수 있다. 또한 안드로이드 시스템을 부팅하기 위해 안드로이드 SDK 파일 이미지를 사용한다.

제3부에서는 부트로더로부터 커널의 파일 시스템으로 초점을 이동한다. 사용자 정의된 ROM과 안드로이드 디바이스를 구동하기 위해 가상 디바이스를 사용한다. 안드로이드 디바이스의 사용자 정의된 ROM을 최초로 빌드하는 과정을 설명하고 지원한다. 최신 디바이스와 부트로더 통합과 안드로이드 소스 트리에 있는 리눅스 커널을 지원하는 방법을 설명한다. 11장에서는 환경 설정 방법과 안드로이드 에뮬레이터 표준 빌드 절차를 상세하게 알아본다. 12장에서는 U-Boot와 리눅스 커널의 결합을 포함한 가상 드라이버를 위해 사용자 정의된 롬을 만들게 된다.


목차


누가 이 책을 읽어야 하나? | 이 책은 어떻게 구성되어 있는가?

제1부. 베어 메탈 프로그래밍
1장. 임베디드 시스템 프로그래밍 소개
_임베디드 시스템 개요
_베어 메탈 프로그래밍
_임베디드 시스템 배우기
_임베디드 시스템의 소프트웨어 계층
_도구 및 하드웨어 플랫폼
_가상 하드웨어와 실제 하드웨어의 차이점

2장. 내부 안드로이드 에뮬레이터
_가상 하드웨어 개요
_안드로이드 가상 장치 설정
_하드웨어 인터페이스
_시리얼
_타이머

3장. 개발 환경 설정
_호스트와 클라이언트 환경
_개발 환경 설정
_안드로이드 SDK 다운로드 및 설치하기
_ARM을 위한 GNU 툴체인 다운로드 및 설치하기
_통합 개발 환경
_당신의 첫 번째 ARM 프로그램
_바이너리로 빌드하기
_안드로이드 에뮬레이터에서 실행하기
_예제 프로젝트를 위한 Makefile

4장. 링커 스크립트 및 메모리 맵
_메모리 맵
_링커
__심볼 처리
__예 c04e1의 메인 프로그램
__.byte 지시어
__.align 지시어
__c04e1예제의 서브루틴
__재배치
__섹션 병합
__섹션 배치
_링커 스크립트
__링커 스크립트 예제
_RAM에서 데이터 초기화하기
__로드 주소 지정하기
__데이터를 램으로 복사하기

5장. C 언어 사용하기
_베어 메탈 환경에서 C 시작하기
__스택
__전역 변수
__읽기 전용 데이터
__시작 코드
_호출 규칙
__어셈블리어 코드에서 C 함수 호출하기
__C 코드에서 어셈블리 언어 함수 호출하기
_골드피시 시리얼 포트 지원
__데이터 버퍼 검사
__데이터 인풋과 아웃풋
__시리얼 함수들의 단위 테스트

6장. C 라이브러리 사용하기
_C 라이브러리 변형
__운영체제가 존재할 때 C 라이브러리 변형
__베어 메탈 시스템에서 C 라이브러리 변형
_Newlib C 라이브러리
_일반적인 스타트업 코드 순서
__CS3 링커 스크립트
_골드피시 플랫폼을 위한 사용자 정의 CS3 시작 코드
_시스템 호출 구현
_라이브러리 실행과 디버깅
_QEMU ARM Semihosting과 함께 Newlib 사용
__Newlib C에서 Semihosting 지원
__Semihosting 예제코드

7장. 예외 처리 및 타이머
_골드피시 인터럽트 컨트롤러
_가장 단순한 인터럽트 핸들러
__인터럽트 지원 함수
__가장 단순한 인터럽트 핸들러 구현
_중첩된 인터럽트 핸들러
__중첩된 인터럽트 핸들러 구현
__중첩 인터럽트 테스트와 프로세서 모드 스위치 발견하기
_시스템 호출/소프트웨어 인터럽트 테스트하기
_타이머
__골드피시 전용 타이머 함수들
__U-Boot API
_실시간 클록
__타이머와 RTC의 단위 테스트

8장. 골드피시에서 NAND 플래시 지원
_안드로이드 파일 시스템
_NAND 플래시 속성
_골드피시 플랫폼의 NAND 플래시 프로그래밍 인터페이스
_메모리 기술 장치 지원
_MTD API
__NAND 플래시를 지원하는 U-Boot API
__골드피시 NAND 플래시 드라이버 함수들
_NAND 플래시 프로그래밍 인터페이스 테스트 프로그램
__리눅스 커널의 NAND 플래시 정보
__NAND 플래시 테스트 프로그램

제2부. U-Boot
9장. U-Boot 포팅하기
_U-Boot 소개
_U-Boot 다운로드와 컴파일
_GDB로 U-Boot 디버깅하기
_골드피시 플랫폼에 U-Boot 포팅하기
__새로운 보드 생성
__프로세서 세부사항 수정
__보드 세부사항 수정
__디바이스 드라이버 수정
__시리얼 드라이버
__NAND 플래시 드라이버
__RTC 드라이버
__이더넷 드라이버

10장. 골드피시 커널을 부팅하기 위해 U-Boot 사용하기
_골드피시 커널 구축하기
_Prebuilt 툴체인과 커널 소스코드
_에뮬레이터에서 커널 실행과 디버깅
_NOR 플래시부터 안드로이드 부팅
__램디스크 이미지 생성하기
__플래시 이미지 생성하기
__플래시 이미지 부팅하기
__플래시 이미지의 소스-레벨 디버깅
_NAND 플래시로부터 안드로이드 부팅
__system.img 준비하기
__NAND 플래시로부터 부팅하기

제3부. 안드로이드 시스템 통합
11장. AOSP와 CyanogenMod 구축하기
_AOSP와 CyanogenMod 소개
_안드로이드 가상 디바이스 설정하기
_AOSP 안드로이드 에뮬레이터 빌드
__AOSP 빌드 환경
__AOSP 소스 다운로드하기
__AOSP 안드로이드 에뮬레이터 이미지 빌드하기
__AOSP 이미지 테스트하기
_CyanogenMod 안드로이드 에뮬레이터 빌드
__CyanogenMod 소스 다운로드하기
__CyanogenMod 안드로이드 에뮬레이터 빌드하기
__CyanogenMod 이미지 테스트하기

12장. 사용자 정의 안드로이드와 나만의 안드로이드 롬 만들기
_AOSP에서 새로운 하드웨어 지원하기
__AOSP 와 함께 커널 빌드하기
__AOSP와 함께 U-Boot 빌드하기
__NAND 플래시로부터 U-Boot과 함께 안드로이드 부팅하기
_CyanogenMod에서 새로운 하드웨어 지원하기
__CyanogenMod와 함께 커널 빌드하기
__U-Boot 빌드하고 CyanogenMod 부팅하기

부록
A. 이 책의 소스코드 빌드하기
_빌드 환경 설정하기
_가상 머신 설정하기
_소스코드 체계
_1부를 위한 소스코드
__커맨드 라인에서 빌드하고 테스트하기
__이클립스에서 빌드하고 테스트하기
_2부의 소스코드
_3부의 소스코드
__AOSP 빌드하기
__CyanogenMod 빌드하기

B. 이 책과 관련된 저장소 사용하기
_저장소(Repo)에 있는 자원들
__즉시 새 소스트리 동기화하기
_지역 매니페스트를 사용하여 Git Repositories 다운로드하기

교환 및 환불안내

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