임베디드 시스템 이론
남자들이라면 어렸을 때 갖고 놀던 장난감에 대한 동경이 있을 겁니다. 대표적으로 RC 자동차나 헬기, 드론 등인데요. 갖고 싶었던 걸 부모님이 안 사주시면 어른이 돼서도 한(恨)이 쌓이죠?ㅎ 저만 그런가요? 여하튼 그런 한(?) 때문인지 저는 나이를 먹어서도 장난감들 중에서도 전자부품을 이용해서 움직이는 장난감이나 각종 IT 기기에 관심이 많이 생기더라고요. 그래서 마트 등에서 그런 것들을 마주치게 되면 한참을 바라보고 서 있는 경우가 종종 있고...
어렸을 때 한(?)을 풀기 위함인지 사고 싶은 게 있으면 약간의 망설임 뒤에 꼭 사들고 집으로 오곤 합니다. 그렇게 들고 온 것들을 잠깐씩 갖고 놀기만 하다가 언제부턴가 '나는 이런 걸 만들 수는 없을까?'라는 생각이 들더라고요. 그래서 조금씩 찾아보면서 만들어보고 있는데 오늘은 작은 전자부품들을 이용해서 만드는 임베디드 시스템의 개념에 대해서 정리해보려고 합니다.
임베디드 시스템이란 단어의 뜻에서도 짐작할 수 있듯이 어떤 작은 장치 속에 내장 되어 있는(박혀 있는) 소프트웨어를 뜻합니다. 넓게 보면 컴퓨터도 여기에 속하겠지만 보통은 아주 작은 리모컨이나 스마트폰, TV, 냉장고, 전자 렌지, 무선조종 장난감 등의 기계 안에 전자회로가 들어있고 그 회로 속에 운영체제(OS)를 넣어서 작동하도록 하는 시스템을 말하는데요.
이런 임베디드 시스템을 개발하기 위해서는 컴퓨터에서 코딩(소프트웨어 개발)을 해서 작은 전자회로에 심어주는 과정으로 만들어지게 됩니다. 요즘 제가 갖고 놀고 있는 아두이노 역시 이런 임베디드 시스템을 개발하기 위한 도구인데요.
이렇게 작은 보드(전자회로)에 소프트웨어를 심어서 그것과 연결된 각종 장치들이 제가 원하는 대로 움직이도록 제어하는 과정을 통해서 개발을 하게 되고요. 이런 것들을 제어하기 위해서는 반드시 컴퓨터가 있어야겠죠? 컴퓨터에서 코딩을 해서 업로드를 시켜줘야 하니까요.
그렇다면 PC에서 코딩한 소프트웨어를 어떻게 아두이노 같은 임베디드 시스템으로 옮겨야 할까요? 참고로 컴퓨터에서 작성한 소스 코드를 바로 아두이노 같은 장치에 옮긴다고 그 녀석이 움직이는 건 아닙니다. 간단하게 생각해서 두 녀석이 사용하는 언어가 다르기 때문에 못 알아듣는거죠. 컴퓨터에서 "어떤 상황일 때 어떤 모터를 움직여라"라고 명령어를 작성해서 아두이노로 옮겨도 아두이노는 그 뜻을 이해하지 못합니다.
한국 사람이 미국 사람한테 한국말로 말하는 것과 같다고 이해하면 되세요. 즉, 번역을 해서 옮겨줘야 하는데 그 과정을 [컴파일]이라고 합니다. 그리고 그런 컴파일 등의 과정을 이글 앞에서 정리한 아두이노 스케치 프로그램 같은 소프트웨어가 대신 해주는 거고 아두이노를 개발하기 위해서 반드시 저 녀석이 필요했던 겁니다.
이런 임베디드 시스템이 들어가 있는 것들은 우리 생활 주변에서도 아주 쉽게 마주칠 수 있는데요. 아니.... 쉽게 마주친다기 보다는 주변의 전자기기는 대부분 이에 해당한다고 생각해도 될거 같네요. 가만히 생각해보니 이런 시스템이 아닌걸 찾기가 더 힘들거 같아요.
집에 들어서면서부터 대충만 찾아봐도 현관문에 붙어 있는 번호키 부터 들어설 때 자동으로 켜지는 현관 전등 .... 앞에서도 잠깐 언급했던 TV, 냉장고, 전자 렌지, 선풍기, 에어컨, 보일러 등 셀 수도 없겠죠? 이런 것들이 다 임베디드 시스템으로 만들어진 것들이고 그만큼 우리 생활과 밀접한 관련이 있기 때문에 많은 분들이 관심을 갖고 있는 것 같더라고요.
그만큼 중요한 시스템이기 때문에 내년(2018년)부터는 중학교에서도 이런 임베디드 시스템 및 소프트웨어 개발을 위한 코딩 교육이 의무화가 된다고 하죠. (초등학교 2019년) 이미 선진국에서는 이 교육을 많이 진행하고 있고 몇몇 국제 리더들이 소프트웨어의 중요성을 강조한 적도 있었습니다. 그런 시대의 흐름에 함께 하는 첫 번째 단계가 이런 임베디드 시스템에 관심을 갖는 게 아닐까 싶은 생각이 드네요.
저 어렸을 때만 해도 이런 것들은 과학자들이 개발하는 것으로만 알았고 접근하는 것이 쉽지 않게 느껴졌었는데 이제는 초등학교 친구들부터 관심을 갖고 접근을 하게 될 거 같으니 앞으로 이 임베디드 시스템의 개발이 활발해질 거 같다는 생각을 해봅니다. 여하튼 저도 앞으로 관심을 갖고 조금씩 만져보려고 하다가 개념을 확실히 알고 시작하자는 생각으로 몇 자 적어봤네요.^^ 수고하셨어요