임베디드 소프트웨어
IT 위키
더 많은 작업
임베디드 소프트웨어(Embedded Software)는 임베디드 시스템의 하드웨어에 탑재되어, 그 장치의 정해진 기능만을 수행하도록 만든 소프트웨어이다.
가전제품, 자동차 전자제어장치, 의료기기, 산업용 제어기, 통신 장비 같은 장치는 범용 PC 와 달리 하나의 목적을 위해 만들어진다. 이런 장치에 들어가 하드웨어를 직접 제어하는 소프트웨어가 임베디드 소프트웨어이다.
임베디드 소프트웨어는 실행되는 장치(타깃)와 개발하는 장치(호스트)가 서로 다르다는 점이 일반 응용 소프트웨어와 가장 크게 다르다. 타깃은 CPU 성능, 메모리, 저장 공간이 작고 화면이나 키보드가 없는 경우가 많아, 그 위에서 직접 컴파일하거나 디버깅하기 어렵다. 그래서 PC 에서 타깃용 실행 파일을 만들어 내려받는 교차 개발 환경(cross development environment)을 쓴다.
임베디드 소프트웨어는 하드웨어 위에 여러 계층으로 쌓인다.
| 계층 | 구성 요소 | 역할 |
|---|---|---|
| 응용 계층 | 응용 프로그램 | 장치의 고유 기능(제어 알고리즘, 사용자 화면, 통신 처리)을 수행한다 |
| 미들웨어 계층 | 통신 스택, 파일 시스템, GUI 라이브러리, 데이터베이스 | 응용 프로그램이 공통으로 쓰는 기능을 제공한다 |
| 운영체제 계층 | 실시간 운영체제(RTOS), 임베디드 리눅스 등 | 태스크 스케줄링, 메모리 관리, 인터럽트 처리, 태스크 간 통신을 맡는다. 단순한 장치는 운영체제 없이 무한 루프로 동작하기도 한다 |
| 하드웨어 의존 계층 | 부트로더, BSP(Board Support Package), 디바이스 드라이버 | 하드웨어를 초기화하고 운영체제를 올리며, 주변 장치를 상위 계층에 추상화해 제공한다 |
| 하드웨어 | 프로세서, 메모리, 입출력 장치, 센서·액추에이터 | 소프트웨어가 제어하는 대상이다 |
- 부트로더 : 전원이 켜지면 가장 먼저 실행되어 CPU·메모리를 초기화하고 운영체제 커널을 메모리에 올린다
- BSP : 특정 보드에서 운영체제가 동작하도록 해 주는 보드 전용 코드 묶음(초기화 코드, 드라이버, 설정)이다
- 디바이스 드라이버 : 주변 장치를 제어하는 저수준 코드다. 상위 계층은 드라이버를 통해 하드웨어를 다룬다
| 구분 | 호스트(Host) | 타깃(Target) |
|---|---|---|
| 장치 | 개발자가 쓰는 PC·워크스테이션 | 소프트웨어가 실제로 동작할 임베디드 보드 |
| 하는 일 | 코드 작성, 교차 컴파일, 링크, 디버깅 제어 | 내려받은 실행 이미지를 실행 |
| 연결 | 시리얼(UART), 이더넷, USB, JTAG 로 연결해 실행 이미지를 내려받고 디버깅한다 | |
- 교차 컴파일러(cross compiler) : 호스트에서 돌지만 타깃 CPU 용 기계어를 만드는 컴파일러다. x86 PC 에서 ARM 용 실행 파일을 만드는 것이 예다
- 링커·로더 : 목적 파일을 묶어 타깃 메모리 배치(링커 스크립트)에 맞는 실행 이미지를 만든다
- 원격 디버거 : 호스트의 디버거가 타깃에서 실행 중인 프로그램을 원격으로 제어한다
- JTAG·ICE : 칩의 디버그 포트에 직접 붙어 프로그램을 멈추고 레지스터·메모리를 들여다본다. 플래시에 이미지를 기록하는 데도 쓴다. ICE(In-Circuit Emulator)는 타깃 CPU 를 대신해 동작하는 장비다
- 에뮬레이터·시뮬레이터 : 실제 보드가 없거나 개발 초기일 때 타깃을 소프트웨어로 흉내 내어 시험한다
- 통합 개발 환경 : 위 도구들을 하나로 묶어 편집·빌드·내려받기·디버깅을 한 화면에서 처리한다
- 요구사항 분석 — 기능, 실시간 제약, 하드웨어 자원 한도를 정한다
- 하드웨어·소프트웨어 분할 — 하드웨어로 처리할 기능과 소프트웨어로 처리할 기능을 나눈다
- 설계 — 계층 구조, 태스크 구성, 인터럽트 처리 방식을 정한다
- 구현 — 호스트에서 작성하고 교차 컴파일한다
- 타깃 이식·디버깅 — 실행 이미지를 내려받아 JTAG·원격 디버거로 시험한다
- 통합 시험 — 실제 하드웨어와 함께 실시간 성능과 신뢰성을 검증한다
자동차처럼 안전이 중요한 분야는 ISO 26262 같은 기능 안전 표준에 따라 개발 절차와 검증을 관리한다.