Embedded System - Embedded System(임베디드 시스템)이란 무엇인가?

 

ai정리{

임베디드 시스템은단일의 특정 기능을 수행하도록 설계된 대형 기계 또는 전자 장치 내의 작고 독립적인 컴퓨터 시스템 이러한 시스템은 컴퓨터 프로세서( 마이크로컨트롤러 와 유사 ) , 메모리, 입출력(I/O) 장치로 구성되며, 간단한 디지털 시계부터 자동차와 의료 장비의 복잡한 시스템에 이르기까지 거의 모든 현대 기술에 사용됩니다 . 
주요 특징
  • 전담 기능: 
    각 임베디드 시스템은 특정 작업이나 제한된 작업 집합을 수행하도록 최적화되어 있습니다. 
  • 완성: 
    이러한 컴퓨터는 독립형 컴퓨터라기보다는 다른 제품에 "내장"되어 있거나 내장되어 있습니다. 
  • 구성 요소: 
    일반적으로 컴퓨터는 주변 환경과 상호 작용하기 위해 프로세서(대개 마이크로컨트롤러), 메모리, 입출력(I/O) 장치를 포함합니다. 
  • 다양한 인터페이스: 
    임베디드 시스템은 용도에 따라 사용자 인터페이스(UI)가 없는 것부터 복잡한 그래픽 UI(GUI)가 있는 것까지 다양합니다. 
일반적인 예
  • 가전제품: 전자레인지, 세탁기, 텔레비전 등의 제어 시스템. 
  • 자동차 시스템: 자동차 내부의 엔진 제어, 내비게이션 및 기타 기능. 
  • 의료기기: 심장 박동 조절기, 인슐린 펌프, 진단 장비. 
  • 가전제품: 디지털 시계, 계산기, 카메라, 모바일 기기. 
  • 산업 및 IoT: 센서, 자동화된 산업 기계, 스마트 홈 기기. 
왜 사용되는가
  • 효율성: 특정 기능에 맞춰 설계되어 매우 효율적이고 안정적입니다. 
  • 자동화: 복잡하거나 반복적인 작업을 자동화하여 성과와 안전성을 향상시킵니다. 
  • 보편성: 특수한 특성으로 인해 일상생활에 필수적인 다양한 장치에 적합합니다. 

}



1. 개요[편집]

Embedded System

내장형 시스템이라는 뜻으로, 시스템 '내부에 탑재된' 컴퓨터를 뜻한다. 노트북이나 데스크탑 컴퓨터는 문서작성, 게임, 채팅, 웹서핑, 코딩 등 수많은 용도로 사용 가능하기 때문에 임베디드 시스템이 아니고 일반 목적의 범용 컴퓨터이다. 반면 키오스크, 네비게이션, CCTV DVR, 세탁기, 냉장고, 전자렌지 등등 단일목적의 마이크로 컨트롤러 시스템을 임베디드 시스템이라 할 수 있다. 다시 말해 특정한 목적을 수행하며 프로그래밍 가능한 마이크로컨트롤러/컴퓨터 시스템으로 정의 될수 있다. PC용 x86 보드를 특정한 목적에만 사용하도록 설계한다면 역시 임베디드 시스템이라고 할 수 있다. 게임기 역시 '게임'이라는 특정목적을 주로 수행하므로 임베디드 시스템으로 분류할 수 있다.

2. 특징[편집]

