<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=1387208918241112&ev=PageView&noscript=1"/>
NEW 기획 디자인 개발 프로덕트 아웃소싱 프리랜싱

개발

임베디드 시스템과 펌웨어, 5분 정리

위시켓


*잠깐, 이 글을 소개해드리는 위시켓은 2019년 시밀러웹 방문자 수 기준, 국내 1위 IT아웃소싱 플랫폼입니다.
현재 8만 이상의 개발업체, 개발 프리랜서들이 활동하고 있으며, 무료로 프로젝트 등록이 가능합니다. 프로젝트 등록 한 번으로 여러 개발업체의 견적, 포트폴리오, 예상기간을 한 번에 비교해보세요:)



나신입씨는 올해 가을 코로나19 확산에도 불구하고 국내 굴지의 기업인 S전자에 합격했습니다. 컴퓨터과학과를 우수한 성적으로 졸업한 게 도움이 됐습니다. 약 3개월의 교육 후 나씨는 드디어 첫 부서에 배치받았습니다. 회사 내에서도 전도유망한 반도체사업부에 가고 싶었지만, 결과는 '생활가전사업부'였습니다. 냉장고와 에어컨, 세탁기를 만드는 부서라는 것만 알았지 본인이 정확히 무엇을 해야하는지 감이 오질 않았습니다. 나씨가 부서에 출근한 첫날 나씨의 사수 김 대리는 나씨에게 책 한 권을 건넸습니다. '임베디드 시스템의 첫걸음'이라는 책이었습니다. 나씨는 직감했습니다. 임베디드로부터 고통을 받을 앞날을 말입니다.

임베디드 시스템과 펌웨어. 대학에서 컴퓨터 관련 학과를 나왔다면 한 번쯤은 들어봤을 겁니다. 그러나 그 개념을 명확하게 아는 사람은 많지 않습니다. 적어도 나씨처럼 임베디드 시스템이 자신의 일이 되기 전에는 말이지요. 이번 글에서는 나씨를 괴롭힐 임베디드 시스템은 무엇이고, 펌웨어는 무엇인지 전체적인 설명을 드리겠습니다.




임베디드는 내장형 시스템이다?

우선 임베디드(Embedded)라는 단어는 다 아실 겁니다. '내장된', '탑재된' 정도의 의미입니다. 임베디드 시스템은 '내장형' 시스템 정도로 해석할 수 있습니다. 그러나 이것만으론 충분치 않습니다. 컴퓨터치고 내장돼 있지 않은 시스템이 어디 있단 말입니까. 기기에 시스템이 외장돼 있다면, 그건 컴퓨터가 아니라 그저 하나의 '도구'일 것입니다. 빨래 몽둥이처럼 시스템(사람)이 그저 몽둥이를 빨래에 활용하는 것에 지나지 않을 겁니다.




임베디드는 범용 컴퓨터(PC)의 반대말

우리가 흔히 쓰는 개인용 컴퓨터(Personal Computer)는 다양한 목적으로 쓰입니다. 어떤 이는 영화를 보기 위해, 또 어떤 이는 문서 작업을 위해, 또 어떤 이는 게임을 하기 위해 활용합니다. 운영체제(OS)를 바탕으로 사용자가 원하는 프로그램을 설치하면 원하는 작업을 할 수 있습니다. 이처럼 목적이 다양한 걸 범용 컴퓨터라 부릅니다.

그러나 임베디드 시스템은 하나의 목적을 가지고 설계됩니다. 나씨가 개발해야 할 세탁기를 생각해 봅시다. 세탁기는 옷을 세척하는 게 목적입니다. 일반 세탁을 할 건지, 손빨래를 할 건지, 이불 빨래를 할 건지, 헹굼을 몇 번 할 건지, 물의 온도는 어떻게 할 건지 등은 세탁이라는 목적 아래 구현될 기능입니다. 사용자는 기능을 선택해 버튼을 누르면 되고, 현재 진행 상태를 LCD나 LED 등을 통해 확인할 수 있습니다. 이처럼 임베디드 시스템은 정해진 용도(세탁)로만 기능을 제공합니다. 임베디드 시스템은 일반 PC가 아닌 특수한 목적을 가진 가전제품을 구성하는 시스템이라 보면 됩니다.



쉽게 정리하자면 이렇습니다. 내장형이라는 단어에 혼동하시면 안 됩니다. 범용의 반대말이라고 보시면 됩니다. 차라리 비범용 컴퓨터라고 규정했다면, 헷갈리는 게 줄었을 겁니다. 오래된 세탁소 가운데 상호가 '컴퓨터 세탁'으로 돼 있는 곳을 보셨을 겁니다. 여기서 컴퓨터는 바로 임베디드 시스템을 말합니다. 오래 전부터 세탁소 사장님은 임베디드 시스템의 정의를 명확히 알고 있었습니다.



그러나 만만히 볼 일이 아닙니다. 임베디드 시스템을 구현해야 하는 나씨에게는 앞으로 고통의 시간이 남았습니다. PC에서 범용 목적의 프래그래밍에 익숙한 나씨는 임베디드 시스템 구현에 적합한 코딩과 구현 방식을 처음부터 배워야 합니다. 기존 PC와 개발 환경이 완전히 다르기에 컴파일러(인간이 작성한 컴퓨터 언어를 기계가 이해할 수 있는 기계어로 전환해주는 작업)에 필요한 정보를 나씨가 직접 설정하거나 프로그램 내에서 직접 처리해야 합니다. 게다가 PC와는 달리 임베디드 시스템이 구현될 전자기기는 저마다 특징과 성능 등이 모두 다르기에 그에 최적화된 프로그램을 만드는 것은 숙련된 프로그래머도 쉽지 않은 일입니다.




임베디드 시스템을 구현할 소프트웨어, 펌웨어

임베디드 시스템에서 구현되는 소프트웨어를 '펌웨어'(Firmware)라고 합니다. 하드웨어와 소프트웨어 중간에 있는 셈이지요. 물론 임베디드 시스템은 하드웨어로만 구현할 수 있지만, 하드웨어와 소프트웨어를 병행해 구현할 수 있습니다. 하드웨어로만 구현한다면, 직관적인 만큼 빠른 속도가 장점이겠지만, 기능을 수정하거나 확장하기 어려울 겁니다. 그래서 펌웨어를 통해 소프트웨어를 병행한다면 기능의 수정이나 확장이 쉬워질 겁니다. 물론 펌웨어는 하드웨어를 직접 제어하기 때문에 나씨가 익숙한 범용 PC의 프로그래밍 개발 방식과는 완전히 다른 새로운 프로그래밍 체계를 익혀야 합니다. 그야말로 나씨에게 고생길일 열린 셈입니다.




국내 1위 IT아웃소싱 플랫폼,
위시켓이 궁금하신가요?


위시켓

온라인 아웃소싱 플랫폼 위시켓