Top

임베디드 시스템 아키텍처 [사물인터넷을 위한 임베디드 시스템의 기초]

  • 원서명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장 ‘임베디드 운영체제’ 구현된 안전성과 보안 메커니즘에 초점을 두고, 임베디드 세계에서 이용 가능한 오픈소스 운영체제를 알아본다.

저자/역자 소개

지은이의 말

이 책은 전형적인 임베디드 시스템의 하드웨어 아키텍처에 대해 간단히 설명하고, 타깃 아키텍처 개발을 시작하기 위한 도구와 방법을 소개한 다음, 시스템 기능과 주변장치 상호작용을 이용해 독자들을 안내한다. 저전력 및 연결 시스템을 설계하는 데 사용되는 기술을 더 자세히 살펴보기 위해 에너지 효율 및 연결성 같은 분야가 설명되어 있다. 더 나아가, 단일 시스템 구성요소의 구현에서부터 시작하여 더 복잡한 설계(간소화된 실시간 운영체제를 포함해서)를 구축한다. 마지막으로, 내부 구현에 대한 고려와 이상적인 애플리케이션 분야에 대한 안내를 포함하여 임베디드 장치를 위해 설계된 기존의 유효한 오픈소스 운영체제에 대한 개요가 제공된다.
애플리케이션 코드의 프로그래밍 오류에 대한 시스템의 견고성이나 무결성을 손상시키는 악의적인 시도에 대한 문제를 개선하기 위해 특별한 기술을 제안함으로써, 특정 보안 및 안전 메커니즘에 초점을 둔다.

지은이 소개

다니엘 라카메라(Daniele Lacamera)

여러 산업계의 임베디드 시스템에 대한 소프트웨어 설계 및 개발에서 방대한 경험을 갖춘 소프트웨어 전문가이자 연구원이다. 현재는 프리랜서 소프트웨어 개발자 및 트레이너로 일하고 있다. TCP/IP와 전송 프로토콜 설계 및 최적화 분야의 세계적인 전문가이며, 이 주제로 20개 이상의 논문을 썼다. 리눅스 커널을 비롯한 몇몇 프로젝트에 기여하고, IoT의 무료 및 오픈소스 소프트웨어 사용을 권장하는 여러 커뮤니티와 조직에 참여함으로써 자유 소프트웨어를 지원한다.

옮긴이의 말

사물인터넷(IoT)으로 대변되는 현재의 임베디드 시스템 분야의 이슈는 단연 에너지 효율성 및 인터넷으로의 연결입니다. 인터넷 연결을 이루기 위한 기존 범용 시스템에서 사용되는 중첩 스택은 임베디드 분야로 넘어오면서 에너지 효율성을 일부 떨어뜨립니다. 따라서 목적에 맞게 운영체제 및 라이브러리를 선택하는 것이 더욱 중요합니다.
이 책은 임베디드 시스템 소개에서부터 작업 환경, 아키텍처 패턴, 부트업 절차, 메모리 관리, 일반 목적 주변기기 관리, 로컬 버스 인터페이스, 저전력 최적화, 분산 시스템, 병렬 작업 및 스케줄링, 임베디드 운영체제를 순서대로 살펴봅니다. 이를 통해 사물인터넷을 위한 임베디드 시스템을 구축하기 위한 기초 및 상세사항들을 살펴봅니다. 또한 제한된 자원을 가진 임베디드 시스템을 목적에 맞고 안정성 있으며, 안전하게 구축하는 방법을 서술합니다. 이를 통해 초심자부터 숙련자까지 임베디드 시스템을 접하기 위한 기본부터 놓치기 쉬운 상세사항까지를 다루기 때문에, 사물인터넷에 관심이 있는 개발자를 해당 분야에 발을 딛도록 하는 데 도움이 되는 책이라 생각합니다.

옮긴이 소개

김세영

성균관대학교 정보통신공학부와 기계공학부를 졸업했으며 웹, 서버, 커널 등 여러 분야에 관심을 갖고 있다. 어떻게 하면 지식을 효율적으로 습득, 저장, 관리할 수 있는지 고민하고 있다. 현재는 캐노니컬에서 근무하며, 우분투를 발전시키고 클라우드 환경의 버그를 잡는 등, 오픈소스 프로젝트 기여에 힘쓰고 있다.

정윤선

성균관대학교 정보통신공학부를 졸업했으며 웹 기술과 서버 API, 하이퍼바이저에 관심이 많다. 아헴스, KT클라우드웨어, A2C를 거치며 웹, 가상화 등의 업무를 수행했다. 현재는 육아를 병행하며 단기 웹 프로젝트, 리액트 네이티브를 이용한 모바일 프로젝트를 진행하며 번역에 참여하고 있으며, 다시 현업으로 돌아갈 날을 손꼽아 기다리고 있다.

목차

목차
  • 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장. 저전력 최적화
    • 시스템 환경설정
      • 하드웨어 설계
  • 클록 관리
    • 전압 제어
  • 저전력 운영 모드
  • 딥슬립 환경설정
  • 정지 모드
  • 대기 모드
  • 웨이크업 간격
  • 전력 측정
    • 개발 보드
  • 저전력 임베디드 애플리케이션 설계
    • 비지 루프를 슬립 모드로 대체
    • 긴 비활성 기간 동안의 딥슬립
    • 클록 속도 선택
    • 전력 상태 전환
  • 요약

  • 9장. 분산 시스템과 IoT 아키텍처
    • 네트워크 인터페이스
      • 매체 접근 제어
      • 이더넷
      • 와이파이
      • 저속 무선 개인 영역 네트워크(LR-WPAN)
      • LR-WPAN 산업 링크 계층 확장
      • 6LoWPAN
      • 블루투스
      • 모바일 네트워크
      • 저전력 원거리 네트워크(LPWAN)
      • 적절한 네트워크 인터페이스 선택
    • 인터넷 프로토콜
      • TCP/IP 구현
      • 네트워크 장치 드라이버
      • TCP/IP 스택 구동
      • 소켓 통신
      • 메시 네트워크와 동적 라우팅
    • 전송 계층 보안
      • 보안 소켓 통신
    • 애플리케이션 프로토콜
      • 메시지 프로토콜
      • REST 구조 패턴
      • 분산 시스템(단일 실패 지점)
    • 요약

  • 10장. 병렬 태스크와 스케줄링
    • 태스크 관리
      • 태스크 블록
      • 컨텍스트 스위칭
      • 태스크 생성
    • 스케줄러 구현
      • 슈퍼바이저 호출
      • 협업 스케줄러
      • 동시성과 타임 슬라이스
      • 블록되는 태스크
      • 자원 대기
      • 실시간 스케줄링
    • 동기화
      • 세마포어
      • 뮤텍스
      • 우선순위 도치
    • 시스템 자원 분리
      • 권한 수준
      • 메모리 세그먼테이션
      • 시스템 호출
    • 요약

  • 11장. 임베디드 운영체제
    • 실시간 애플리케이션 플랫폼
      • FreeRTOS
      • ChibiOS
    • 저전력 IoT 시스템
      • Contiki OS
      • Riot OS
    • POSIX 호환 시스템
      • NuttX
      • Frosted
    • 안전한 임베디드 시스템의 미래
      • 프로세스 분리(Tock)
  • 도서 오류 신고

    도서 오류 신고

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

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

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