< 저자 소개 >
Jean J.Labross
현재 Micrium.Inc.라는 회사를 경영하고 있다. 그는 전자공학을 전공했으며 단년간 임베디드 시스템을 디자인해 오고 있다. Jean J.Labross는MicroC/OS-II,The Real-Time Kernel의 저자이며, 관련 잡지에 수많은 글을 기고했다. 그는 또 Embedded Systems Conference의 정규 강사이며, 자문위원이다.
< 역자 소개 >
성원호
명지대학교 기계공학과 대학원을 졸업하고 임베디드 시스템 컨설팅 및 개발 회사인 디오이즈(www.dioiz.com)를 경영하고 있다. 『Embedded Systems Building Blocks 한국어판』, 『임베디드 시스템 펌웨어 분석』, 『MicroC/OS-II 실시간 커널 제2판』, 『USB 대용량 저장 장치』 등 여러 권의 임베디드 전문서를 번역했으며 에이콘출판사의 임베디드 시스템 프로그래밍 시리즈 에디터를 맡고 있다.
< 역자 서문 >
이 책의 저자인 Jean J. Labrosse는 『MicroC/OS-II, The real time kernel』도 저술했다. MicroC/OS-II는 저자가 직접 개발한 리얼타임 커널로, 매우 간결하고, 리얼타임 특성이 뛰어난 운영체제다. 물론 상용 리얼타임 커널에 비해 기능상으로는 부족하지만, 성능은 매우 뛰어나서 간단한 임베디드 시스템에도 효과적으로 사용할 수 있다. 이 책은 MicroC/OS-II 상에서 동작하는 임베디드 시스템용 디바이스 드라이버와 여러 가지 유용한 소프트웨어 모듈을 설명한다. 본문에도 설명이 있지만, 제공된 모듈은 리얼타임 커널 뿐 아니라, 일반 전경/배경(Foreground/Background) 시스템에서도 사용할 수 있도록 쉽게 수정할 수 있다.
필자가 임베디드 시스템 프로그래밍을 시작한 지도 벌써 10년이 지났다. 그동안 여러 프로그램을 작성하면서 “다른 사람들은 어떻게 코드를 작성할까?”하고 생각한 적이 종종 있었다. 임베디드 시스템 프로그래밍은 아직까지 많은 사람이 종사하고 있는 분야가 아니어서 유익한 정보를 얻기가 힘들다. 따라서 대부분의 엔지니어는 자신의 세계에 안주해서 자신만의 스타일로 코드를 작성하려는 경향이 있다. 필자도 예외는 아니었다. 그러나 이런 경향은 엔지니어로서의 역량과 경험에 전혀 도움을 주지 못하는, 바람직하지 못한 습관이다. 세상에는 뛰어난 엔지니어가 얼마든지 있다. 그들이 이미 만들어 놓은 완성도 있는 코드를 보고 자신의 스타일로 소화해내는 능력이야말로 우리들 엔지니어가 갖춰야 하는 중요한 소양이라고 생각한다. 이것은 이 책의 저자도 강조하는 점이다.
다른 사람의 코드를 구해서 읽고 깊이 생각해 보라. 그리고 장단점을 파악한 뒤 자신의 스타일을 구축하라. 그런 관점에서 볼 때, 이 책은 여러분이 저자의 코딩 스타일을 보고 장단점을 나름대로 판단해 볼 수 있다는 점에서 큰 가치가 있다. 저자의 코딩 스타일은 매우 일관성이 있고 체계가 잘 잡혀 있다고 생각한다. 물론 저자의 코딩 스타일을 무조건 따를 필요는 없지만, 이제 어느 정도 성숙 단계에 있는 엔지니어라면 자신의 확고한 코딩 스타일을 구축하는 데 이 책이 참고가 될 것이다. 그리고 이 책이 제공하는 각 소프트웨어 모듈은, 중급 이상의 엔지니어가 보기에는 단순한 것들이지만, 임베디드 시스템에 관심이 있는 학생과 초보 엔지니어에게는 상당히 가치가 있는 내용이라고 생각한다.
필자가 처음 시리얼 통신 드라이버와 키보드 드라이버를 작성하던 때가 생각난다. 또 인터럽트 방식의 시리얼 드라이버 데이터를 메인 프로그램에서 어떻게 처리할 것인가를 고민하던 일이 생각난다. 그러나 지금 생각해보면 그런 고민은 시간 낭비에 불과했다. 뒤에 알게 된 일이지만, 필자가 고민해서 생각해낸 코드는 이미 많은 사람들이 같은 방식으로 사용하고 있는 것이었다. 나중에 그 사실을 알고, 본인도 그런 엔지니어의 대열에 낄 수 있다는 일종의 희열을 느끼기도 했지만, 어쨌든 공연한 시간을 낭비한 셈이 된 것이다. 기본적인 코드를 작성하는 데 시간과 정열을 투자할 필요는 없다.
이 책에서 제공하는 모듈의 백미는, 키보드, 시리얼, LED, LCD 드라이버라고 생각한다. 이들은 임베디드 시스템에 있어서 너무나 기본적인 요소여서 반드시 알고 넘어가야 하는 모듈이다. 이 정도의 코드는 인터넷을 비롯한 통신망에서 손쉽게 구할 수 있지만, 그 코드를 잘 설명하는 문서는 구하기 어렵다. 특히 이 책은 이들 드라이버를 리얼타임 커널(여기서는 MicroC/OS-II)과 인터페이스하는 방법을 정확하게 설명하고 있으므로, MicroC/OS-II가 아닌 다른 리얼타임 커널용 드라이버를 작성할 때라도 도움을 줄 것이다.
인터넷의 대중화로 세계는 급변하고 있다. 임베디드 시스템 분야도 예외가 아닐것이다. 인터넷과 멀티미디어를 지원하는 수많은 임베디드 제품이 쏟아져 나오고 있고 불과 몇 달 사이 새로운 모델을 출시하는 시대가 됐다. 타임 투 마켓의 중요성은 저자가 이미 본문에서 설명하고 있으므로 더 이상의 언급은 않겠다. 초보자의 경우, 몇 번 정도는 스스로 깊이 생각해서 코드를 작성해봐야 할 것이다. 그러나 그런 일을 계속 반복하는 것은 결코 도움을 주지 못한다. 여러분은 기본적인 임베디드 시스템 빌딩 블록을 각자 자신만의 아이디어로 작성하느라 시간을 낭비할 필요가 없다. 이 책이 제공하는 소프트웨어 모듈이 여러분의 개발기간을 줄이고, 리얼타임 커널 드라이버의 구조를 이해하는 데 도움이 되길 바란다.
2001년 12월
보급판 출간에 붙여
『Embedded Systems Building Blocks 한국어판』이 출간된 지도 벌써 6년이 지났다. 이 책은 저자 Jean J. Labrosse가 집필한 『MicroC/OS-II 실시간 커널, 제2판』과 더불어, 임베디드시스템 프로그래밍과 RTOS용 디바이스 드라이버를 공부하고자 하는 엔지니어, 학생에게서 많은 관심을 받아왔다. 세월이 지나도 빛이 바라지 않는 책은 그리 흔치 않다. 특히 전문영역을 다루는 기술서는 더욱 그렇다. 하지만 이 책에서 다루는 내용은 지금도 현업에서 충분히 활용할 수 있을 만큼 여전히 유효하다. 출간된 지 몇 년이 지난 지금도 꾸준히 판매되고 있다는 사실은 이를 뒷받침한다.
RTOS와 RTOS용 디바이스 드라이버 개발에 관심 있는 엔지니어라면 주저할 것 없이 이 책과 『MicroC/OS-II 실시간 커널, 제2판』을 함께 읽어볼 것을 적극 권한다. RTOS와 관련 주제에 관해 이 두 책보다 더 잘 설명해놓은 책은 아직까지도 없기 때문이다.
2008년 3월 11일