검수요청.png검수요청.png

임베디드

위키원
이동: 둘러보기, 검색

임베디드(embedded)은 기계나 기타 제어가 필요한 시스템에 대해, 제어를 위한 특정 기능을 수행하는 소프트웨어를 내장한 것을 말한다. 임베디드 시스템(embedded system) 또는 임베이드 소프트웨어(embedded software)라고도 한다.

개요[편집]

PC로는 프로그래밍, 문서작업, 멀티미디어 관련 작업 등 소프트웨어를 설치하면 사용자가 원하는 작업을 할 수 있다. 즉 PC는 범용 목적의 시스템이다. 하지만 임베디드 시스템은 특정 제품이나 솔루션에서 주어진 작업을 수행하도록 특정한 목적을 가지고 설계된다. 예를 들어 전자레인지는 음식을 데우고, 찜, 구이 등의 요리를 할 수 있도록 설계된 시스템 이고 핸드폰은 통신기능에 특화된 시스템이며 게임기는 게임기능에 특화하여 개발되었다. 이런 기능적인 요소들을 제공하기 위해 하드웨어를 제어하고 정보를 사용자에게 보여준다. 이처럼 범용 목적이 아닌 정해진 용도에 국한되어 특수 목적을 제어하기 위해 제작되는 시스템을 임베디드 시스템이라고 한다. 임베디드 시스템의 구성은 정해진 기능에 필요한 하드웨어와 소프트웨어로 이루어진다.[1]

역사[편집]

특징[편집]

임베디드 시스템은 범용으로 만들어진 것이 아니라 특수목적으로 만들어진다. 특수 목적이라는 것은 PC와 같이 모든 작업이 가능한 시스템이 아닌, 한두 종류의 기능에 특화되도록 시스템을 설계한다는 의미이다. 따라서 입출력장치가 제한되어 있어 임베디드 시스템에서 직접 개발한다는 것은 거의 불가능 하며, 이러한 문제를 해결해 줄 수 있는 개발환경을 구축해야 한다. PC용 소프트웨어를 개발할 때는 개발환경과 실행환경이 같습니다. 이를 네이티브 개발환경이라고 한다. 하지만 임베디드 소프트웨어 개발환경은 개발하는 시스템의 프로세서와 실행될 시스템의 프로세서가 같지 않으며 이를 크로스 개발환경이라고 한다. 이 말은 일반 응용프로그램을 개발할 때 사용하는 컴파일러와는 다른 컴파일러를 사용해야 한다는 뜻이 된다. 임베디드 소프트웨어를 개발하려면 개발환경과 다른 프로세서용 기계 코드를 생성해주는 컴파일러가 필요하며 이를 크로스컴파일러라고 한다. 크로스 개발에서 소프트웨어를 개발하는 환경을 호스트 시스템, 소프트웨어가 실행되는 시스템을 타깃 시스템이라고 한다. 쉽게 말해 프로그램 개발작업을 하는 PC가 호스트 시스템이 되고 임베디드 프로세서와 메모리 및 주변기기로 이루어진 임베디드 시스템이 바로 타깃 시스템이 되는 것이다.[1]

  • 기능이 제한적-특정 기능에 특화된 시스템이로서 지정된 기능 외의 기능은 제공하지 않는다.
  • 크기의 제약-모바일 제품이 많고 작은 제품들에서도 사용할 수 있어야 하기 때문에 작고 가벼워야 한다.
  • 자전력-배터리 용량의 한계로 전력 사용이 제한적이다.
  • 다양한 프로세스와 운영체제-임베디드는 임베디드전용의 다양한 운영체제와 프로세스가 존제하며, pc용 프로세스와 운영체제는 사용이 불가하다.
  • 실시간성 제공-의료기기,공장 자동화 시스템,군용에서는 한정된 시간이 필수적이다.
  • 하드디스크-임베디드는 하드디스크(HDD)가 없고 대신 ROM,RAM,Flash메모리로 구성되어있다.[2]

임베디드 시스템의 핵심, MPU[편집]

