영동대학교 임베디드소프트웨어학과 장종국 교수

프로필> 경북대학교 전자공학과 학사, 석사 박사 졸업, 김천대학 교수, 1996년 3월부터 영동대학교 교수로 재직중.

임베디드 소프트웨어(embedded software)에 대해 이해하기 위해 먼저 임베디드 시스템 (embedded system)에 대해 알아야 한다. 임베디드 시스템이란 특정제품이나 솔루션에서 주어진 작업을 수행할 수 있도록 추가로 탑재되는 솔루션이나 시스템으로서 마이크로프로세서 혹은 마이크로컨터롤러를 내장해 특정기능을 수행하는 장치, 즉 컴퓨터의 하드웨어와 소프트웨어가 조합되어 특정 목적을 수행하는 시스템을 말한다.

임베디드 시스템은 현대 생활에 모든 분야에 널리 사용되고 있으며 이의 응용분야는 다양하다. 예를 들어 통신 시스템에서 통신망에서부터 최종 사용자가 사용하는 휴대 전화에 이르기까지 여러 종류의 임베디드 시스템이 사용되고 있다. PDA, MP3 플레이어, 휴대전화, 비디오게임기, 디지털 카메라, DVD 플레이어, 및 디지털 텔레비전과 같은 가전기기도 임베디드 시스템의 응용분야이다. 또한 최근 들어서 전통적인 백색가전제품인 냉장고, 세탁기 등과 같은 제품에서 임베디드 시스템이 이용되고 있으며, 홈 오토메이션도 임베디드 시스템의 한 예이다.

또한 항공기에서부터 자동차에 이르는 운송수단에도 임베디드 시스템이 이용되고 있다. 항공기에는 관성항법 장치나 GPS 수신기를 이용한 항공전자장치를 이용해 안전한 운항을 하도록 하고 있다. 기존의 내연기관 자동차뿐만 아니라 전기자동차나 하이브리드 자동차 등에도 효율을 증가시키고 공해를 줄이기 위해 임베디드 시스템의 사용이 증가하고 있다. 자동차에 사용되는 임베디드 시스템으로는 ABS(anti-lock braking system), ECS(electronic stability control), 자동 4륜 구동 장치 등을 들 수 있다.

생체 신호 수집 장치 (ECG, EMG 등), 전자 청진기, 및 PET, SPECT, CT, MRI 등과 같은 의료 영상장치에도 임베디드 시스템이 이용되고 있다. 또 각종 산업에서 공정제어, 기계제어 등과 같은 자동화 시스템에도 임베디드 시스템이 사용되며, 로봇에도 임베디드 시스템이 사용된다. 따라서 현대 문명에서 전자장치가 사용되는 곳에는 어김없이 임베디드 시스템이 사용되고 있다고 할 수 있다.

일반적인 컴퓨터와 임베디드 시스템의 차이를 살펴보면, 초기의 컴퓨터는 단일 태스크를 수행했으나 오늘날에는 대부분의 작업들이 임베디드 시스템(임베디드 컴퓨터)에 의해 수행되고 있다. 오랜 시간 동안 기계를 제어하는데 반도체 소자 등을 통해 전기계적으로 제어하는 프로그램 가능한 제어기는 컴퓨터 기술을 이용하여 발전되어왔다.

임베디드 시스템이 적용된 것 중 최초라고 할 수 있는 것은 MIT의 찰스 스타크 드레이퍼(Charles Stark Draper)에 의해 개발된 아폴로 우주선 운항시스템이라고 할 수 있다. 1960년대에 임베디드 시스템이 적용된 이래 가격은 절감되고 연산능력과 기능은 매우 급하게 증가했다. 이러한 임베디드 컴퓨터는 인텔이 소형 계산기용으로 4004 마이크로 프로세서를 개발함으로써 그 영역을 넓히게 됐다. 임베디드 시스템은 주로 다음과 같은 특성을 가진다.

 - 일반적인 컴퓨터는 다중 작업을 하는데 비해 임베디드 시스템(컴퓨터)은 특정한 작업을 하는데 적합하다.

