임베디드 시스템 아키텍처 [사물인터넷을 위한 임베디드 시스템의 기초]
- 원서명Embedded Systems Architecture: Explore architectural concepts, pragmatic design patterns, and best practices to produce robust systems (ISBN 9781788832502)
- 지은이다니엘 라카메라(Daniele Lacamera)
- 옮긴이김세영, 정윤선
- ISBN : 9791161752839
- 30,000원
- 2019년 03월 29일 펴냄
- 페이퍼백 | 396쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 임베디드 시스템
책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
요약
임베디드 시스템의 하드웨어 아키텍처, 라이브러리, 개발 도구 및 사용 방법, 그리고 에너지 효율성에 중점을 둔 설계 기술을 설명하고 있다. 비교적 접근이 간단한 단일 시스템의 구축부터 쉽게 놓칠 수 있는 상세한 부분까지 설명하고 있기 때문에, 임베디드 시스템에 처음 입문하는 개발자는 개요를 살펴볼 수 있으며, 숙련자는 다양한 주제에 대해 고려해볼 수 있다.
이 책에서 다루는 내용
■ 임베디드 상품의 설계 및 정의 단계에 참여
■ ARM Cortex-M 마이크로컨트롤러를 위한 코드 작성법
■ 임베디드 개발 실험 환경 구축 및 워크플로 최적화
■ 메모리 안전 코드 작성
■ 통신 인터페이스 이면의 아키텍처 이해
■ IoT 영역에 연결 및 배포된 설계 및 개발 패턴 이해
■ 멀티태스크 병렬 실행 패턴과 실시간 운영체제 이해
이 책의 대상 독자
대부분의 내용은 임베디드 시스템에 대해 배우고자 하는 다른 분야의 경험을 갖춘 소프트웨어 개발자 및 설계자를 대상으로 한다.
초심자나 경험이 부족한 임베디드 프로그래머는 특정 개발 영역으로 지식을 확장할 수 있다.
숙련된 임베디드 소프트웨어 엔지니어들은 이 책에서 제기된 논의점, 특히 차세대 임베디드 시스템을 위한 안전성, 보안 연결, 그리고 에너지 효율성에 대한 영감을 얻을 수도 있다.
이 책의 구성
1장 ‘임베디드 시스템: 실용주의적 접근’ 마이크로컨트롤러 기반 임베디드 시스템에 대해 소개한다.
2장 ‘작업 환경과 워크플로 최적화’ 사용되는 도구 및 개발 워크플로를 설명한다.
3장 ‘아키텍처 패턴’ 협업 개발과 테스트를 위한 계획 및 개발 방법론을 다룬다.
4장 ‘부트업 과정’ 임베디드 시스템의 부트 절차, 부트 단계 및 부트로더에 대해 분석한다.
5장 ‘메모리 관리’ 메모리 관리를 위한 최적의 전략을 제시한다.
6장 ‘범용 주변장치’ GPIO 핀과 기타 일반 내장 주변장치에 대한 접근을 설명한다.
7장 ‘로컬 버스 인터페이스’ 직렬 버스 컨트롤러(UART, SPI, I2C)의 통합으로 독자를 안내한다.
8장 ‘저전력 최적화’ 에너지 효율 시스템의 전력 소모를 줄이는 데 이용 가능한 기술을 살펴본다.
9장 ‘분산 시스템과 IoT 아키텍처’ 분산 및 연결된 시스템을 구축하기 위해 요구되는 사용 가능한 프로토콜과 인터페이스를 소개한다.
10장 ‘병렬 태스크와 스케줄링’ 실시간 작업 스케줄러의 구현으로 멀티태스킹 운영체제의 인프라를 설명한다.
11장 ‘임베디드 운영체제’ 구현된 안전성과 보안 메커니즘에 초점을 두고, 임베디드 세계에서 이용 가능한 오픈소스 운영체제를 알아본다.
목차
목차
- 1장. 임베디드 시스템: 실용주의적 접근
- 도메인 정의
- 임베디드 리눅스 시스템
- 저사양 8비트 마이크로컨트롤러
- 하드웨어 아키텍처
- 도전 과제 이해하기
- 멀티스레딩
- RAM
- 플래시 메모리
- 인터페이스와 주변장치
- 비동기식 UART 기반 직렬 통신
- SPI
- I2C
- USB
- 연결 시스템
- 레퍼런스 플랫폼
- ARM 레퍼런스 설계
- Cortex-M 마이크로프로세서
- 요약
- 도메인 정의
- 2장. 작업 환경과 워크플로 최적화
- 워크플로 개요
- C 컴파일러
- 링커
- 빌드 자동화
- 디버거
- 임베디드 워크플로
- GCC 툴체인
- 크로스 컴파일러
- 컴파일러 컴파일
- 실행 파일 링크
- 바이너리 포맷 변환
- 타깃과의 상호작용
- GDB 세션
- 검증
- 기능 테스트
- 하드웨어 도구
- 오프 타깃 테스트
- 에뮬레이터
- 요약
- 워크플로 개요
- 3장. 아키텍처 패턴
- 환경설정 관리
- 리비전 제어
- 추적 활동
- 코드 리뷰
- 지속 통합
- 소스 코드 구성
- 하드웨어 추상화
- 미들웨어
- 애플리케이션 코드
- 임베디드 프로젝트의 생애 주기
- 프로젝트 단계 정의
- 프로토타입 제작
- 리팩토링
- API와 문서
- 요약
- 환경설정 관리
- 4장. 부트업 과정
- 인터럽트 벡터 테이블
- 시작 코드
- 리셋 핸들러
- 스택 할당
- 장애 핸들러
- 메모리 레이아웃
- 부트 코드 빌드 및 실행
- makefile
- 애플리케이션 실행
- 다중 부트 단계
- 부트로더
- 이미지 빌드
- 다중 단계 시스템 디버깅
- 공유 라이브러리
- 요약
- 인터럽트 벡터 테이블
- 5장. 메모리 관리
- 메모리 매핑
- 메모리 모델과 주소 공간
- 코드 구역
- RAM 구역
- 주변장치 접근 구역
- 시스템 구역
- 메모리 트랜잭션 순서
- 실행 스택
- 스택 배치
- 스택 오버플로
- 스택 페인팅
- 힙 관리
- 사용자 정의 구현
- newlib 사용
- 힙 제한
- 다중 메모리 풀
- 일반적인 힙 사용 오류
- 메모리 보호 유닛
- MPU 환경설정 레지스터
- MPU 프로그래밍
- 요약
- 메모리 매핑
- 6장. 일반 목적 주변기기
- 인터럽트 컨트롤러
- 주변장치 인터럽트 환경설정
- 시스템 시간
- 플래시 대기 상태 적용
- 클록 환경설정
- 클록 배분
- SysTick 활성화
- 일반 타이머
- 범용 I/O
- 핀 환경설정
- 디지털 출력
- PWM
- 디지털 입력
- 인터럽트 기반 입력
- 아날로그 입력
- 워치도그
- 요약
- 인터럽트 컨트롤러
- 7장. 로컬 버스 인터페이스
- 직렬 통신 소개
- 클록과 심볼 동기화
- 버스 와이어링
- 주변장치 프로그래밍
- UART 기반 비동기 직렬 버스
- 프로토콜 상세
- 컨트롤러 프로그래밍
- Hello World!
- newlib printf
- 데이터 수신
- 인터럽트 기반 입출력
- SPI 버스
- 프로토콜 상세
- 트랜시버 프로그래밍
- SPI 트랜잭션
- 인터럽트 기반 SPI 전송
- I2C 버스
- 프로토콜 상세
- 클록 늘리기
- 다중 마스터
- 컨트롤러 프로그래밍
- 인터럽트 처리
- 요약
- 직렬 통신 소개
- 8장. 저전력 최적화
- 시스템 환경설정
- 하드웨어 설계
- 시스템 환경설정
- 클록 관리
- 전압 제어
- 저전력 운영 모드
- 딥슬립 환경설정
- 정지 모드
- 대기 모드
- 웨이크업 간격
- 개발 보드
- 비지 루프를 슬립 모드로 대체
- 긴 비활성 기간 동안의 딥슬립
- 클록 속도 선택
- 전력 상태 전환
- 네트워크 인터페이스
- 매체 접근 제어
- 이더넷
- 와이파이
- 저속 무선 개인 영역 네트워크(LR-WPAN)
- LR-WPAN 산업 링크 계층 확장
- 6LoWPAN
- 블루투스
- 모바일 네트워크
- 저전력 원거리 네트워크(LPWAN)
- 적절한 네트워크 인터페이스 선택
- 인터넷 프로토콜
- TCP/IP 구현
- 네트워크 장치 드라이버
- TCP/IP 스택 구동
- 소켓 통신
- 메시 네트워크와 동적 라우팅
- 전송 계층 보안
- 보안 소켓 통신
- 애플리케이션 프로토콜
- 메시지 프로토콜
- REST 구조 패턴
- 분산 시스템(단일 실패 지점)
- 요약
- 태스크 관리
- 태스크 블록
- 컨텍스트 스위칭
- 태스크 생성
- 스케줄러 구현
- 슈퍼바이저 호출
- 협업 스케줄러
- 동시성과 타임 슬라이스
- 블록되는 태스크
- 자원 대기
- 실시간 스케줄링
- 동기화
- 세마포어
- 뮤텍스
- 우선순위 도치
- 시스템 자원 분리
- 권한 수준
- 메모리 세그먼테이션
- 시스템 호출
- 요약
- 실시간 애플리케이션 플랫폼
- FreeRTOS
- ChibiOS
- 저전력 IoT 시스템
- Contiki OS
- Riot OS
- POSIX 호환 시스템
- NuttX
- Frosted
- 안전한 임베디드 시스템의 미래
- 프로세스 분리(Tock)