책소개
프로그래머를 위한 임베디드 시스템 프로그래밍 입문서
임베디드 시스템 프로그래밍 입문서. 이 책은 임베디드 시스템을 개발하기 위한 기초적인 지식에서부터 최적화에 이르기까지의 내용을 정리한 것으로 임베디드 시스템의 개념과 프로그램 시작법, 메모리와 인터럽트, 애플리케이션, 운영체제와 최적화 기법을 설명한다.
책 뒤편에는 소프트웨어 개발 환경 만드는 방법과 GNU 소프트웨어 툴 빌드하기, 임베디드 리눅스 개발 환경 설정도 함께 담았다.
저자소개
저자_마이클 바(Michael Bar)
마이클 바는 전자장비의 소프트웨어 디자인 분야에서 독보적인 존재이다. 이와 관련하여 그는 미국 지방법원(U.S. District Court)에서 전문가로 활약하고 있고, PBS의 American Business Review에 출연한 적도 있고, 신문에 기사를 기고하기도 하였다. 그리고 40편 이상의 기술 문서를 작성하였고, 『Embedded Systems Dictionary』의 공동 저자이기도 하다. 3년 6개월 동안 「Embedded Systems Programming」 잡지의 편집 책임자로 있기도 하였다.
마이클이 초창기에 설계하고 작성한 임베디드 소프트웨어는 세계적으로 수만 개의 시스템에서 사용되고 있다. 간단한 전자장비에서부터 의료장비에까지 두루 사용되고 있다. 그리고 현재는 제품을 만드는 일보다는 사업을 하고 있다. 그는 Quantum Leaps, Inc.의 CEO이자 Netrino, LLC.의 창립자이다. 이들 두 회사는 개발자들이 더 나은 임베디드 소프트웨어를 작성할 수 있도록 돕는 역할을 하고 있다.
저자_ 앤소니 마샤(Anthony Massa)
앤소니 마샤(Anthony Massa)는 임베디드 소프트웨어 개발에서 10년 이상의 경력을 가지고 있다. 현재 사용되고 있는 다양한 장비 즉, 인공위성, 케이블 모뎀, 무선 라디오, 셋톱 박스와 head-end 전송장비 등의 소프트웨어 구조를 설계하는 일을 해 오고 있다.
또한 소프트웨어 개발 관련 잡지에 임베디드 소프트웨어 개발에 특화된 기사를 쓰고 있고, 『Embedded Software Development with eCos』 책의 공동 저자이기도 하다. 뿐만 아니라 Elintrix(http://www.elintrix.com)의 공동 창립자이자 소프트웨어 책임 기술자이다.
역자_오수형
학부에서는 천문학을 전공하고, 이 후에 전산학으로 방향을 바꾸었다. 응용 프로그램보다는 시스템 프로그래밍을 하고 싶었고, 이런 소망이 바탕이 되어 RTOS와 임베디드 리눅스를 하게 되었다. 임베디드 시스템을 만들면서는 TCP/IP 소스를 통독하는 기회도 가졌다.
현재는 소프트웨어 설계 분야쪽으로 외도를 하고 있다. 기회가 된다면 다시 임베디드 시스템 분야에서 뛰어난 개발자들과 경쟁을 하고 싶은 소망이 있다. 가끔 집에서 아이들과 함께 레고 마인드스톰을 가지고 놀면서 이 분야에 대한 미련을 버리지 않고 있다.
목차
역자서문
들어가며
서문
1장. 소개
임베디드 시스템이란
변화와 주제
임베디드 설계의 예
임베디드 소프트웨어 개발자
C 언어: 최소 공통 분모
하드웨어에 대한 간단한 설명
2장. 하드웨어 알아보기
큰 그림 이해하기
하드웨어의 기본
넓게 살펴보기
주변기기와의 통신법
프로세서 이해하기
외부 주변기기의 이해
하드웨어 초기화
3장. 임베디드 프로그램 시작하기
Hello, World!
LED 점멸 프로그램
무한 루프의 역할
4장. 컴파일, 링크와 로케이팅
빌드 절차
LED 점멸 프로그램 빌드하기
MakeFile의 개요
5장. 다운로드와 디버깅
LED 점멸 프로그램의 다운로드
리모트 디버거
에뮬레이터
기타 유용한 툴 소개
하드웨어 깊숙이 들여다 보기
6장. 메모리
메모리의 종류
직접 기억장치 접근
엔디안 문제
메모리 테스팅
메모리 내용의 검증
플래시 메모리
7장. 주변기기
제어 레지스터와 상태 레지스터
장치 드라이버의 기본 원칙
장치 드라이버의 설계
8장. 인터럽트
인터럽트 개론
인터럽트 맵
인터럽트 서비스 루틴(ISR)
인터럽트를 적용한 LED 점멸 프로그램
인터럽트에서의 핵심 사항 정리
9장. 통합 예제 애플리케이션
애플리케이션의 개요
시리얼 포트 작업
CLI 처리
10장. 운영체제
운영체제의 역사와 목적
스케줄러
태스크
태스크 동기화
메시지의 전달
기타 기능들
인터럽트 처리
실시간 운영체제의 특징
RTOS를 쓸 것인가, 말 것인가
추가 자료들
11장. eCos 운영체제 예제
eCos의 소개
태스크 메커니즘
뮤텍스 태스크 동기화
세마포어 태스크 동기화
메시지 전달 기법
eCos 인터럽트 다루기
12장. 임베디드 리눅스 운영체제 예제
임베디드 리눅스 소개
리눅스에서의 하드웨어 사용
태스크 매커니즘
뮤텍스 태스크 동기화
세마포어 태스크 동기화
메시지 전달
13장. 기능의 확장
일반적인 주변기기
크고 작은 모든 장치의 네트워킹
14장. 최적화 기법
효율적인 코드 만들기
코드 크기 줄이기
컴파일러 최적화의 문제들
메모리 사용량 줄이기
전력 절약 기법
C++의 영향 최소화하기
부록A
A. Corebell사의 LDS4000 개발 킷
B. 소프트웨어 개발 환경 만들기
윈도우 호스트 설치
리눅스 호스트 설치
예제 코드 설치
C. GNU 소프트웨어 툴 빌드하기
Extracting the Source Files
툴 체인 빌드하기
D. eCos 개발 환경 설정하기
eCos 빌드 환경
E. 임베디드 리눅스 개발 환경 설정하기
리눅스 빌드 환경 설정
임베디드 리눅스 예제
찾아보기