저자: 박재호(jrogue at netian.com)
누구를 위한 책인가?
이 책은 임베디드 하드웨어와 관련한 구성 요소, 구체적이며 실질적인 설계 방법, 설계시 주의해야 할 점에 대해 궁금하게 생각하는 병아리 하드웨어 개발자나 임베디드 소프트웨어 개발자가 읽으면 도움이 될만한 책이다. 비록 초반부에 기초적인 전자회로 이론과 디지털 컴포넌트에 대한 소개가 나오지만 다음과 같은 배경지식이 있어야 읽기가 수월할 것이다.
- 물리와 일반 전자 공학 개론: 전류, 전압, 저항 등과 관련한 각종 법칙을 이해하고 있어야 한다
- 디지털 회로 개론: 최소한 플립플롭이 뭔지는 알고 있어야 한다. 몇몇 디지털 소자에 클럭을 공급해야 하는 이유 역시 알고 있어야 한다
- 납땜하는 법과 PCB 꾸미는 방법: 이 책은 하드웨어 관련 서적이라는 사실을 명심해야 한다
이 책은 전자과 2학년 중반 ~ 3학년 초반 정도의 수준을 가진 사람들이 임베디드 시스템 개념을 전반적으로 잡을 때 도움이 될만한 책이 되어줄 것이다. 특정 디지털 컴포넌트 이름을 대면 책이나 웹에서 명세서를 찾은 다음에 핀 배열이나 타이밍 다이어그램 특성을 척척 파악할 수 있는 전자 관련 하드웨어 개발자에게는 솔직히 이 책을 권할만한 이유가 전혀 없다. 또한 일반 웹이나 데이터베이스 관련 프로그래머와 같이 전산 관련 순수 소프트웨어 개발자들은 이 책을 통해 건질 내용이 하나도 없어 보이지만, 하드웨어 관련 분야에서 일하는 응용 소프트웨어 개발자(물론 전산이나 컴퓨터 공학 전공)들은 전자 관련 하드웨어 부문에서 일하는 동료들과 단기간에 친숙해지는데 있어 맥주 한 잔 만큼이나 이 책 내용이 유용할 수 있다.
책 속으로…
이 책은 기본적인 임베디드 하드웨어를 설계하는데 필요한 기본 지식, 임베디드 시스템을 위한 CPU(MPU), 주변장치와 인터페이스라는 3대 부문을 빠짐없이 다루고 있다. 실제 동작이 가능한 하드웨어를 최단기간에 만들 수 있도록 현장에서 많이 사용하는 하드웨어과 주변장치/인터페이스에 대한 핵심을 다루고 있으며, 너무 이론적이거나 개괄적인 측면에만 치우치지 않도록 중간중간 저자 경험담을 통해 실제 설계 과정에서 주의할 사항에 대해 짚어주는 방법을 택하고 있다.
목차를 살펴보자. 이 책을 다 읽고 나면 실제 동작하는 간단하면서도 쓸만한 임베디드 시스템을 뚝딱 만들어낼 수 있을 것이다. 하지만 임베디드 하드웨어에 탑재할 운영체제나 소프트웨어에 대해서는 전혀 다루고 있지 않다는 사실도 명심해 두어야 할 것이다.
자세하게 살펴보기1: 내용평가
원래 필자 전공이 소프트웨어 공학이므로 기초 전자 공학 이론과 디지털 회로 이론을 제외하고는 순수 소프트웨어 쪽에 가까운 분야만 배웠다. 하지만 어쩌다 보니 임베디드 분야에 뛰어들게 되었고, 펌웨어와 임베디드 소프트웨어를 개발하고 교육하는 과정에서 전자 공학적인 지식이 필요하지 않을 수 없었다. 일례로, 해외 대리점 엔지니어를 대상으로 제품 문제 해결 방법을 설명해주는 과정에서 예제로 사용한 고장난 제품 보드에 장착되어있던 전압 조정기(voltage regulator) 하나가 떨어져버린 적이 있었다. 하드웨어에 대한 지식이 전혀 없다면 이 부품이 오작동 할 경우 보드 전체에 미치는 영향을 설명할 방법이 없었겠만 이 부품이 하는 작용을 알고 있었기에 어려움 없이 문제 원인과 해결 방안을 설명할 수 있었다. (우연의 일치였을까? 교육을 위해 해외 대리점으로 향하는 비행기 안과 호텔에서 "Designing Embedded Hardware"를 다 읽고 난 다음이었다. 이 책 72페이지에 전압 조정기의 생긴 모양과 특성이 나온다)
내용 자체는 상당히 평이하면서도 자신감을 불러일으킬 수 있도록 구성되어있다. 납땜이라는 이야기만 들어도 화들짝 놀라서 꼬리부터 싹 내리는 필자조차도 "아하, 이렇게 만들면 컴퓨터 비슷한 녀석이 생기겠구나"라는 느낌이 들 정도였으니까… 뚝딱뚝딱 만들기를 좋아하고 전자공학 쪽에 취미가 있는 사람들이라면 무척 즐겁게 이 책을 읽을 가능성이 짙다. 또한 이 책에서는 가장 널리 사용하는 컴퓨터 부품과 인터페이스 방식을 대상으로 설명을 진행하고 있기에 기존 이론에 치우친 전자공학이나 디지털 책과는 달리 정말 현실적이다. 실제로 동작하는 자신만의 임베디드 컴퓨터를 만들고 싶다면 반드시 이 책을 읽어보기 바란다.
하지만 모든 사물에는 그림자가 있듯이 이 책에도 단점이 없지는 않다. 임베디드 컴퓨터를 구성한 다음부터 소프트웨어(운영체제와 응용 프로그램)를 개발해서 탑재하는 방법에 대해서는 구색을 갖추려는 의도에서 소개만 간략하게 하고 있으며, 본문 전반에 걸쳐 회로도를 필요한 부분에 대해서만 제시하고 있기에 실제로 특정 목적에 맞춰 동작하는 하드웨어를 만들기 위해서는 통합에 따른 추가적인 노력이 들어가야 한다. 이 책을 다 읽고 난 다음 부품 획득부터 시작해서 전체 회로도 구성과 소프트웨어 개발과 탑재에 이르기까지 전반적인 개발 사이클을 다루는 사례 연구가 부록 형식이라도 들어있었으면 하는 바람이 불끈 솟아올랐다.
자세하게 살펴보기2: 기술적 정확성, 가독성, 편집상태
역시 본문과 그림에 오탈자가 눈에 들어왔다. 회로도를 많이 다루는 관계상 그림에서 오탈자는 문제가 될 소지가 있는데, 책에서도 여러 번 지적하는 바와 같이 해당 컴포넌트 회사에서 제공하는 데이터 시트를 충실하게 읽으면서 책에 있는 내용과 비교하는 습관이 중요하다.
다루는 주제가 하드웨어에 밀접하기 때문에 그런지 몰라도 일반적인 오라일리 서적과는 달리 그림도 많으며 표 형식으로 필요한 자료도 잘 정리하고 있다. 이렇게 그림과 표를 이용해서 가독성을 높일 수 있도록 신경을 많이 썼기에 원서임에도 불구하고 상당히 빨리 진도를 뽑을 수 있다.
편집 상태는 전형적인 오라일리 방식을 따르고 있으므로, 기존 오라일리 스타일을 좋아하는 독자라면 충분히 만족할 것이다.
그래도 권하고 싶은 책!
이 책은 소프트웨어 부문에 치중한 오라일리 서적 중에서 보기 드물게 하드웨어 관련 주제를 집중적으로 다루고 있다. 그럼에도 불구하고 오라일리 특유의 명쾌하면서도 재기발랄한 내용으로 읽는 사람에게 자신감을 불러일으키도록 만들어준다. 임베디드 시스템과 관련한 하드웨어 부문에 대한 기본기가 필요한 개발자나 하드웨어 호사가라면 필수적으로 이 책을 읽어보기 바란다.