읽은 책들
2020/11/15 - [책] - 더 나은 소프트웨어 개발을 위해 읽은 책들
임베디드 OS 개발 프로젝트
'임베디드 엔지니어 교과서'를 읽은 후 조금 더 높은 수준의 책을 읽고 싶은 마음에 고른 책이다. 또한 강의로 운영체제를 들을 때 이론적이라 와 닿지 않았던 부분들이 많았는데, 이 책으로 OS 개발 과정을 따라가다 보면 의문점들이 조금이나마 해소되지 않을까 생각되었다. 이 기대는 책을 덮은 후 만족스러움으로 바뀌었다. 운영체제의 어렵고 장황한 내용들은 이 책을 읽으면서 "아 생각보다 간단하구나"라는 근자감을 심어주었다. 운영체제에 막연함이 있다면 꼭 추천하고 싶은 책이다.
책의 앞부분은 펌웨어, 뒷부분은 RTOS를 설명하고 있다. 운영체제를 직접 개발하는 내용이라서 소스코드를 중심으로 책이 전개되는데 앞부분에 전혀 모르는 어셈블리어가 잔뜩 나왔다. 나는 일단은 어플리케이션 개발자이고 이 책 읽자고 어셈블리어를 공부하는 건 비효율적이라 생각해서 어셈블리어 부분은 소스코드의 해석만 보고 넘어갔는데 내용을 이해하는데 큰 지장은 없었던 것 같다. 어셈블리어를 제외하고는 책의 내용을 이해하는데 어려움은 없었다. 운영체제를 안배웠어도 읽을 수 있겠다 싶을 정도로 잘 읽힌다. 또한 작가가 한국분이라 번역서 특유의 그 잘 안 읽히는 느낌도 없다.
OS 개발은 별도의 개발 보드를 이용하지 않고 리눅스에서 에뮬레이터인 QEMU를 이용한다. 그리고 OS를 개발하는 과정마다 소스코드가 깃허브에 공개되어있다. 나는 책만 읽었을 뿐 따라 운영체제를 개발하지는 않았기 때문에 이 책의 소스코드로 개발하는 과정에서 어려움이 있는지는 모르겠다. 지금은 여유가 없고 후에 기회가 된다면 책을 보고 개발해 볼 계획이다. 그러나 아마 기회는 안 오겠지.
책의 표지에 ARM 기반 펌웨어/ROTS의 원리와 구조라고 나오는데 나는 ARM 아키텍처를 본 적도 없다. 그래도 읽는데 무리는 없었다. 책의 부록에 ARM 아키텍처 기초를 설명하고 있는데 이것만으로도 충분했다.
책을 소개하는 장에서 이제 갓 C언어를 공부하는 초보자도 이해할 수 있다고 설명하지만 아닌것같다. 소스코드에서 공용체, 비트연산, 비트필드, 메모리주소 직접 접근, volatile 등이 별다른 설명 없이 사용된다. 이제 갓 C언어를 공부하는 사람이 알만한 내용들은 아닌 것 같다.
나는 펌웨어랑 RTOS를 정확하게 구분하지 못했다. 그런데 이 책에서 8장인 태스크부터 펌웨어 개발에서 RTOS 개발로 전환되었기 때문에 현재는 펌웨어와 RTOS를 구분하는 기준이 태스크 유무라고 기준을 세웠다. 많은 도움을 준 책이다.
글에 의견을 남겨주세요.
이 글을 읽을 또 다른 분께 많은 도움이 될 거예요.
최근댓글