- 임베디드 시스템은 다른 장치와 별개로 설치되지 않고, 그것이 제어해야 할 장치에 심어져(embedded) 설치된다.

-임베디드 시스템에 사용되는 소프트웨어는 일반적인 컴퓨터에서는 디스크 드라이브에 저장되지만, 임베디드 소프트웨어는 대부분 ROM이나 플래시 메모리에 저장된다.

임베디드 시스템은 특성상 작업을 정해진 시간 내에 반드시 실행 완료해 결과를 내야 하는 실시간적 특성을 갖는 ’경성 실시간 시스템’이라 한다. 이의 예로는 핵발전소를 제어하는 시스템이나 항공기 제어 시스템 등이 있다. 경성 실시간 시스템은 항상 오작동이 없이 안정적으로 작동돼야 한다.

반면 연성 실시간 시스템은 정해진 시간 내에 실행을 완료하지 못하거나 오작동이 발생하더라고 큰 문제가 발생되지 않는 시스템 들이며, 이의 예로는 PDA, 휴재전화 등을 들 수 있다.

임베디드 소프트웨어

앞서 설명한 임베디드 시스템을 운영하는 소프트웨어를 임베디드 소프트웨어라 한다. 초기의 임베디드 시스템은 지극히 작고 특정한 작업만 했으며, 초기에는 펌웨어(firmware)라 불렸다. 그러나 최근 들어서는 임베디드 시스템에서 소프트웨어가 차지하는 부분이 증가하면서 소프트웨어가 더 복잡하게 되고 운영체제의 개념이 도입됐다.

임베디드 소프트웨어는 크게 임베디드 운영체제와 임베디드 애플리케이션으로 나눌 수 있으며, 이는 범용컴퓨터 환경에서의 구분과 동일하다. 임베디드 시스템은 경우에 따라서 작은 시스템에는 운영체제를 사용하지 않는 경우도 있다. 현대에 들어 임베디드 시스템의 규모는 소형화되지만 기능은 고성능화 되어 임베디드 시스템이 갖는 자원(CPU, memory)을 효과적으로 사용, 제어하고 사용자와의 인터페이스를 편리하게 하기 위해 운영제제가 필요하다. 임베디드 시스템의 특성상 운영체제도 실시간 운영체제(real time OS)를 많이 사용한다. pSOS, OS-9, VRTX, Vxworks,eCOS, velos, CicroC/OS-II, RT-Linux, Windows CE, 및 ETRI에서 개발한 정보가전용 OS인 Qplus 등이 있다.

임베디드 시스템에 사용되는 운영체제는 플랫폼, 하드웨어 특성 또는 시스템 요구사항 등에 맞게 선택해 새로운 시스템에 포팅한다. 대부분의 임베디드 시스템의 경우 CPU나 메모리 자원 등의 구성이 일반 PC 등과 같은 표준적인 플랫폼과는 달리 특수한 시스템으로 일반 PC에서 사용하는 운영체제를 사용활 수 없다.

임베디드 시스템에 운영체제가 설치됐다면 그 운영체제에서 실행 가능한 애플리케이션을 통해 시스템이 지원하는 다양한 기능을 실행하는 애플리케이션을 작성할 수 있다. 이때 사용할 수 있는 언어로는 C, C++ 또는 자바(Java) 등이 있다.

