서브메뉴

본문

디자인 패턴을 적용한 임베디드 시스템 (당신을 임베디드 전문가로 이끌어줄 꼼꼼한 멘토링)
디자인 패턴을 적용한 임베디드 시스템 (당신을 임베디드 전문가로 이끌어줄 꼼꼼한 멘토링)
저자 : 엘레시아 화이트
출판사 : 한빛미디어
출판년 : 2013
ISBN : 9788968480195

책소개

『디자인 패턴을 적용한 임베디드 시스템』은 임베디드 시스템을 구성하는 CPU, RAM을 비롯한 주요 장치에 대한 지식을 체계적으로 배워 동작원리를 익힐 수 있는 책이다. 소프트웨어 디자인 패턴과 임베디드 프로그래밍 디자인 패턴을 이용해서 임베디드 시스템을 개발하는 방법을 제시한다.
[교보문고에서 제공한 정보입니다.]

출판사 서평

이 책이 제시하는 핵심 내용
임베디드 시스템을 구성하는 CPU, RAM을 비롯한 주요 장치에 대한 지식을 체계적으로 배워 동작원리를 익힌다.

이 책의 특징과 장점
도대체 내가 만든 프로그램이 어떻게 동작하는 거지?
내가 만든 프로그램이 하드웨어의 LED에 불을 켜거나 스피커로 음악이 흘러나오게 할 때 프로그래머라면 누구나 ‘어떻게 하드웨어가 동작하길래?’라는 의문을 품게 된다. 이 책은 이러한 의문에 대한 답변을 준다. 외부장치와의 입출력, 내부 메모리의 구성, 코드를 저장하거나 파워를 절약하는 방법까지 이제 하드웨어의 동작방법을 이해하고 소프트웨어를 보자.

대상 독자
- 컴퓨터 공학, 전자공학 학부생, 대학원생
- 하드웨어 시스템 입문자
- 임베디드 시스템을 체계적으로 다시 공부하고 싶은 개발자

이 책의 내용_출판사 리뷰
전달하려는 정보는 기술과 밀접한 관련이 있으나 편안한 방법으로 이를 전달해서 독자들이 소설을 읽듯 볼 수 있다. 반드시 프로그래밍을 직접 하면서 내용을 익힐 필요도 없다(그러나 예제를 직접 살펴보고 권고 사항을 자신의 코드에 적용한다면 책의 내용을 좀 더 잘 이해할 수 있을 것이다).
이 책은 자신이 원하는 부분만 참고할 수 있는 기술적 매뉴얼과는 다르다. 물론 자신이 원하는 부분만 골라 읽을 수는 있지만 그렇게 해서는 탐색격멸 기법(search-and-destroy method)으로 제공하는 수많은 정보를 얻지 못할 것이다. 따라서 순서대로 책을 읽기 바란다. 책의 내용 전체를 이해하면 마법사가 마법서를 펴듯이 구현하고자 하는 기능과 관계된 장을 펴서 명령어 테이블을 만들거나 다양한 소수점 구현을 순식간에 할 수 있다.

