Top

임베디드 시스템 펌웨어 분석

  • 원서명Embedded Systems Firmware Demystified (ISBN 1578200997)
  • 지은이Ed Sutter
  • 옮긴이성원호
  • ISBN : 8989975085
  • 40,000원
  • 2002년 12월 10일 펴냄 (절판)
  • 페이퍼백 | 384쪽 | 180*235mm
  • 시리즈 : 임베디드 시스템

판매처

  • 현재 이 도서는 구매할 수 없습니다.

책 소개

소스 파일은 아래 깃허브 페이지에서 내려 받으실 수 있습니다.
(https://github.com/AcornPublishing/firmware)

<책 소개>
임베디드 마이크로 프로세서를 바탕으로 한 시스템을 처음부터 구성해 보라. 마이크로 프로세서에 전원이 인가된 최초 몇 초 동안 하드웨어와 펌웨어의 상호작용을 탐험해봄으로써 여러분은 하드웨어와 소프트웨어를 포괄적으로 이해할 수 있다. 소프트웨어와 하드웨어가 서로 만나는 이러한 근본적인 문제를 다루다 보면 응용프로그램 개발과 임베디드 시스템 개발의 차이점을 알 수 있을 것이다.

현장에서 검증된 완전한 솔루션을 이용해서 초기의 핵심 개발과정을 정복하자. 이 책을 통해 임베디드 시스템을 처음 시작할 때 겪어야 하는 값진 경험을 얻을 수 있다. 이 책은 어셈블리 언어로 시작하는 기본적인 부팅, 예외처리, 플래시 드라이버, 플래시 파일 시스템, 시리얼과 이더넷 연결, 네트워크 부팅 등 폭 넚은 주제를 다루고 있다. 간단한 회로도를 이용해서 CPU가 메모리에서 어떻게 명령을 읽어오는지 배우고, FLASH와 EPROM, SRAM과 DRAM, 마이크로 컨트롤러와 마이크로프로세서, 데이터 버스와 어드레스 버스의 정확한 개념을 알게 될 것이다.


[ CD-Rom ]

부록 CD는 부트 플랫폼의 소스코드와 사용자 문서, 사용제한이 없는 GNU X-Tools를 포함하고 있다. 이들 툴은 21개 프로세서에 사용할 수 있는 크로스-어셈블러, 크로스-컴파일러, 시뮬레이터, 보드 지원 라이브러리 등을 포함한다.

저자/역자 소개

<저자 소개>

Ed Sutter
는 1981년 AT & T Bell Labs에서 그의 화려한 경력을 쌓기 시작했다. 현재 Lucent의 선임 기술자 멤버인 그는 1983년부터 임베디드 시스템 분야에 종사하고 있다. 그는 8085 프로세서를 시작으로 최신 CPU 아키텍쳐에 이르기까지 많은 종류의 시스템을 개발했다.
그의 경험은 하드웨어 개발과 펌웨어 소프트웨어 개발에 이르기까지 다양하다. 임베디드 시스템에서 C와 어셈블리 언어로 프로그램하는 것이 주업무지만, WIN32와 UNIX 기반의 프로그램도 능숙하다. 최근에는 직접 개발한 펌웨어 툴을 주제로 Embedded Systems Programming 과 Circuit Cellar Online 매거진에 기고했다.


<역자 서문>

이 책 만큼 임베디드 시스템을 폭 넓게 자세히 다룬 책을 본 적이 없다. 요즘은 인터넷을 통해 다양하고 유용한 임베디드 시스템용 소스코드를 손쉽게 구할 수 있지만, 소스코드만 가지고 전반적인 임베디드 시스템을 이해하는 데는 한계가 있으며, 시간도 많이 걸린다.

이 책은 많은 개발자의 관심을 끌고 있는 최근의 중요한 주제를 다루고 있다. 사실 이런 중요성 때문에 번역에 많은 부담을 느꼈다. 좋은 내용을 역자가 서툴게 전달할 수도 있다는 우려도 있었지만, 책의 내용이 너무나도 탐나서 비장한 각오로 번역에 임했다. 국내는 물론이고 세계를 통틀어도 임베디드 시스템을 주제로 한 건실한 책은 구경하기 매우 어려운 현실이다. 그럴수록 책의 값진 이미지에 손상이 가지 않도록 최선을 다했다.

이 책을 공부하는 독자들에게 당부하고 싶은 것이 있다. 이 책의 핵심은 CD에 들어있다. 사실 프로그래밍이라는 것은 모든 것을 소스코드로 말한다. 어떤 의미에서는 책이 필요없을 수도 있지만, 앞서 말한 대로 코드만 보고 이해하는 데는 뛰어난 프로그래머가 아니고는 많은 시간이 걸린다. 이 책은 그런 시간 낭비를 줄여주는 지침서가 될 수 있다. 소스코드를 전부 책에 게재한다는 것은 지면의 제약 때문에 불가능하다. 따라서 별도로 설명이 필요한 핵심적인 코드만 게재했다. 하지만 책에 없는 코드라고 해서 중요하지 않은 것은 아니다. 책을 공부하면서 CD에 있는 관련 소스코드를 반드시 공부하기 바란다. 책에서 설명하는 코드의 내용을 이해할 수 있으면 나머지 코드를 이해하는 데도 어렵지 않을 것이다. 그리고 CD에서 제공한 GNU X-Tools를 PC에 설치했다면 실제로 컴파일하고 빌드해 볼 것을 권한다. 코드를 시험해볼 수 있는 실제 타겟 보드가 있다면 말 할 것도 없이 좋다. 여러분이 변경한 코드를 실제 타겟 시스템에서 시험해보는 것보다 효과적인 공부는 없을 것 이기 때문이다. 처음부터 시험해볼 타겟 보드가 없더라도 이 책을 다 공부하면 여러 분이 가지고 있는 타겟보드용으로 소프트웨어를 포팅할 수 있을 것이다. 마지막으로 이 책의 내용을 부디 여러분의 것으로 만들어서 기술발전에 도움이 되길 바란다.

처음 계획했던 것보다 상당히 오랜 시간이 지난 뒤에야 이 책이 나오게 됐다.
그동안 많은 도움을 주신 에이콘출판사 편집팀 여러분과, 정완재 편집장님 그리고 불철주야 뛰어다니시는 권성준 사장님께 감사 드립니다. 번역에 많은 도움을 주신 민붕식 선생님께도 감사드립니다. 마지막으로 불평없이 항상 나의 뒷바라지를 해준 아내 오현과 두 딸아이 민선, 지현에게 사랑의 마음을 보냅니다.

성원호 (現 임베디드 시스템 컨설팅 회사 디오이즈 www.dioiz.com 대표)
whsung@dioiz.com

목차

목차
  • 서문
    • - 이 책을 읽는 사람은?
    • - 이 책이 다루는 것은?
    • - 규약
    • - 소스코드
    • - 감사의 글
  • 1장 견고한 시작
    • - 시스템 요구사항
    • - 중앙 연산 장치
    • - 시스템 메모리
    • - CPU 관리
    • - 시리얼 포트 드라이브
    • - 이더넷 인터페이스
    • - 플래시 디바이스 옵션
    • - CPU/메모리 인터페이스
    • - 요약
  • 2장 시작하기
    • - PC에서는 어떻게 하는가?
    • - 라이브러리 구축
    • - 업 프론트
    • - 런-타임
    • - 펌웨어 개발자를 위한 하드웨어 무결성 시험
    • - 요약
  • 3장 MicroMonitor 소개
    • - 임베디드 시스템 부트 플랫폼
    • - 요약
  • 4장 어셈블리 언어
    • - 리셋 직후
    • - I/O초기화
    • - 예외 핸들러 Exception Handler 구성
    • - 요약
  • 5장 명령 라인 인터페이스
    • - CLI 기능
    • - CLI 자료 구조와 명령어 테이블
    • - CLI 처리
    • - 명령어 이름 바로 밑의 함수
    • - 쉘 변수와 심벌 처리
    • - 명령 라인 방향지정 Command-Line Redirection
    • - 명령 라인 편집과 히스토리 기능
    • - 사용자 레벨
    • - 암호 보호
    • - 요약
  • 6장 플래시 메모리 인터페이스
    • - 인터페이스 함수
    • - 플래시 드라이브 프론트 엔드
    • - 요약
  • 7장 플래시 파일 시스템
    • - 플랫폼에서 TFS 역할
    • - TFS 설계기준
    • - 자동 부팅 Auto bootable파일
    • - 상위 레벨의 세부사항
    • - TFS가 요구하는 플래시 영역 오버헤드
    • - 조각 모음
    • - TFS 구현
    • - 파일 추가와 삭제
    • - 로드할 것인가 말 것인가
    • - 파일 압축 풀기
    • - XIP, Execute-In-Place
    • - 요약
  • 8장 스크립트 실행
    • - 스크립트 실행기
    • - 조건 분기 Conditional Branching
    • - 예제 몇 가지
    • - 요약
  • 9장 네트워크 연결
    • - 이더넷
    • - ARP
    • - IP
    • - ICMP
    • - UDP와 TCP
    • - DHCP/BOOTP
    • - 임베디드 시스템에 적용
    • - 요약
  • 10장 파일/ 데이터 전송
    • - Xmodem
    • - TFTP
    • - 필드 업그레이드 기능
    • - 요약
  • 11장 응용프로그램 추가
    • - 다른 메모리맵
    • - 간편한 시작
    • - 응용프로그램 스택 구성
    • - 모니터 API로 연결하기
    • - 응용프로그램의 Start()함수
    • - 응용프로그램의 main()함수
    • - 응용프로그램 지향적 드라이버
    • - 모니터의 CLI를 사용하는 응용프로그램 CLI
    • - 응용프로그램 CLI를 통한 스크립트 실행
    • - 요약
  • 12장 모니터 기반 디버깅
    • - 다른 종류의 디버깅 철학
    • - 중지점 Breakpoint
    • - 심벌릭 기능 추가
    • - 메모리 표시
    • - 메모리 C 구조체 겹치기
    • - 스택 추적
    • - 스택 오버플로우 점검
    • - 시스템 분석 System Profilling
    • - 요약
  • 13장 MicroMonitor 포팅
    • - 소스코드 디렉터리 구조
    • - 메이크파일 Makefile
    • - 설정 헤더파일
    • - 포팅 시작
    • - 요약
  • 결론
  • Appendix A 호스트 기반의 툴 구축
    • - 호스트상의 파일 인터페이스
    • - PC상의 시리얼 포트 인터페이스
    • - PC기반의 UDP 트랜잭션 : moncmd
    • - 요약
  • Appendix B RTOS의 개요
    • - 스케줄러 Scheduler
    • - 태스크, 스레드, 프로세스
    • - Tasks, Threads and Processes
    • - 선점, 시분할, 인터럽트
    • - Preemption, Time Slicing and Interrupts
    • - 세마포어, 이벤트, 메시지, 타이머
    • - 재진입/Reentrancy
    • - 좋은예/나쁜예
    • - 요약

도서 오류 신고

도서 오류 신고

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

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

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

정오표

[ p20 그림 1.5 ]
16-비트 테이터 → 16-비트 어드레스 버스

[ p127 리스팅 6.6 아래에서 2번째 행 ]
#define READ_0000() (*(ftype *)(fdev->base + 0x0000<<0)))
→ #define READ_0000() (*(ftype *)(fdev->base + (0x0000<<0)))

[ p313 아래에서 7번째 행 ]
반면에 콜드 리셋이 발생할 경우는 → 반면에 웜 리셋이 발생할 경우는