자바 밑에 리눅스를 실행시키는 실체는 무엇일까? 하드웨어 자체를 제어한다는 것은 어떤 의미인가? 이 호기심에 명쾌한 답을 주는 임베디드 전문 개발자 가이드 『안드로이드 임베디드 프로그래밍 깊게 들어가기』.
임베디드 컴퓨팅은 기존의 메인프레임과 데스크톱 기반의 컴퓨팅보다 더욱 중요한 역할을 하고 있다. 매우 다양한 환경에서 구현되며, OS가 탑재되지 않은 상태에서 C와 어셈블리어를 사용하여 응용 프로그래밍을 하는 환경뿐만 아니라, RTOS(REAL-TIME OPERATING SYSTEM)가 탑재된 경우도 빈번하다. 목적은 물론이고 하드웨어 아키텍처 환경도 다르다 보니, 표준화된 방법으로 임베디드 프로그래밍을 배우는 것은 매우 어려운 실정이다. 이 책은 모든 프로그래머가 손쉽게 인터넷상에서 얻을 수 있는 개발 환경을 제공하기 위해, 가상화 기술과 오픈소스 도구를 사용한다.
저수준 프로그래밍의 기반을 포함한 베어 메탈 프로그래밍과 안드로이드 시스템 프로그래밍으로 시작하는 이 책은 안드로이드 SDK 파일 시스템의 커스터마이즈로 나아간다. 또한 부트로더로부터 커널의 파일 시스템으로 초점을 이동하여 사용자 정의된 ROM과 안드로이드 디바이스를 구동하기 위해 가상 디바이스를 사용한다. 부트로더 통합과 리눅스 커널을 지원하는 방법을 다루는 부분은 책의 백미이다. 독자들은 모바일 디바이스 제조 레벨의 안드로이드 시스템 개발자들과 같은 완성된 그림을 갖게 될 것이다.
[인터넷 교보문고 제공]
저자소개
저자 : 로저 예
저자 로저 예 (ROGER YE)는 임베디드 시스템과 최신 기술에 대해 관심이 많은 임베디드 시스템 프로그래머이다. 모토로라, 에머슨, 인텔에서 근무했으며 모토로라와 에머슨에서 모바일 기기와 통신 인프라에 대한 임베디드 시스템 프로젝트에 참여했다. 로저는 현재 인텔 시큐리티에서 안드로이드 애플리케이션즈팀을 이끌며 엔지니어링 매니저로 활약하고 있다. 로저는 지금 그의 아내 보 콴과 딸 유신 예와 함께 중국에 살고 있다. GITHUB에서 그와 관련한 더 많은 정보를 찾을 수 있다.
HTTPS://GITHUB.COM/SHUGAOYE/
역자 : 이상훈
저자 이상훈은 임베디드 전문 프로그래머. 현재 KOITT(한국 아이티 기술)에서 XILINX ZYNQ FPGA, TI DSP, MCU 프로그래밍 및 회로 설계 전문가 과정 등을 맡고 있으며 RC 전투함, RC 자동차, RC 전투기 등의 프로젝트를 진행하고 있다. 수년간 역자가 지도한 주요 과정들은 임베디드 리눅스 기반 IOT/WEARABLE 디바이스 개발자 양성 과정(BIT교육센터), 무선사업부 IOT 교육(삼성전자), 박사 대상 ANDROID NDK 기반의 암호학 교육(국민대), 임베디드 전문가 장기 과정, 3D 게임 프로그래밍 장기 과정(이상 HEST교육센터), OPENGL 교육(그린정보통신), R 통계 프로그래밍, WEBGL 프로그래밍, 리눅스 디바이스 드라이버 기반의 해킹 트레이스(이상 KG ITBANK), CORTEX-R5F MCU 기반 선박 엔진 제어, XILINX ZYNQ FPGA, TI DSP, MCU 프로그래밍 및 회로 설계 전문가 과정, TI CORTEX-R5F REAL-TIME SAFETY MCU 제어, TI TMS320C6678 MULTI-CORE DSP 신호 처리, TI AM5728 HETEROGENEOUS ARCHITECTURE, TI TMS320F28069 REAL-TIME DSP MOTOR CONTROL, C/C++로 직접 구현하는 통계학(이상 KOITT) 등이다. 최근에는 임베디드 관련서 번역 및 집필을 다수 진행 중이다. HTTP://CAFE.NAVER.COM/HESTIT
역자 : 김은혜
역자 김은혜는 프로그래머. 로봇 알고리즘, 통계 서버, 빅데이터 엔진 등 다양한 분야에서 시스템 프로그래밍을 10년 넘게 해왔다. 역자는 이 책 <안드로이드 임베디드 프로그래밍 깊게 들어가기>를 C, C++ 혹은 JAVA에 익숙하지만 펌웨어 분야를 처음 접하는 프로그래머들에게 적극 추천한다. 아울러 처음부터 완전한 펌웨어 시스템을 구축해보고 싶은 사람들에게도 매우 유익할 것이라 말한다. 더욱이 안드로이드 리눅스 커널을 구축하는 내용이라 가치가 높다고 부연했다.
목차
누가 이 책을 읽어야 하나? | 이 책은 어떻게 구성되어 있는가?
제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 링커 스크립트
_골드피시 플랫폼을...(하략)
출판사 서평
이제 시스템 환경에 구애받지 말고 임베디드 프로그래밍으로 깊게 들어가자
이 책은 임베디드 시스템 프로그래밍의 전반적인 분야를 논의한다. 기본적인 베어 메탈 프로그래밍부터 부트로더에서 안드로이드 시스템 부팅까지 일반적인 프로그래밍 지식의 제공뿐 아니라 컴파일러를 개발하고 디버깅 기술에도 초점을 맞추고 있다. 목표는 탄탄한 기초를 다질 수 있게 임베디드 시스템 프로그래밍의 기본적인 지식을 전하여, 좀 더 전문적인 영역으로 나아갈 수 있는 통로를 제공하는 것이다. 이 책은 수준에 따라 원하는 장을 읽고 하위 주제를 탐구하는 방식으로 선택하여 읽기를 권한다. 책은 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와 리눅스 커널의 결합을 포함한 가상 드라이버를 위해 사용자 정의된 롬을 만들게 된다.
네티즌 리뷰
등록된 리뷰가 없습니다. 이 책의 리뷰는 블로그에서 작성하실 수 있습니다.
'(NAMGUNGEUN)' 카테고리의 다른 글
안드로이드 앱 만들기 하루 만에 배우는 (0) | 2017.12.11 |
---|---|
임베디드 안드로이드 안드로이드 포팅, 확장, 커스터마이징하기 (0) | 2017.12.11 |
ARM 임베디드시스템 FIRMWARE RTOS 완전정복 실전 (0) | 2017.12.11 |
임베디드 프로그래밍 C코드 최적화 (0) | 2017.12.11 |
NEW JAVA 언어 입문 기초편 (0) | 2017.12.11 |