성능은 일반 목적 컴퓨팅과 임베디드 컴퓨팅 양 쪽 모두에게 중요한 요소이긴 하지만 임베디드 시스템은 일반 목적 컴퓨터에 비해 더 절제된 디바이스 환경에서 더 정교하고 신속히 작동해야 한다.
  • 프로그램 최적화
    임베디드 시스템의 디바이스들은 절제된 리소스를 사용하므로 메모리 리크, 힙/스택 관리 등과 함께 효율적 코딩이 필요하다. 같은 동작을 하는 앱을 일반 응용 소프트웨어 개발자가 작성한 코드와 임베디드 설계자가 작성한 코드를 비교해보면 임베디드 코드가 압도적으로 간결하고 정갈한 경우가 많다. 왜냐하면 이렇게 하지 않으면 동작 안하는 경우가 많기 때문이다. 2010년도 이후부터는 32비트 이상의 프로세서가 대중화 되어 성능은 좀더 여유로운 상황이나 그만큼 더 큰 부하를 주는 애플리케이션 또한 많이 추가거나[1] 초저전력 시스템의[2] 중요성이 올라가면서 최적화의 중요성은 나날히 올라가는 중이다. 이때문에 임베디드 시스템에 쓰이는 프로그래밍 언어는 대부분 C/C++ 로 국한되어 있으며[3] 경우에따라서는 극한의 최적화를 이끌어내기 위해 어셈블리어까지 쓴다.
  • 주변 디바이스와 연관된 알고리즘
    마이크로프로세서에 의해 수행되는 명령은 주변 디바이스를 직접 제어하기 때문에 안전성이나 정밀도 요구 사항이 더 높다. 자동차 엔진을 컨트롤하는 ECU 마이크로프로세서의 경우 차의 연비를 높이면서 공기 오염을 최소화함과 동시에 차의 퍼포먼스를 높이기 위한 복잡한 필터링 알고리즘을 수행한다.
  • 실시간 처리 지원
    범용 OS보다 즉각적인 실행과 짧은 틱톡 타임 등 실시간 실행이 특징이다. Async, 멀티 스레드/프로세스 등의 Concurrent/Parallel 프로그래밍 기법이 필요하다. 1997년 화성에 착륙한 탐사선 마스 패스파인더는 착륙 후 화성의 기상 정보를 지구로 전송하는 과정에서 우선 순위의 역전이 생기는 바람에 데이터들이 제 시간 안에 처리되지 못했고, 이상을 감지한 시스템은 스스로를 리셋했다. 이후 다시 기상 정보를 수집해 지구로 보내는 과정에서 같은 일이 반복해서 발생하면서 탐사 임무를 제대로 수행하지 못한 일이 발생한 적이 있다. 이런 문제를 줄이기 위해 많은 임베디드 시스템은 RTOS나 고급 라이브러리를 직접 사용한다. RTOS에는 오픈소스로는 freeRTOS, NuttX, 클로스드 소스로는 Nucleus, VxWorks 등이 있다.[4]
  • UX
    제한된 시스템,자원,비용 안에서 UI등의 UX를 구현해야 되는 경우가 많아 아예 없거나 부실한 경우가 많다. 마이크로컨트롤러를 쓰는 시스템의 경우에는 GUI는 기대하는게 거의 불가능한 수준에 가깝고 마이크로프로세서를 쓰는 시스템은 그나마 정상적인 GUI를 구축하는것이 가능하지만 이마저도 퍼포먼스 문제로 버벅이는 시스템을 많이 볼수있다. 따라서 마이크로컨트롤러/프로세서와 별개로 GUI구축을 위한 별도의 HMI 시스템용 컴퓨터 등을 구축해서 UX만 따로 구축된 시스템을 활용하며 이런 시스템을 사용한 대표적인 기기가 차량의 인포테인먼트 시스템[5]이다.
  • 멀티레이트(Multirate)
    이 실시간 작업은 하나만 수행되는 게 아니라 여러 개가 동시에 일어나기도 한다. 임베디드 시스템은 어떤 것들은 slow rate로, 어떤 것들은 fast rate로 수행되도록 동시에 컨트롤해야 한다. 멀티미디어를 예로 들면, 스트리밍되는 오디오 부분과 비디오 부분은 서로 rate가 다르지만, 반드시 동기화되어야 한다.
  • 하드웨어 지식
    펌웨어를 포함하는 임베디드 시스템은 시스템 회로 및 관련 하드웨어에 대한 지식이 필수적이다. 펌웨어나 단순한 앱 프로그래밍 정도 알아서는 디렉팅 및 기획을 할수가 없다. 아날로그 회로, 디지털 로직, 네트워크 통신, EMI/EMC, Safety, 시스템 아키텍쳐등과 함께 디버깅을 위한 프로토타입 제작, 거기에 기구설계 업무까지 관할하는 경우도 있다. 즉, 하드웨어/펌웨어/소프트웨어 디자인을 모두 섭렵한 사람만이 총괄 디렉터로서 임베디드 시스템 디자인이 가능하다.

3. 설계 절차[편집]

반도체 칩 및 IDE 선정, 부트로더 시스템 설계, 임베디드 OS 또는 RTOS 선정, 임베디드 응용 S/W 제작, 테스트 및 디버깅 순으로 진행된다.

모든 과정이 저 과정을 거치는것은 아니고 생략될수도 있다. OS가 생략된 시스템을 쓸 경우 부트로더 제작은 따로 안할수도 있고 고스펙의 PC,안드로이드 보드를 사용할 경우 별도의 소프트웨어 제작 없이 기존에 쓰던 소프트웨어를 튜닝하는 식으로 만들기도 한다.

2010년 중반 이후 Allwinner Technology, Rockchip, Espressif, MediaTek, Actions Semiconductor, Spreadtrum, Leadcore Technology, BroadcomVIA Technologies, Amlogic 등의 칩셋을 사용해서 리눅스나 RTOS를 돌릴 수 있는 디바이스 및 모듈들이 저렴하게 공급되고 있다. 일부 크로스 컴파일러 경우 리눅스 PC나 리눅스 가상환경을 사용하는 경우도 있다. 규모가 큰 프로젝트 경우 RTOS나 리눅스 커널 등을 사용한다.