● 1장 소개_ 임베디드 시스템이란 무엇인가? 기존의 소프트웨어 개발과 무엇이 다른가?
● 2장 시스템 아키텍처 만들기_ 시스템 아키텍처(그리고 문서)를 만드는 방법을 알아본다.
● 3장 하드웨어에 익숙해지기_ 보드를 구동하는 과정에서 하드웨어와 소프트웨어를 통합한다는 건 어려운 일이다. 어떻게 하드웨어와 소프트웨어를 부드럽게 통합할 수 있는지 살펴본다.
● 4장 출력, 입력, 타이머_ 임베디드 시스템의 ‘Hello World’ 버전으로 LED를 깜빡이는 기능을 구현한다. LED를 깜빡이는 기능을 구현하는 것은 생각보다 복잡하다.
● 5장 실행 흐름 관리_ 시스템 설정, 인터럽트 활용, 상태 머신 만들기 등을 설명한다.
● 6장 주변장치와 통신하기_ 임베디드 시스템은 UART, SSP, SPI, I2C, USB 등의 다양한 시리얼 통신을 제공한다. 네트워킹, 비트 뱅, 병렬 버스도 빼놓을 수 없다.
● 7장 코드 업데이트하기_ 내부 업데이터를 이용하는 방법에서 직접 업데이터를 만드는 방법에 이르기까지 프로세서에서 실행하는 코드를 교체할 때 선택할 수 있는 다양한 방법을 학습한다.
● 8장 추가 작업_ 램, 코드 공간, 프로세서 사이클을 줄이는 방법을 살펴본다.
● 9장 수학_ 대부분의 임베디드 시스템에서는 어떤 형태로든 분석이 필요하다. 수학 연산과 소수점 연산이 어떻게 작동하는지 이해한다면 더 빠른 시스템을 구현하는 데 도움이 될 것이다.
● 10장 소비 전력 줄이기_ 프로세서 사이클을 줄이는 방법에서 시스템 아키텍처 제안에 이르기까지 전력 소비를 줄이는 다양한 방법을 확인한다. 10장은 배터리에서 실행되는 시스템에 유익한 내용을 제공한다. 필자는 ‘엔지니어가 이런 순서로 생각했으면’ 하는 바람으로 장의 순서를 결정했다. 아키텍처를 먼저 소개한다는 것이 이상해 보일 수 있다. 그러나 최적화 문제를 걱정하기에 앞서 어떻게 시스템에 맞도록 자신의 코드를 구현할 것인가를 생각하는 것이 더 낫다고 생각한다.

도서 특징(책 표지 글)
♣ 임베디드 시스템에 디자인 패턴 방식을 도입한 기념비적인 서적!

이 책은 소프트웨어 디자인 패턴과 임베디드 프로그래밍 디자인 패턴을 이용해서 임베디드 시스템을 개발하는 방법을 제시합니다. 다양한 프로세서의 시스템 아키텍처를 만드는 방법을 설명하면서, 하드웨어와 관련된 실전적인 어려움이 무엇이며 제조 요구 사항을 처리하는 데 필요한 기법이 무엇인지 알려줍니다. 궁극적으로 여러분이 좋은 개발 습관을 들여 훌륭한 임베디드 시스템을 개발할 수 있게 해줍니다.

♣ 옆에 있는 사수처럼 친절하고 꼼꼼하게 멘토링해드립니다.
여러분이 임베디드 시스템에 대해 아주 잘 알 거라고 생각하지 않습니다. 처음 ‘가나다’를 배우는 아이들에게 가르치듯 임베디드 시스템 입문자인 여러분이 알아야 하는 모든 것을 꼼꼼하게 멘토링해드립니다. 심지어 개발자 가이드와 사용자 매뉴얼을 어디서 찾아야 하는지와 더 싸게 자재를 구입하는 방법도 알려줍니다. 만약 여러분이 이미 유능한 임베디드 개발자라면 이 책이 지루할지도 모릅니다. 확실한 건, 초보 개발자에게 이 책만큼 친절한 멘토는 없다는 겁니다.

♣ 여러분에게 면접관이 던질 10가지 예상 질문과 답변을 알아봅시다
또한 임베디드 시스템 관련 면접관이 지원자에게 무엇을 요구하는지 이해할 수 있도록 각 장의 끝에 인터뷰 질문 총 열 개를 실었습니다. 모든 과정을 처음부터 끝까지 제공하는 대신 산파술을 사용해 지원자의 응답에서 무엇을 이끌어냈습니다. ‘회의실에 있는 전화기의 아키텍처를 설명해보라’거나 ‘코드에서 잘못된 부분을 찾으라’거나 ‘차세대 플랫폼에 사용할 프로세서를 어떻게 결정하겠느냐’ 등 다양한 질문에 답하면서 자연스럽게 시스템 개발에 대한 학습을 할 수 있습니다. 인터뷰 질문을 참고한다면 자신의 실력에 맞는 답변은 물론이고 직업도 얻을 수 있을 것입니다.

