임베디드 시스템의 쓰임새가 다양해지면서 마이크로프로세서 교과목에서 다루어야할 내용도 다양해 지고 중점을 두어야할 부분도 달라지고 있다. 8비트 혹은 16비트 프로세서에 메모리와 주변장치를 붙이고 어셈블러나 C를 사용해서 필요한 프로그램을 작성하는 방법을 가르치는 것이, 필자가 프로세서를 처음 배우던 80년대 이후로, 마이크로프로세서 교육에서주로 다루던 내용이었다. 오늘날의 산업현장에서도 이와 같은 기술이 적용되고 있고 그 중요성이 줄어들었다고는 보기 어렵다. 그러나 90년대 이후로 폭발적으로 증가하고 있는 모바일 기기에는, 8/16비트 프로세서에서 사용하던 접근방법으로는 구현하기 힘든 멀티미디어와 네트워크 기능들을 갖춘 임베디드 시스템을 필요로 하고 있다. 여기에는 32비트 프로세서를 사용해서 멀티미디어와 네트워크 기능을 제공하는 운영체제(OS)를 장착하고 있다. 이를 이해하고 다루기 위해서는 마이크로프로세서에 대한 기본적인 지식과 더불어 다양해진 메모리에 대한 지식, 운영체제에 대한 이해와 관련된 개발환경을 활용하는 능력 등을 갖추어야 한다.
이와 같이 넓어진 임베디드 시스템 스펙트럼 전체를 체계적으로 조망하고 다룰 수 있는 내용으로 이 책을 꾸미고자 하였다. 1-2장에서는 디지털컴퓨터의 기본원리와 주요한 개념, 필수적인 주변장치에 대해서 개념적인 설명을 하고 3-4장에서 8비트 마이크로 프로세인 AVR의 구성과 명령어체제, 주요한 주변장치들을 실험을 곁들여서 다루었다. 5장에서는 32비트 마이크로프로세서인 ARM 프로세서의 아키텍쳐와 명령어 구조, 그리고 운영체제를 효율적으로 사용하기 위해서 필요한 추가적인 주변장치들을 살펴본다. 6장에서는 ARM 프로세서의 주변장치와 임베디드 리눅스 설치까지 고려한 ARM 기반 임베디드 시스템의 개발환경을 다룬다. 7장에서부터 9장까지는 리눅스 운영체제의 개요와 디바이스드라이버 작성법 및 응용프로그램 작성법 등을 각각 다룬다. 11장에서부터는 리눅스를 기반으로 하는 안드로이드를 다루면서 안드로이드 설치와 응용프로그램 작성법을 살펴본다.
C언어와 디지털논리회로를 배운 학생들에게 두 학기 정도를 들여서 이 책을 강의하고자 한다면 1장에서부터 6장 까지를 첫 번째 학기에 가르치고 이후의 내용을 두 번째 학기에 다루면 적당하리라 생각한다. 8비트 프로세서를 이미 배운 학생들이라면 5장에서부터 시작해서 32비트 프로세서와 리눅스에 대한 내용을 거쳐 가능하다면 안드로이드까지 한 학기에 다룰 수 있을 것이라 본다. 이 책에는 AVR과 ARM 프로세서 매뉴얼에서 참조할 수 있는 세세한 테이블 들을 되도록 싣지 않았다. 따라서 보다 깊이 있게 이 책을 따라 공부하기 위해서는 인터넷에서 이들 매뉴얼들을 받아서 같이 보는 것이 필요할 것이다. AVR 실습은 시중에서 구할 수 있는 일반적인 Atmeg128 모듈을 가지고 할 수 있도록 구성하였고 ARM과 리눅스, 안드로이드 관련 실습은 삼성에서 만든, Cortex-A8 프로세서 기반의 S5PC100 사용한 보드를 사용하는 것을 상정하였다. 그러나 8장 이외의 내용은 특정 하드웨어에 크게 의존하지 않는다.
공저자 나이텍 배도연 사장님과 이 책을 만드는 과정에서 많은 도움을 주신 최규호주임, 원고작성을 위해 애를 써준 안경필군과 이준성군의 노고에 감사드린다. 그리고 사랑하는 아내 혜경에게도 고마운 마음을 전한다. 좀 더 내용을 충실하게 만들었으면 하는 아쉬움이 많이 남지만 차후에 개선작업을 해 나갈 수 있을 것이라 기대해 본다.