임베디드 시스템이 더 많은 기능과 성능을 소화할 수 있는 것은, 그만큼 여기에 사용되는 프로세서가 기기 구동에 요구되는 성능을 내주는 덕분이다. 하지만 브로드컴의 마이크로프로세서(Micro Processor Unit, 이하 MPU) 중 하나인 BCM2837은 쿼드코어 구성에 동작 속도는 1.2GHz다. 우리가 사용하는 데스크톱 PC 프로세서에 비할 바가 못 된다. 초기의 MPU는 하나의 칩에 데이터 처리를 위한 레지스터, 수학적 연산을 위한 ALU(Arithmetic Logic Unit), 결과값을 저장하는 flag 등의 구성이 집적되는 형태로 만들어졌다. 과거에는 용도와 범용성에 따라 CPU와 MPU로 나눠 지칭했으나, 지금은 그 경계가 약간 모호하다. 이후 하나의 칩에 프로세서와 메모리, 제어 인터페이스까지 내장된 마이크로컨트롤러가 등장하며 실시간 운영체제나 자동제어에 사용되는 형태로 발전했다. 라즈베리파이, 아두이노, 에디슨 등 일부 범용성을 가진 초소형 컴퓨터가 마이크로컨트롤러에 해당한다. MPU는 그 사용이나 설정에 사용자가 개입할 여지가 있는 모든 전자기기에 포괄적으로 포함돼 있다고 보면 간단하다. 현재 기자의 주변에 있는 스마트폰, 스마트밴드, 태블릿PC에 사용되고, 다양한 단축키와 키 무한입력 등의 기능을 제공하는 기계식 키보드에도 들어가 있다. TV나 에어컨에도 있고 그 TV와 에어컨을 조작하는 리모컨에도 있다. 게임 콘솔, 자동차의 트립 컴퓨터와 스마트키에도 있다. 컴퓨터용 CPU 하면 인텔과 AMD가 전부라고 할 수 있지만, MPU를 만드는 기업은 이 두 업체 말고도 많다. 브로드컴부터 미디어텍, 삼성전자, 애플, 엔비디아, 퀄컴, 텍사스인스트루먼트 등 많은 기업들이 수많은 전자기기에 사용되는 MPU를 만들고 있다. 애플처럼 자사 기기에만 사용하는 유닛을 만들기도 하고, 브로드컴이나 퀄컴처럼 통신기기용 MPU 공급에 집중하는 기업도 있다.[3]

임베디드 시스템의 소프트웨어와 하드웨어[편집]

기본적으로 임베디드 시스템의 구성은 S/W의 경우 응용소프트웨어+임베디드OS+디바이스 드라이버로 이루어지고 H/W의 경우 임베디드 프로세서+기억장치+주변기기로 이루어진다. 임베디드 시스템은 하드웨어만으로도 구성이 가능하지만 하드웨어와 소프트웨어를 병행하여 개발하면 추가 기능 개발이나 유지보수에 드는 비용을 줄일 수 있다. 일반적으로 하드웨어란 수동 부품, 프린트 기판 등과 같이 물리적으로 존재하는 요소이다. 반면에 소프트웨어는 하드웨어를 제어하기 위해 내장되는 명령어 집합이라고 볼 수 있다.

소프트웨어[편집]

임베디드 소프트웨어(Embedded Software)란 PC 이외의 전자 기기에 내장되어 제품에 요구되는 특정한 기능을 구현할 수 있도록 하는 소프트웨어를 말한다. 그 종류로는 RTOS(Real-Time Operating System), 미들웨어, 응용 S/W 등이 있는데, 최근 전자제품의 디지털화/지능화/네트워크화가 심화되어 감에 따라 그 사용 범위가 점차 확대되어 가는 추세이다. 일례로 BMW 7시리즈 자동차에 설치되는 텔레매틱스 단말기에 Windows CE for Automotive가 내장되어 내비게이션, 차량 내 온도 제어, 엔터테인먼트 등의 기능 구현을 용이하게 하고 있다. 이외에도 게임기, DVD 레코더, 디지털 카메라 등 다양한 제품에 임베디드 소프트웨어가 장착되어 필요한 기능들을 수행하고 있다. 임베디드 소프트웨어는 비행제어 시스템이나 항법 시스템과 같은 시스템에서 고도의 신뢰성과 실시간 처리를 지원해야 하며, 상대적으로 부족한 자원을 사용하는 하드웨어상에서 동작하기 위해 최적화된 기술을 지원하여야 한다. 그리고 일반적으로 사용되는 범용 데스크탑이나 서버에서 실행되는 패키지와는 다른 특정 시스템 전용 목적을 가지고 개발되어야 하며 단독형 시스템뿐만 아니라 유무선 네트워크를 통해 연결될 수 있어야 하고, 멀티미디어 정보를 처리하는 기술이 필요한 디지털 TV, PDA 및 스마트 폰 등과 같은 임베디드 시스템을 지원해야 한다. 임베디드 시스템으로 제공되는 플랫폼은 다양한 기종과 규격의 마이크로프로세서로 구성되어 있다. 따라서 각각의 프로세서에 최적화된 별도의 솔루션이 동시에 제공되어야 하며, 고난도의 임베디드 소프트웨어 애플리케이션을 빠르고 안정되게 개발하기 위해 사용하기 쉬운 개발 도구가 필요하다.[4]

