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

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

$35.45
Description
자바 밑에 리눅스를 실행시키는 실체는 무엇일까? 하드웨어 자체를 제어한다는 것은 어떤 의미인가? 이 호기심에 명쾌한 답을 주는 임베디드 전문 개발자 가이드 『안드로이드 임베디드 프로그래밍 깊게 들어가기』.

임베디드 컴퓨팅은 기존의 메인프레임과 데스크톱 기반의 컴퓨팅보다 더욱 중요한 역할을 하고 있다. 매우 다양한 환경에서 구현되며, OS가 탑재되지 않은 상태에서 C와 어셈블리어를 사용하여 응용 프로그래밍을 하는 환경뿐만 아니라, RTOS(real-time operating system)가 탑재된 경우도 빈번하다. 목적은 물론이고 하드웨어 아키텍처 환경도 다르다 보니, 표준화된 방법으로 임베디드 프로그래밍을 배우는 것은 매우 어려운 실정이다. 이 책은 모든 프로그래머가 손쉽게 인터넷상에서 얻을 수 있는 개발 환경을 제공하기 위해, 가상화 기술과 오픈소스 도구를 사용한다.

저수준 프로그래밍의 기반을 포함한 베어 메탈 프로그래밍과 안드로이드 시스템 프로그래밍으로 시작하는 이 책은 안드로이드 SDK 파일 시스템의 커스터마이즈로 나아간다. 또한 부트로더로부터 커널의 파일 시스템으로 초점을 이동하여 사용자 정의된 ROM과 안드로이드 디바이스를 구동하기 위해 가상 디바이스를 사용한다. 부트로더 통합과 리눅스 커널을 지원하는 방법을 다루는 부분은 책의 백미이다. 독자들은 모바일 디바이스 제조 레벨의 안드로이드 시스템 개발자들과 같은 완성된 그림을 갖게 될 것이다.
저자

로저예

저자로저예(RogerYe)는임베디드시스템과최신기술에대해관심이많은임베디드시스템프로그래머이다.모토로라,에머슨,인텔에서근무했으며모토로라와에머슨에서모바일기기와통신인프라에대한임베디드시스템프로젝트에참여했다.로저는현재인텔시큐리티에서안드로이드애플리케이션즈팀을이끌며엔지니어링매니저로활약하고있다.로저는지금그의아내보콴과딸유신예와함께중국에살고있다.GitHub에서그와관련한더많은정보를찾을수있다.
https://github.com/shugaoye/

목차

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

제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라이브러리변형
_NewlibC라이브러리
_일반적인스타트업코드순서
__CS3링커스크립트
_골드피시플랫폼을위한사용자정의CS3시작코드
_시스템호출구현
_라이브러리실행과디버깅
_QEMUARMSemihosting과함께Newlib사용
__NewlibC에서Semihosting지원
__Semihosting예제코드

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

8장.골드피시에서NAND플래시지원
_안드로이드파일시스템
_NAND플래시속성
_골드피시플랫폼의NAND플래시프로그래밍인터페이스
_메모리기술장치지원
_MTDAPI
__NAND플래시를지원하는U-BootAPI
__골드피시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)에있는자원들
__즉시새소스트리동기화하기
_지역매니페스트를사용하여GitRepositories다운로드하기

출판사 서평

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

이책은임베디드시스템프로그래밍의전반적인분야를논의한다.기본적인베어메탈프로그래밍부터부트로더에서안드로이드시스템부팅까지일반적인프로그래밍지식의제공뿐아니라컴파일러를개발하고디버깅기술에도초점을맞추고있다.목표는탄탄한기초를다질수있게임베디드시스템프로그래밍의기본적인지식을전하여,좀더전문적인영역으로나아갈수있는통로를제공하는것이다.이책은수준에따라원하는장을읽고하위주제를탐구하는방식으로선택하여읽기를권한다.책은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와리눅스커널의결합을포함한가상드라이버를위해사용자정의된롬을만들게된다.