Top

초보 개발자를 위한 임베디드 기본서 세트

  • 지은이Daniel W. Lewis, Jack Ganssle, Michael Barr
  • ISBN : 8989975964
  • 40,000원
  • 2006년 07월 10일 펴냄
  • 페이퍼백 | 938쪽 | 190*255mm
  • 시리즈 : 임베디드 시스템

책 소개

임베디드를 처음 시작하려는 초보 개발자가 꼭 갖춰야 할 두 권의 책이 세트로 묶였다
“임베디드 프로그래밍 입문”으로 기초를 다지고, 알고 싶고 필요한 사항은 “임베디드 시스템 대사전”에서 찾아보자.

1)『임베디드 프로그래밍 입문: C와 어셈블리로 확실히 배우는
2)『임베디드 시스템 대사전

“임베디드 프로그래밍 입문(부제: C와 어셈블리로 확실히 배우는)”은 컴퓨터 조직과 어셈블리어 프로그래밍에 대한 전통적인 대학 교재의 대안으로 자리를 확고히 할만한 신선한 내용으로 가득 차 있다. 이 책은 어셈블리를 실제 쓰이는 그대로-작거나 빠르거나, 또는 C와 같은 고급 언어로 작성한 메인 프로그램에서 부르는 특수목적의 루틴을 구현하기 위한 용도로- 소개한다. 임베디드 소프트웨어 맥락에서 멀티스레드 프로그래밍, 선점형과 비선점형 시스템, 공유 자원, 스케줄링 등을 설명함으로써 이후 배워나갈 과정(운영 체제, 실시간 시스템, 네트워킹, 그리고 마이크로프로세서 기반 설계 등)에 대한 확고한 기초를 제공한다.

“임베디드 시스템 대사전”은 임베디드 시스템에서 가장 많이 쓰이는 2800여 개 용어의 뜻과 용법을 설명해놓은 임베디드 시스템 전문가들의 필독서다. 전문적인 기술 지식이 많지 않아도 쉽게 읽을 수 있도록 단어의 뜻을 간략하게 정의했다. 또 임베디드뿐 아니라 컴퓨터분야를 포괄하는 많은 용어를 해설하고 재치있는 유머도 곁들였다. 다양한 분야를 망라한 임베디드 시스템 대사전은 늘 곁에 두고 펼쳐보고 싶은 여러분의 친구가 돼줄 것이다.

각 용어 정의마다 다음과 같은 내용도 함께 볼 수 있다.
▣ 발음 ▣ 약어 ▣ 대체 용어 ▣ 관련 용어
▣ 예제 ▣ 다이어그램, 스키매틱, 그림
▣ 공식 ▣ 예제 코드 ▣ 추가 자료

저자/역자 소개

『프로그래밍 입문: C와 어셈블리로 확실히 배우는』

[ 저자 소개 ]

Daniel W. Lewis dlewis@scu.edu

Syracuse University에서 공학박사 학위를 받았으며, Santa Clara University의 Computer Engineering 학과 설립을 주도했고 현재 학과장으로 재직 중이다. 재직 중 학부생의 co-op과 유학 프로그램, 전문직 종사자를 위한 대학원 과정, 학제간 부전공 과정인 IT와 사회학 과정을 개설했으며 상당히 좋은 반응을 얻고 있다. 대학에 부임하기 전에는 GE에서 6년간 근무했으며, 이후 Bay Area 등 여러 회사에서 기술 자문으로 활동했다.


[ 역자 소개 ]

김기주

포항공과대학교 컴퓨터 공학과와 동 대학원을 졸업한 후 지금은 임베디드 소프트웨어를 개발하고 있다. 임베디드 시스템과 자바, 소프트웨어 개발 방법론에 관심이 많으며 <월간 마이크로소프트웨어> 등에 디지털 TV, 프로그래밍 방법 관련 기사를 기고하기도 했다.


『임베디드 시스템 대사전』

[ 저자 소개 ]

Jack Ganssle


Jack Ganssle은 Embedded Systems Programming지에서 Break Points 컬럼을 맡아서 10년이 넘도록 글을 기고해 왔으며 이 잡지의 기술부 편집진이기도 하다. 그는 전자 공학과 관련하여 두 권의 책(The Art of Programming Embedded Systems와 The Art of Designing Embedded Systems)을 집필했으며 항해와 관련한 책(Go West : The 1992 Singlehanded Transatlantic Race)도 썼다.