한편, 임베디드 소프트웨어와 패키지 소프트웨어의 차이점을 살펴보면 패키지 소프트웨어는 일반적인 요구와 주어진 시스템의 여건을 감안해 특정목적을 위해 설계된 일련의 프로그램군을 뜻한다. 이것은 앞서 설명한 임베디드 소프트웨어와는 다른 의미를 갖는다. 패키지 소프트웨어는 일반 목적의 컴퓨터 상에서 사용되는 소프트웨어이다. 그러나 임베디드 소프트웨어는 임베디드 시스템 상에서 특정한 작업을 수행하는데 필요한 소프트웨어이다.

 임베디드 시스템의 구성요소

 1) 플랫폼

 임베디드 시스템에는 ARM, MIPS, Coldfile/38k, PowerPC, X86, AVR, 및 8051등과 같은 다양한 CPU 아키텍처가 사용된다. 반면 일반적인 개인용 컴퓨터에는 인텔, AMD, 및 모토롤라의 Power PC등이 사용된다. 현재 임베디드 시스템에 사용되는 CPU 아키텍처는 ARM 코어가 주류를 이루고 있다. 이것 외에도 400여 개 이상의 CPU 코어가 사용되고 있다. 이중 인텔의 8051, Atmel의 AVR, 및 마이크로칩스(MicroChips)의 PIC 등도 많이 사용되고 있다.

현재 임베디드 시스템의 큰 흐름 중 하나는 특정 응용분야에 사용되는 IC들을 하나의 소자에 집적시켜, 즉, CPU, I/O, 아날로그회로, 디지털회로, 및 RF 회로 등을 하나의 IC에 집적시킨 SoC(system on a chip)가 하나의 분야로 발전되어 가고 있다.

 2) 미들웨어

미들웨어는 소프트웨어 컴포넌트나 애플리케이션을 결합하는 소프트웨어를 뜻한다. 이것에는 하나 또는 네트워크 상에 존재하는 컴퓨터에서 작동하는 여러 소프트웨어들이 상호작용하도록 해 주는 역할을 한다. 현재 사용되고 있는 미들웨어에는 embedded Java, J2ME, MULTE-ORB, Open-ORB, GOPI 등이 있다.

 3) 개발 환경 및 툴(tool)

임베디드 소프트웨어 개발 환경 및 툴은 임베디드 운영체제에 따라 다양한 것들이 있다. 그 중 대표적인 것으로서 EDRI의 Qplus 통합 개발환경인 Esto, VxWorks사의 교차 개발환경을 지원하는 Tonado, OS-9 개발 툴인 Hawk IDE, 트롬테크의 임베디드 리눅스용 개발 도구인 Qt/Embedded 등과 마이크로소프트의 eMbedded Visual tools 3.0이 있으며 이것은 Microsoft eMbedded Visual C++ 3.0을 주축으로 MFC를 제공하고 SDI 프로그래밍이 가능하다.

 임베디드 소프트웨어 시장 전망

최근 들어 디지털 기기의 폭발적인 성장에 따라 임베디드 소프트웨어에 대한 관심이 고조되고 있다. 앞서 살펴본 바와 같이 가전제품이나 정보기기들에서도 소프트웨어가 그 기기의 중심적인 역할을 담당하고 있다. 최근 들어 거의 모든 디지털 제품에 임베디드 소프트웨어가 내장돼 핵심적인 기능을 수행하고 있다. 향후 본격적인 유비쿼터스 시대에는 모든 전자제품에 네트워크 연동 등을 위해 임베디드 소프트웨어가 탑재 될 것이다.

임베디드 소프트웨어가 큰 관심을 끌며 떠오르는 분야고 대두되는 것은 이런 사실 때문이다. 특히 국내의 경우 전자회사의 경쟁력은 임베디드 소프트웨어와 관련된 저변 산업 환경에 잘 갖추어져 있어 기능성과 잠재력이 큰 분야로 열려 있다.

이와 같이 임베디드 소프트웨어의 중요성이 커지면서 시장 규모도 지속적으로 증가하고 있다. 우리나라는 일찍부터 임베디드 시스템과 임베디드 소프트에어 관련 산업을 육성해 오고 있으며, 특정지역의 경우 임베디드 시스템 특구로 지정해 이 분야를 국가 전략산업으로 육성하고 있다.

앞으로 거의 대부분이 공산품에는 임베디드 시스템이 탑재될 것이고 이와 더불어 임베디드 소프트웨어 분야는 유비쿼터스 디지털 산업을 선도할 분야가 될 것이다.

 

저작권자 © 디지털투데이 (DigitalToday) 무단전재 및 재배포 금지