① ‘Hello World’를 구현하세요!
여기 컴파일러와 편집기가 설치된 컴퓨터가 있습니다. ‘hello world’를 구현하세요. 기본적인 작동을 구현한 다음에는 명령행으로부터 이름을 입력받는 기능을 추가하세요. 최종적으로 당신의 코드가 실행되기 전(즉, main() 함수를 실행하기 전)에 어떤 일이 일어나는지 저한테 설명하세요.
② 아키텍처 만들기
회의실에 있는 전화기의 아키텍처를 설명해보세요.
③ 실패에 대한 논의
성공적으로 끝난 프로젝트에 관해 말해보세요. 다음으로 성공적으로 끝나지 못한 프로젝트에 관해 말해보세요. 무슨 일이 있었나요? 문제를 어떻게 해결했습니까?
④ 레지스터가 바뀌길 기다리기
이 코드는 뭐가 잘못되었나요?
void IOWaitForRegChange(unsigned int* reg, unsigned int bitmask){
unsigned int orig = *reg & bitmask;
while (orig == (*reg & bitmask)) { /* do nothing */ ; }
}
⑤ 교차로의 신호등 제어기
작은 도시에서 정지 표지판으로는 더 이상 교차로의 교통 흐름을 충분히 감당할 수 없다고 판단해서 신호등을 설치하기로 했고 사람들은 우리에게 신호등 구현을 부탁했습니다. 빨간색, 노란색, 녹색 등을 가진 신호등 네 개를 교차로에 설치할 예정입니다. 또한 특정 신호에서 자동차가 멈췄는지를 판단할 수 있도록 네 개의 자동차 센서도 추가해야 합니다. 어떤 작업부터 시작해야 합니까? 자신의 설계를 저에게 설명한 다음 의사코드를 구현해 보세요.
⑥ 프로세서 선택하기
차세대 플랫폼에 사용할 프로세서를 어떻게 결정하겠습니까?
⑦ 염소를 데리고 안전하게 강 건너기
어떤 사람이 염소, 조금 길들여진 늑대와 함께 양배추를 가지고 집으로 가고 있습니다. 강가에 도착했는데 다리가 사라졌습니다. 강가에 묶여있는 보트는 너무 작아서 한 번에 사람 한 명과 짐 하나만 실을 수 있습니다. 늑대와 염소를 남겨두면 늑대가 염소를 먹을 것입니다. 염소와 양배추를 남겨두면 염소가 양배추를 먹을 것입니다. 그러나 늑대는 양배추를 먹지 않습니다. 어떻게 하면 모두가 안전하게 강을 건널 수 있을까요?
⑧ 바이트의 비트를 역순으로
최대한 메모리를 절약해서 바이트의 비트를 역순으로 바꾸세요. 비트를 역순으로 바꿨으면 코드가 가능한 한 빨리 작동하도록 개선하세요(이번엔 메모리를 절약하지 마세요)
⑨ 아주 큰 숫자 처리하기
자신이 선택한 언어로 1부터 10을 더하는 프로그램을 구현하세요. 가능하면 C를 사용하세요. 지원자가 코드를 구현하면 새로운 질문을 던진다. 1부터 N까지 일반적인 합계를 구할 수 있게 하려면 어떻게 해야 합니까? 어떤 최적화를 제공할 수 있습니까? 구현에 어떤 제한이 잠재되어 있습니까? 임의의 길이의 입력을 수용하려면 어떻게 프로그램을 고쳐야 합니까?
⑩ 냉장고 불이 켜졌습니까?
냉장고 문이 닫혔을 때 불이 꺼졌다는 것을 어떻게 알 수 있는지 가능한 한 다양한 방법을 2분 내에 제시하세요. 냉장고를 부수면 안 됩니다.