임베디드 시스템의 소프트웨어는 OS(운영체제)와 응용프로그램으로 크게 나눌 수 있다. OS는 기본 소프트웨어라고도 하며 시스템의 전체적인 운영을 담당하는 소프트웨어로 하드웨어와 응용프로그램을 중재하고 주로 다음과 같은 역할을 수행한다.

  1. 하드웨어 사양의 차이를 흡수
  2. 연산 기능 및 메모리 등의 리소스(자원) 관리
  3. 시스템 이용 효율의 최적화
  4. 입출력 기능과 네트워크 기능의 관리

App(응용 프로그램)은 응용 소프트웨어라고도 하며 어떤 특정한 기능을 수행하는 소프트웨어이다. 입출력 장치를 포함한 특수 용도의 작업 실행함으로써 사용자와 대면하는 소프트웨어로 대부분은 OS에서 동작하며 App의 대표적인 예로는 휴대전화의 메일 소프트웨어, 자동차 내비게이션의 지도 표시 소프트웨어 등이 있다.[1]

임베디드 소프트웨어의 구조[편집]

  • 운영체제 : 시스템의 자원을 효율적으로 관리하고 운영
  • 디바이스 드라이버 : 다양한 하드웨어 장치를 관리
  • 미들웨어 : 응용 프로그램과 운영체제간에 원만한 통신을 도움
  • 응용 프로그램 : 사용자가 직접 접하는 최상의 프로그램[5]

임베디드 소프트웨어의 개발언어[편집]

  • 기계어 : CPU가 이해하는 0과 1로 이루어진 디지털 신호, CPU의 제조회사 및 종류에 따라 모두 다름
  • 어셈블리어 : 기계어 작성의 불편함을 극복하고 보다 사람이 이해하기 쉽도록 개발한 일종의 기호 언어임
  • 어셈블리어의 장점 : 처리 속도 빠름, 용량 적음, 하드웨어 직접 제어래 걸림
  • 어셈블리어의 단점 : CPU에 따라 문법이 다름, 가독성 낮음, 프로그래밍 시간 오래 걸림[5]

임베디드 소프트웨어의 동작원리[편집]

  • 시스템 구성 : 중앙처리 장치(CPU) + 메모리 + 주변장치
  • CPU : 프로그램을 수행하기 위해 메모리에 저장되어 있는 명령어들을 실행함으로써 시스템의 핵심적인 역할 수행
  • CPU의 명령 처리 순서 : > Fetch(해석) > Decode(해석) > Excute(처리) > Save(저장) >[5]

임베디드 소프트웨어 개발 도구[편집]

  • 호스트와 타겟 시스템
  • 호스트에는 크로스 컴파일러와 디버깅 도구를 비롯한 개발 도구가 설치 되어있어야 한다.
  • 롬 라이터, 롬 프로그래머를 이용
  • 시리얼 통신이나 네트워크 통신을 통한 이미지 다운로드
  • JTAG/BDM 인터페이스를 통한 이미지 다운로드
  • 디버깅: 리모트 디버거, ICE, JTAG/BDM 인터페이스를 이용하는 방법이 있고 하드웨어 디버깅 툴에는 멀티미터와 오실로스코프, 로직애널라이져가 있다.[5]