Jack은 1970년대 초반에 구식 8008 프로세서를 써서 임베디드 시스템을 개발하면서 이 분야에 발을 들였다. 그 이후 그는 3개의 전자 회사를 설립해서 외부에 팔았다. Jack은 수백 개가 넘는 제품의 개발 작업에 실제로 참여하거나 관리를 맡았다. 개발에 참여했던 제품으로는 인-서킷 에뮬레이터, 수중 항법 장치, 철강 두께 측정기, 농업용 측정 기구, 백악관 보안 시스템, 크로스 컴파일러 및 수많은 정부 비밀 시스템들이 있다. 그는 세계 여러 곳에서 강의를 하고 있다.


Michael Barr

Michael Barr는 1997년부터 Embedded Systems Programming지에서 기고를 해왔으며 1999년부터는 편집자로 일했다. 현재 이 잡지사에서 편집 부장으로 근무하고 있다. 그가 임베디드 소프트웨어 개발에 관련해서 쓴 책인 Programming Embedded Systems in C and C++는 수만 명의 엔지니어들에게 소프트웨어 개발에 관련된 내용을 가르쳐 주었으며 여러 나라어로 번역됐다.

Michael은 메릴랜드 대학에서 강사로도 일하고 있으며 임베디드 시스템 컨퍼런스에서도 인스트럭터와 어드바이저 역할을 맡고 있다. 그가 만든 소프트웨어는 인공 위성 기지국에서부터 물리 치료 기기에 이르기까지 전 세계에 퍼져 있는 수 백만 개의 시스템에서 쓰이고 있다. Netrino Consultant Network를 통해서 Michael은 설계에 관한 조언 및 교육 자료를 제공하고 있다. 그는 전자 공학으로 석사 및 학사 학위를 갖고 있다.


[ 역자 소개 ]

전동환


서울대학교 컴퓨터 공학과를 졸업하고 한국 MDS에서 순수 국산 RTOS인 Velos를 개발하고 있다. 임베디드 시스템 및 RTOS 관련 강좌를 다수 진행했으며, <월간 마이크로 소프트웨어>, <월간 임베디드 월드> 등에 RTOS관련 기사를 기고하기도 했다. 번역서로 현재 에이콘출판사의 임베디드 시스템 프로그래밍 시리즈 에디터로도 활동하고 있다.

목차

