들어가며
이 책은 임베디드 시스템 정의부터 개발 환경 구축, 개발 방법, 개발 프로세스 등 임베디드 개발과 관련된 전반적인 내용을 훑어주는 책이다. 임베디드 시스템 개발을 공부하고자 하는 사람이 있다면 꼭 한 번 읽기를 권하고 싶은 생각이 들었다. 임베디드 시스템 개발을 어느 정도 할 줄 아는 사람이라도 기획부터 양산까지 개발 프로세스를 한 번도 밟아보지 못한 사람에게도 추천한다. 아래는 책을 모두 읽고 나서 생각나던 것들을 간단히 정리한 것이다. 이 책을 읽어볼까 고민하는 사람이 있다면 이 글이 참고되었으면 좋겠다.
노트
누구에게 딱 맞는 책일까
- 임베디드 시스템을 이제 막 공부하기 시작한 사람이라면 책의 초중 반 부 내용에 관심이 많이 갈 것이다. 임베디드 시스템의 개념부터 시작해서 대략적인 개발 방법과 간단한 실습을 소개하고 있다.
- 어느 정도 개발 공부를 진행했고 개발 프로젝트를 몇 개 진행해본 사람이라면 책 후반 내용이 조금 더 흥미가 갈 것이다. 개발 회사 신입사원이나 제대로 된 개발 프로세스를 겪어보지 못한 경력자에게도 도움이 될만한 내용을 담고 있다.
- 이 책을 읽기 전에 알아둘 점은 한 가지 주제를 아주 깊게 다루는 책이 아니라는 점이다. 임베디드 시스템 개발에 관한 넓고 얕은 지식과 경험을 읽는 이에게 알려주고 있는 책이다. 그래서 이 책은 바이블이 되기에는 부족하다. 대신 좋은 안내서가 될 거라 생각한다.
임베디드 시스템을 살펴보다
- 임베디드 시스템의 개념을 짚고 나면 컴퓨터를 구성하는 대표적인 내부 요소를 살펴본다. CPU, RAM, ROM, BUS, 그리고 주변장치(Peripheral)와 같은 기본적인 것들을 소개한다.
- 구조를 살펴본 뒤에는 실행 파일이 빌드되는 과정부터 시작해 스타트업 코드가 하는 역할을 거쳐 main 함수에 이르기까지 순서대로 설명한다.
- 다짜고짜 LED를 깜빡이는 예제부터 시작하는 많은 입문서와는 확실히 다른 방식으로 접근한다. 물론 이 책이 설명하는 순서대로 익히는 것이 정석이라고 생각한다.
- 정석대로 밑바닥부터 접근하다가는 main 함수에 도달하기도 전에 지쳐 책을 덮어버릴 수도 있을 것 같은데 이 책은 그렇지 않다. 딱 필요한 만큼만 알려주고 흐름을 알려주는데 무게를 두고 있다.
- 비전공자를 대상으로 한 아두이노 강의를 진행해본 입장에서는 LED부터 켜고 보는 공부 방법이 나쁘다고는 생각하지 않는다.
- 하지만 임베디드 엔지니어가 되고자 한다면 달라야 한다.
실습...! 실습은 못 참지
- 책 중반부터는 간단한 실습 예제가 소개된다. 실습에는 아두이노와 라즈베리파이를 이용한다.
- 아두이노를 활용한 실습은 아두이노 스타일의 코딩이 아니라 레지스터에 직접 접근하여 MCU를 제어하는 방법을 알려주고 있다.
- 대상이 되는 MCU는 ATmega328P 8bit MCU이다.
- 아두이노 IDE의 라이브러리 추가 기능을 이용해 실시간 운영체제(RTOS)인 FreeRTOS를 사용해보는 예제도 포함되어 있다.
- 라즈베리파이(3B+)에 리눅스를 올리고 GPIO를 제어해보는 예제가 준비되어 있다.
- Yocto를 이용해서 리눅스 부팅 이미지를 직접 빌드한다.
- GPIO 제어에는 WiringPi 라이브러리를 활용한다.
- 이 과정에서 자연스럽게 git도 소개된다. (git을 쓰자. 제발. 혼자 개발하더라도.)
- 앞에서도 말했지만, 이 실습들은 딱 동작이 될 정도로만 간단히 설명하고 있다.
- 실습하다 궁금한 것이 생기면 일단은 실습 내용을 모두 읽고 난 다음에 주저하지 말고 검색을 하자.
어떻게 개발해야 할까
- 개발 프로세스를 설명하는 장에는 기획부터 양산까지의 개발 라이프 사이클과 V형 개발-검증 절차를 설명한다.
- 요구사항을 수집하고 정의한 뒤 개발과 검증에 이어지는 과정을 설명한다.
- 시작부터 끝까지 다뤄줘서 좋긴 한데 역시나 설명이 아주 구체적이지는 않다.
- 물론 설명이 자세하지 않아도 어떤 식으로 진행되는지 감은 잡을 수 있다.
- 이런 과정을 거치지 않고 개발을 하는 회사에 있다면 그저 빛과 소금과 같은 내용일 것이다.
- 물론 나 혼자만 알고 있다고 해결될 일이 아니지만 말이다.
그 외에 기억에 남는 것들
- 임베디드 시스템을 개발함으로써 사회에 공헌할 수 있다는 저자의 마음가짐이 마음에 들었다.
- 임베디드 개발자에게도 '풀 스택'이라는 수식어가 붙을 수 있다는 것을 알려주었다.
- 임베디드 시스템의 풀 스택 개발자는 하드웨어부터 펌웨어 개발, 검증 과정까지 모두 아우를 수 있는 개발자를 말한다.
- 임베디드 개발이라고 해서 고릿하고 뒤처진 느낌을 받는다면 꼭 그렇지만도 않다고 이야기한다.
- 클라우드나 엣지 컴퓨팅 등을 원활하게 구현하는 시스템을 구축하려면 최신 기술도 이해하고 사용할 수 있어야 한다.
이런 점은 조금 아쉬워
- 저자가 자세하게 설명하려고 하는 부분은 곁가지가 많게 느껴졌다.
- 반대로 조금 더 설명을 해줬으면 하는 부분은 금방 내용이 끝나버려 아쉬웠다.
부담 없이 읽을 수 있어요
출퇴근 시간과 회사 점심시간마다 읽어서 3일 만에 읽었다. 마음먹으면 주말 하루 만에도 읽을 수 있는 분량이다. 물론 처음 접하는 용어나 개념이 많다면 조금 더 시간이 걸리겠다. 나의 경우 알고 있는 내용이 많아 복습하는 기분으로 읽었다. 원서는 일본어인데 번역이 잘 되어있어 이해하기 어려운 문장이 있거나 하지 않았다. 임베디드 엔지니어가 되고자 하는 마음가짐이 있다면 부담 없이 읽어볼 만한 책이다.
'독서 노트' 카테고리의 다른 글
[책] 손에 잡히는 Vim (0) | 2021.07.21 |
---|---|
[책] C언어 창시자가 알려주는 <C 언어 프로그래밍> (1) | 2021.06.18 |