4. 프로그래밍[편집]

  • 부트로더: 하드웨어 초기화, 커널 부팅, 명령처리 등을 담당한다. 임베디드 시스템을 부팅시키기 위한 별개의 앱이라고 생각하면 편하다. 앱 이미지를 업데이트하기 위한 기능도 있다. 커널이 올바르게 부팅되기 위해 필요한 모든 관련 작업을 마무리하고 최종적으로 OS나 앱이미지를 부팅시킨다.
  • 커널: 리눅스 커널이나 RTOS 등 시스템 운영을 위한 인프라 스트럭쳐이다.
  • 파일 시스템 및 파티션 테이블
    • 문자 (character) 디바이스: open, close, read, write 같은 시스템 콜로 구현한다. 바이트 단위로 입출력한다는 점은 파일과 같으나, 문자 디바이스는 데이터 채널로서 순차적으로만 접근 가능하다는 점이 파일 시스템과 다르다. 블록과 네트워크는 전문적인 곳 위주로 작성되고, 실제로 일반 프로그래머가 작성하는 것은 문자 디바이스가 대부분이다. 터치 스크린마우스키보드사운드카드 같은 휴먼 인터페이스 장치 디바이스 드라이버는 대부분 이쪽에 속한다.
    • 블록 디바이스
  • 네트워크 디바이스 (TCP/IP 프로토콜 스택)
  • JTAG - 하드웨어 제어 프로그래밍 도구

5. 임베디드 반도체 칩[편집]


  • ARM - 마이크로 컨트롤러/프로세서 양쪽으로 유명한 회사. 자체 코어 IP를 가지지 않은 회사들은 대부분 ARM에게서 Cortex-A/M을 라이센스받아 사용한다.
  • RISC-V - 2018년 이후 각광받고 있는 마이크로프로세서이다.
  • Tensilica - Xtensa LX - 미국 케이던스사 IP로 중국 Espressif 반도체 회사에서 채택 사용되고 있다.
  • AVR32
  • Renesas - RX 32-bit MCU; SuperH; V850 32-bit MCU - 차량용에 많이 사용됨
  • TI - MSP432 (32-bit), C2000 (32-bit)
  • 인텔/AMD: 임베디드 라인업으로 아톰/라이젠 임베디드를 내놓고 있고 주로 키오스크,임베디드 서버,제어시스템 등에 들어간다.

로직 반도체

6. 관련 용어[편집]

  • Controller Area Network (CAN): 자동차 제어 시스템에 사용할 목적으로 개발된 것으로, 높은 잡음 면역력, 오류 감지 및 처리, 손실 패킷의 재전송 등의 특징을 갖는 두 가닥 직렬 네트워크이다.
  • 스택(자료구조): 임베디드 시스템에서 인터럽트가 발생했을 때, 프로세서의 현재 상태와 레지스터 값을 보존하기 위해 일반적으로 사용하는 자료구조.

7. 예시[편집]

8. 기타[편집]

  • 반도체 솔루션은 칩,보드, 커널 소프트웨어, RTOS등이 포함된 BSP(Board Support Package) 형태로 각 벤더에서 각자 자기 회사들의 제품용으로 특화된 BSP를 내놓고 있으며 여기에는 RTOS나 임베디드 리눅스 및 부트로더가 포팅되어 있다. 특히 2000년대 이후 부터는 이런 서포트 패키지와 아예 각종 입출력 설정등을 GUI로 하게 해주거나 자동화 해주는 전용 프로그램들[6] 덕분에 프로그래밍 난이도가 많이 내려갔다.
  • 1990년대 초보용 임베디드 실습 키트는 ARM, 8051, 80C196KC, Z80 등 8비트류의 마이크로 컨트롤러가 장착된 학생용 개발보드를 하드웨어 제조사들에서 판매 했었다. 학교나 동호회에서 대량 구매해 실습을 하기도 한다. C언어 등으로 보드가 실제로 동작하는 하드웨어를 직접 제어해보는 행위를 해보는 것이기에 보통 학생들이 재미를 붙여 전자부품 쇼핑을 다니고 인두기, 납땜, 오실로스코프 도구 등을 마련하는 것도 보통 이때 부터 이다.
    임베디드실습키트
  • 임베디드기사 자격증이 2013년부터 시행되기 시작했다. 2016년 필기에 150명이 응시하여 실기에 4명이 합격하였다. 과목은 임베디드 하드웨어, 임베디드 펌웨어, 임베디드 플랫폼, 임베디드 소프트웨어.




출처

https://namu.wiki/w/%EC%9E%84%EB%B2%A0%EB%94%94%EB%93%9C%20%EC%8B%9C%EC%8A%A4%ED%85%9C?uuid=71f72098-b6df-4b63-86d7-a175b461e82c

https://en.wikipedia.org/wiki/Embedded_system


https://bap-software.net/kr/knowledge/what-is-embedded-systems/



댓글

가장 많이 본 글