목차
  • 『프로그래밍 입문: C와 어셈블리로 확실히 배우는』
  • 1장 소개
    • 1.1 임베디드 시스템이란 무엇인가?
    • 1.2 임베디드 소프트웨어에만 특징적인 디자인 목표는 무엇인가?
    • 1.3 “실시간”이 의미하는 바는 무엇인가?
    • 1.4 “멀티태스킹”이 의미하는 바는 무엇인가?
    • 1.5 임베디드 프로세서는 얼마나 강력한가?
    • 1.6 어떤 프로그래밍 언어를 사용하는가?
    • 1.7 “실시간 커널”이란 무엇인가?
    • 1.8 임베디드 애플리케이션 제작은 왜 특별한가?
    • 1.9 보통 임베디드 프로그램의 크기는 얼마나 되는가?
    • 1.10 이 책에서 사용하는 소프트웨어
  • 2장 데이터 표현
    • 2.1 고정 정밀도 이진수
      • 2.1.1 자릿수 체제
      • 2.1.2 2진수를 10진수로 바꾸는 법
      • 2.1.3 10진수를 2진수로 바꾸는 법
      • 2.1.4 카운팅
      • 2.1.5 고정 정밀도와 오버플로우
      • 2.1.6 16진수 표현
    • 2.2 정수의 2진 표현
      • 2.2.1 부호 있는 정수
      • 2.2.2 같은 크기 정수의 양수와 음수 표현
      • 2.2.3 2의 보수 숫자의 해석
      • 2.2.4 범위와 오버플로우에 대해서 한 번 더
      • 2.2.5 2의 보수와 하드웨어 복잡도
    • 2.3 실수의 2진 표현
      • 2.3.1 고정 소수점 표현
      • 2.3.2 범용 16.16 포맷의 고정 소수점
      • 2.3.3 범용 32.32 포맷의 고정 소수점
      • 2.3.4 부동 소수점 표현
    • 2.4 텍스트의 ASCII 표현
    • 2.5 BCD
  • 3장 C 최대한 활용하기
    • 3.1 정수 데이터 타입
    • 3.2데이터 타입 섞어 쓰기
    • 3.3 유용한 TYPEDEF와 #DEFINE
    • 3.4 메모리에서의 비트 조작
      • 3.4.1 비트 검사
      • 3.4.2 비트 설정, 클리어, 그리고 반전
      • 3.4.3비트 추출
      • 3.4.4 비트 삽입
    • 3.5 I/O 포트에서의 비트 조작
      • 3.5.1 쓰기 전용 I/O 포트
      • 3.5.2 읽기와 쓰기로 구별하는 포트
      • 3.5.3 쓰는 순서로 구별하는 포트
      • 3.5.4 쓰는 데이터 비트의 값으로 구별하는 포트
    • 3.6 메모리-맵드 I/O 장치의 액세스
      • 3.6.1 포인터를 통한 데이터 액세스
      • 3.6.2 배열, 포인터, 그리고 “주소” 연산자
    • 3.7 구조체
      • 3.7.1 팩드 구조체
      • 3.7.2 비트 필드
    • 3.8 가변 액세스
      • 3.8.1 객체의 주소를 캐스팅
      • 3.8.2 유니온
  • 4장 프로그래머 관점에서의 컴퓨터 구조
    • 4.1 메모리
    • 4.2 CPU
      • 4.2.1 ALU
      • 4.2.2 기타 레지스터
      • 4.2.3 제어 유닛
    • 4.3 입출력 (I/O)
    • 4.4 인텔 아키텍처 개요
      • 4.4.1 명령어 포맷
      • 4.4.2 명령어 오퍼랜드
      • 4.4.3오퍼랜드 제약사항
      • 4.4.4 레지스터
      • 4.4.5 스택
    • 4.5 인텔 리얼 모드 아키텍처
      • 4.5.1 세그먼티드 어드레싱
      • 4.5.2 주소 지정 방식
    • 4.6 인텔 보호 모드 아키텍처
      • 4.6.1 세그먼트 레지스터와 GDT
      • 4.6.2 플랫 메모리 모델
      • 4.6.3 주소 지정 방식
    • 4.7 오퍼랜드와 주소 크기 오버라이드 프리픽스
    • 4.8 인텔 데이터 조작 명령어
      • 4.8.1 데이터 이동, 스택, 그리고 I/O 명령
      • 4.8.2 산술 연산 명령어
      • 4.8.3 비트 연산 명령어
      • 4.8.4 시프트 명령어
  • 5장 C와 어셈블리 섞어 쓰기
    • 5.1 어셈블리 프로그래밍
    • 5.2 레지스터 사용 관례
    • 5.3 전형적인 주소 지정 방식
      • 5.3.1 상수 주소 데이터 액세스
      • 5.3.2 변수 주소 데이터 액세스
    • 5.4 명령어 실행 순서
      • 5.4.1 복합 조건식
      • 5.4.2 If?Then?Else 문
      • 5.4.3 루프
      • 5.4.4 문자열 명령어를 이용한 더 빠른 루프
    • 5.5 프로시저 호출과 복귀
    • 5.6 파라미터 전달
    • 5.7 파라미터 읽기
    • 5.8 모든 것을 값으로 전달
    • 5.9 임시변수
  • 6장 I/O 프로그래밍
    • 6.1 인텔 I/O 명령어
    • 6.2 동기화, 전송 속도, 그리고 대기 시간
    • 6.3 폴링 대기 루프
    • 6.4 인터럽트-드리븐 I/O
      • 6.4.1 하드웨어 응답
      • 6.4.2 ISR
      • 6.4.3 PIC
      • 6.4.4 버퍼와 큐
      • 6.4.5 어셈블리로 인터럽트 서비스 루틴 작성하기
      • 6.4.6 C로 인터럽트 서비스 루틴 작성하기
      • 6.4.7 NMI
      • 6.4.8 소프트웨어 인터럽트
      • 6.4.9 예외
    • 6.5 DMA
      • 6.5.1이중 버퍼링
    • 6.6 비교
  • 7장 병행 소프트웨어
    • 7.1 포그라운드/백그라운드 시스템
      • 7.1.1 스레드 상태와 직렬화
      • 7.1.2 지연시간 관리
      • 7.1.3 인터럽트 초과 실행 방지
      • 7.1.4 작업을 백그라운드로 이동
    • 7.2 멀티스레드 프로그래밍
      • 7.2.1 독립된 스레드의 병행 실행
      • 7.2.2 문맥 전환
      • 7.2.3 비선점형 (협조적) 멀티태스킹
      • 7.2.4 선점형 멀티태스킹
    • 7.3 공유 자원과 크리티컬 섹션
      • 7.3.1 인터럽트 금지
      • 7.3.2 태스크 전환 금지
      • 7.3.3 스핀 락
      • 7.3.4 뮤텍스
      • 7.3.5 세마포어
  • 8장 스케줄링
    • 8.1 스레드 상태
    • 8.2 대기 스레드
    • 8.3 문맥 전환
    • 8.4 라운드 로빈 스케줄링
    • 8.5 우선순위 기반 스케줄링
      • 8.5.1 우선순위 반전
      • 8.5.2 우선순위 상속 프로토콜
      • 8.5.3 우선순위 상한 프로토콜
    • 8.6 우선순위 할당
      • 8.6.1 데드라인-드리븐 스케줄링
      • 8.6.2 주기 단조 스케줄링
    • 8.7 데드락
    • 8.8 와치독 타이머
  • 9장 메모리 관리
    • 9.1 C에서의 객체
    • 9.2 스코프
      • 9.2.1 지역 스코프
      • 9.2.2 전역 스코프
    • 9.3 수명
    • 9.4 자동 할당
      • 9.4.1 저장 클래스 “레지스터”
    • 9.5 정적 할당
    • 9.6 정적 할당과 자동 할당을 구별하기 위한 세 가지 프로그램
      • 9.6.1 객체 생성
      • 9.6.2 객체 초기화
      • 9.6.3 객체 파괴
    • 9.7 동적 할당
      • 9.7.1 단편화
      • 9.7.2 메모리 할당 풀
    • 9.8 가변 크기 자동 할당
      • 9.8.1 가변 크기 배열
    • 9.9 재귀 함수와 메모리 할당
    • 10장 공유 메모리
    • 10.1 공유 객체 인식
      • 10.1.1 공유 전역 데이터
      • 10.1.2 공유 사적 데이터
      • 10.1.3 공유 함수
    • 10.2 재진입 가능 함수
    • 10.3 읽기 전용 데이터
      • 10.3.1 Type Qualifier "const"
    • 10.4 피해야 할 코딩 습관
      • 10.4.1 내부 상태를 지역 정적 객체에 보관하는 함수
      • 10.4.2 지역 정적 객체의 주소를 리턴하는 함수
    • 10.5 공유 메모리 액세스
      • 10.5.1 프로세서 워드 크기의 영향
      • 10.5.2 읽기 전용과 쓰기 전용 액세스
      • 10.5.3 타입 수식어 “Volatile”
  • 11장 시스템 초기화
    • 11.1 메모리 레이아웃
    • 11.2 CPU
      • 11.2.1 플랫 메모리 모델 설정
      • 11.2.2 보호 모드로 전환
    • 11.3 C 런타임 환경
      • 11.3.1 롬에서 램으로 복사
      • 11.3.2 초기값 없는 정적 변수를 0으로 초기화
      • 11.3.3 힙 설정
    • 11.4 시스템 타이머
      • 11.4.1 타이머 0: 타이머 틱
      • 11.4.2 타이머 1: 메모리 리프레쉬
      • 11.4.3 타이머 2: 스피커 주파수
    • 11.5 인터럽트 시스템
      • 11.5.1 IDT 초기화
      • 11.5.2 8259 PIC 초기화
      • 11.5.3 새로운 ISR의 설치
  • 부록 A CD-Rom의 내용
  • 부록 B DJGPP 컴파일러
  • 부록 C NASM 어셈블러
  • 부록 D 프로젝트 프로그래밍
  • 부록 E libepc 라이브러리

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안