지은이의 글
임베디드 시스템을 사랑한다. 내가 모터에게 ‘돌아라’라고 명령했을 때 모터가 움직였고, 그 순간 임베디드 시스템에 푹 빠져들었다. 그래서 기존의 순수 소프트웨어 영역에서 실물 영역으로 재빨리 분야를 옮겼다. 소프트웨어를 떠날 무렵 디자인 패턴과 관련된 중요한 작업을 수행하고 있었다. 내가 속한 팀은 책을 검토하고 다양한 패턴을 살펴보면서 어디에 어떤 패턴을 사용할지를 의논했다. 임베디드 시스템으로 분야를 옮기고 나서 컴파일러가 C++ 상속을 처리할 수 없다는 사실, 패턴을 구현하기에는 프로세서 메모리가 너무 작다는 사실, 임베디드 시스템에서 발생한 많은 문제에 디자인 패턴을 적용하기 어렵다는 사실을 발견했다. 이런 상황에서도 항상 어떤 식으로든 패턴을 적용할 방법이 있음을 잊지 않았다. 이 책에는 표준 패턴뿐만 아니라 임베디드 시스템 개발에 적용할 수 있는 새로운 패턴과 관련된 내용이 많다. 게다가 다른 대부분의 책에서 얻기 어려운 유용한 정보도 제공한다.
저자_엘레시아 화이트

추천평
“흥미로운 임베디드 시스템 세계에 동참하려는 C 프로그래머에게 적합한 책이다. 이 책은 재미있고 완성도가 높으며, 적절한 삽화로 이해를 돕는다”
- 잭 갠슬, 『The Art of Programming Embedded Systems』 저자

관련도서
-. 『임베디드 하드웨어 이해와 설계(개정판)』(한빛미디어, 2006)
-. 『Blog2Book, 임베디드 프로그래밍 C 코드 최적화)』(한빛미디어, 2006)
[교보문고에서 제공한 정보입니다.]

목차정보

CHAPTER 1 소개
__1.1 컴파일러, 언어, 객체지향 프로그래밍
__1.2 임베디드 시스템 개발
__1.3 추가 자료

CHAPTER 2 시스템 아키텍처 만들기
__2.1 시스템 다이어그램 만들기
__2.2 다이어그램에서 아키텍처까지
__2.3 샌드박스 활용
__2.4 추가 자료

CHAPTER 3 하드웨어에 익숙해지기
__3.1 하드웨어와 소프트웨어 통합
__3.2 데이터시트 읽기
__3.3 프로세서는 언어다
__3.4 회로도 읽기
__3.5 디버깅 도구상자와 소화기 갖추기
__3.6 하드웨어와 소프트웨어 테스팅
__3.7 에러 처리
__3.8 추가 자료

CHAPTER 4 출력, 입력, 타이머
__4.1 출력 토글링
__4.2 하드웨어와 작동 분리하기
__4.3 I/O 입력
__4.4 순간적인 버튼 누름
__4.5 정해지지 않은 런타임
__4.6 타이머 사용
__4.7 펄스 너비 변조 사용
__4.8 제품 출하
__4.9 추가 자료

CHAPTER 5 실행 흐름 관리
__5.1 스케줄링과 운영체제 기본
__5.2 상태 머신
__5.3 인터럽트
__5.4 추천하지 않는 인터럽트 사용법
__5.5 와치독
__5.6 추가 자료

CHAPTER 6 주변장치와 통신하기
__6.1 광범위하게 사용되는 주변장치
__6.2 다양한 통신 방식
__6.3 주변장치의 통신 기능
__6.4 추가 자료

CHAPTER 7 코드 업데이트하기
__7.1 온보드 부트로더
__7.2 자신만의 업데이터 만들기
__7.3 벽돌 로더
__7.4 보안
__7.5 링커 스크립트
__7.6 요약

CHAPTER 8 추가 작업
__8.1 코드 공간
__8.1.1 맵 파일 읽기(파트 1)
__8.2 램
__8.3 속도
__8.4 요약
__8.5 추가 자료

CHAPTER 9 수학
__9.1 빠른 작동과 느린 작동 확인
__9.2 기존 알고리즘 사용
__9.3 알고리즘 설계와 수정
__9.4 가짜 소수점수
__9.5 추가 자료

CHAPTER 10 소비 전력 줄이기
__10.1 전력 소비 이해
__10.2 방에서 나갈 땐 등을 끄자
__10.3 프로세서를 슬립 상태로
__10.4 추가 자료
[교보문고에서 제공한 정보입니다.]

QuickMenu