임베디드 시스템 펌웨어 분석
- 원서명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개 프로세서에 사용할 수 있는 크로스-어셈블러, 크로스-컴파일러, 시뮬레이터, 보드 지원 라이브러리 등을 포함한다.
(https://github.com/AcornPublishing/firmware)
<책 소개>
임베디드 마이크로 프로세서를 바탕으로 한 시스템을 처음부터 구성해 보라. 마이크로 프로세서에 전원이 인가된 최초 몇 초 동안 하드웨어와 펌웨어의 상호작용을 탐험해봄으로써 여러분은 하드웨어와 소프트웨어를 포괄적으로 이해할 수 있다. 소프트웨어와 하드웨어가 서로 만나는 이러한 근본적인 문제를 다루다 보면 응용프로그램 개발과 임베디드 시스템 개발의 차이점을 알 수 있을 것이다.
현장에서 검증된 완전한 솔루션을 이용해서 초기의 핵심 개발과정을 정복하자. 이 책을 통해 임베디드 시스템을 처음 시작할 때 겪어야 하는 값진 경험을 얻을 수 있다. 이 책은 어셈블리 언어로 시작하는 기본적인 부팅, 예외처리, 플래시 드라이버, 플래시 파일 시스템, 시리얼과 이더넷 연결, 네트워크 부팅 등 폭 넚은 주제를 다루고 있다. 간단한 회로도를 이용해서 CPU가 메모리에서 어떻게 명령을 읽어오는지 배우고, FLASH와 EPROM, SRAM과 DRAM, 마이크로 컨트롤러와 마이크로프로세서, 데이터 버스와 어드레스 버스의 정확한 개념을 알게 될 것이다.
[ CD-Rom ]
부록 CD는 부트 플랫폼의 소스코드와 사용자 문서, 사용제한이 없는 GNU X-Tools를 포함하고 있다. 이들 툴은 21개 프로세서에 사용할 수 있는 크로스-어셈블러, 크로스-컴파일러, 시뮬레이터, 보드 지원 라이브러리 등을 포함한다.
목차
목차
- 서문
- - 이 책을 읽는 사람은?
- - 이 책이 다루는 것은?
- - 규약
- - 소스코드
- - 감사의 글
- 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
- - 좋은예/나쁜예
- - 요약
도서 오류 신고
정오표
[ 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번째 행 ]
반면에 콜드 리셋이 발생할 경우는 → 반면에 웜 리셋이 발생할 경우는
16-비트 테이터 → 16-비트 어드레스 버스
[ p127 리스팅 6.6 아래에서 2번째 행 ]
#define READ_0000() (*(ftype *)(fdev->base + 0x0000<<0)))
→ #define READ_0000() (*(ftype *)(fdev->base + (0x0000<<0)))
[ p313 아래에서 7번째 행 ]
반면에 콜드 리셋이 발생할 경우는 → 반면에 웜 리셋이 발생할 경우는