영어 그대로 해석하면 내장된 시스템, 내장형 시스템을 뜻하며,
어떤 장치가 다른 시스템에 의존하지 않고 독립적으로 특정한 기능을 메모리에 작성하고 수행하는 컴퓨터 하드웨어와 소프트웨어의 조합을 의미합니다.
이러한 이유로 인해 저가로 선택된 기능만을 수행하도록 설계 되어 있으며, 상대적으로 느린 프로세서와 작은 크기의 메모리를 탑재하여 생산비용을 줄이는데 집중하는 특징이 있습니다.
또한 특성상 오랜 기간 오류 없이 안정적으로 돌아가도록 설계해야 한다는 특징이 있습니다.
임베디드 시스템은 카메라, 텔레비전, 핸드폰과 같은 일상 속 편리한 전자제품 뿐만아니라 자동차, 의학, 자동화 산업, 항공 우주 및 방위 등 정말 다양한 분야에서 찾을 수 있습니다.
임베디드 시스템은 크게 세가지 요소로 구성됩니다.
하드웨어
임베디드 시스템의 하드웨어는 마이크로프로세서(MPU)와 마이크로컨트롤러(MCU)를 기반으로 합니다. 마이크로프로세서는 마이크로컨트롤러와 유사하며 일반적으로 메모리 칩 및 DSP (디지털 신호 프로세서)와 같은 다른 기본 컴퓨팅 구성 요소와 통합되는 CPU(중앙 처리 장치)를 의미합니다.
소프트웨어 및 펌웨어
임베디드 시스템에서 구현되는 소프트웨어를 펌웨어(Firmware)라고 합니다. 하드웨어 구동을 맡는 기본 코드 전체를 의미하는 용어로 많이 쓰입니다.
임베디드 시스템용 소프트웨어는 복잡성이 다를 수 있으나 산업용, IoT 시스템의 경우 일반적으로 메모리가 거의 필요하지 않은 매우 간단한 소프트웨어를 실행합니다.
실시간 운영 체제 (RTOS; real-time operating system)
RTOS는 CPU, MPU 또는 DSP의 시간을 가능한 효율적으로 관리하는 소프트웨어를 말합니다. 프로그램 실행 중에 소프트웨어를 감독하고 규칙을 설정하여 시스템이 작동하는 방식을 정의합니다. 임베디드 시스템 또는 소규모 시스템에 항상 포함되지는 않습니다.
Windows나 Unix와 같은 OS(Operating System)와 달리 외부 이벤트에 대해 빠르고 매우 결정적인 반응을 제공합니다.
임베디드 시스템을 개발자하는 직업군을 의미합니다.
임베디드 개발자는 SW을 개발할때 아래와 같은 프로세스를 거쳐 작업합니다.
- 기획 & 분석
장치에 필요한 SW에 대한 계획과 개발 환경 & 방법등을 결정합니다. 진행하기로한 프로젝트내에서 필요한 환경 (운영체제, 보드, BSP 등의 개발 환경)을 마감기간과 비용을 고려하여 설계합니다.- 설계
HW 간의 통신을 위한 Driver, 모듈들을 구체화합니다. 앞의 단계에서 적용하기로한 장치들의 호환성이나 유지보수의 기능성을 판별하여 작업을 진행합니다.- 개발
HW와 운영체제를 시작으로 장치들을 사용할 수 있는 모듈들을 개발합니다. 쉽게 말하면 Device Drive를 개발하고 Data 통신체계를 구축합니다. 이후 장치들간의 데이터에 쓰레기 값이 존재하는지, 혹은 성능이 떨어지지 않는지 검증하면서 개발을 마무리합니다.- 유지보수
개발이 끝나도 끝난게 아닙니다. 계속해서 발생하는 장치간의 오류를 잡아내야 합니다. 또한 회사에서 혹은 팀내에서 요구하는 성능을 올리기 위해 유지보수를 합니다. HW에 삽입되는 새로운 장치가 있을 수도 있지만 그보다, 새로 발생하는 예외나 변수에 대한 방책을 만들어 개선해 나갑니다.
(출처: https://mincoding.co.kr/developer/?uid=109&mod=document&pageid=1)
임베디드 개발 분야는 크게 Firmware, kernel, 시스템&플랫폼 개발로 나뉩니다.
- Firmware 개발
SW의 처리 순서를 ROM에 고정시켜, HW를 이용하는 구조를 가진 프로그램을 개발합니다. 펌웨어란 특정 HW 장치에 고정시킨 SW를 통해 HW를 읽어들여 실행하거나 수정하는 것도 가능한 프로그램을 말합니다.- Kernel 개발
Linux 혹은 Unix 시스템의 Kernel Porting 개발합니다. 회사에서 생산하는 제품에서 조건에 맞게 커널의 기능을 수행하고, 설계된 동작들을 사용할 수 있도록 커널을 포팅하는 일을 합니다.
또한 제품 뿐만 아니라 각 HW 장치간의 통신을 위해 Device Driver 를 개발하는 일을 합니다.- 시스템 & 플렛폼 개발
Data & Cloud 시스템 사업이 커지면서, 임베디드 개발자에 대한 수요가 늘고 있습니다.
임베디드 개발자는 Data Center 혹은 기업에서 기억장치 제어를 위한 SW 개발을 주로 합니다. 예를 들어, 시스템과 연결되어 있는 물리적 Flash Memory 내에 Data가 처리되는 과정 혹은 Network 통신을 위해 Driver 단의 모듈을 개발하기도 합니다.
(출처: https://mincoding.co.kr/developer/?uid=109&mod=document&pageid=1)
다음글 올려줘요