하드웨어[편집]

컴퓨터 시스템에서의 하드웨어는 시스템을 구성하는 모든 물리적 부품들을 말한다. 특히 이 중에서도 가장 중요한 부품은 마이크로 프로세서인데 이를 구동하기 위해서는 파워서플라이, 그래픽 카드, 하드디스크 등등 여러가지 입력기기와 출력기기가 필요하다. 마찬가지로, 임베디드 시스템에서도 컴퓨터 시스템과 동일하다고 볼 수 있다. 다만 차이점이 있다면은 임베디드 시스템은 마이크로 컨트롤러 단독으로 구동되거나 아주 아주 간단한 주변 회로로 구성되는 경우가 있다는 것이다. 또한 마이크로 컨트롤러는 마이크로 프로세서에 비해서 성능이 매우 떨어져 고성능의 입출력 장치를 지원할 수 없게 설계되어있다. 때문에 컴퓨터 시스템에 비해 하드웨어가 매우 간단한 구성으로 되어있다.[6] 임베디드 시스템의 하드웨어는 마이크로 프로세서, 메모리, 입출력 장치, 센서 등으로 구성되어 있으며 각 장치는 다음과 같은 역할을 한다.

  • 마이크로프로세서: 정해진 명령어(산술연산, 논리 연산, 입출력, 수행제어 등)을 수행하는 하드웨어 장치
  • 메모리: 마이크로프로세서가 수행할 명령어 및 데이터를 저장하는 장치
  • 입출력 장치: 시스템 외부와 내부 사이에 데이터를 전달하는 장치
  • 센서: 시스템 외부에서 정보(온도, 압력, 습도 등)를 수집하는 장치[1]

오픈소스 하드웨어[편집]

임베디드 개발 보드는 예전에는 일부 개발자와 엔지니어들의 고유의 영역이나 마찬가지였다. 하지만 지금은 약간의 관심과 지식만 가지면 누구나 접할 수 있을 정도로 보편화됐다. 형태와 성능은 모두 다르지만 가장 많이 사용하고 있는 것이 개발 보드의 생김새다. 실제로 대부분의 임베디드 시스템의 기본 구조가 개발 보드와 같은 맥락으로 만들어진다. 전력 소모도 아주 적고 크기도 적용 기기에 따라 아주 작게 만들 수 있어 활용 범위가 굉장히 넓다. 개인이 사용할 수 있는 개발 보드 몇 종류는 어려가지가 있다. 예를들면 영국의 라즈베리 파이 재단에서 만든 동명의 초소형 컴퓨터 ‘라즈베리 파이',2005년 이탈리아의 학생들이 자동전압조정기(Auto Voltage Regulator, 이하 AVR)을 기반으로 고안한 개발 도구 아두이노,임베디드 보드 중에서도 고사양 하드웨어에 속하는 라떼판다등이 있다.[3]

임베디드 시스템의 응용 분야[편집]

  • 정보가전
  • 제어분야
  • 정보기기
  • 네트워크 기기
  • 게임기기
  • 항공/군용
  • 물류/금융
  • 차량/교통
  • 사무/의료[5]

활용[편집]

종류[편집]

각주[편집]

  1. 1.0 1.1 1.2 1.3 슈어소프트테크,〈임베디드 시스템의 개요〉, 《네이버 블로그》, 2018-08-14
  2. 김정출,〈임베디드 시스템의 이해〉, 《티스토리》, 2015-12-18
  3. 3.0 3.1 정환용 기자,〈요구성능 높아지는 임베디드 하드웨어〉, 《테크월드》,2017-08-14
  4. 박한솔, 김문회, 〈임베디드 소프트웨어 기술 동향〉, 《ITFIND》
  5. 5.0 5.1 5.2 5.3 5.4 류명운,〈임베디드 시스템 공부 정리〉, 《티스토리》, 2017-11-08
  6. 아이네오,〈임베디드 시스템은 무엇이며 어떤 구성으로 되어있나?〉, 《네이버 블로그》,2015-10-28

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 임베디드 문서는 사물인터넷에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.