Step-by-Step
[OS] 개요 - Zephyr란 무엇인가 본문
Zephyr
Zephyr는 임베디드 시스템 및 IoT 기기를 위한 오픈소스 실시간 운영체제(RTOS, Real-Time Operating System)이다.
2016년부터 The Linux Foundation 산하 프로젝트로 운영되고 있으며, 다양한 MCU(Microcontroller Unit)과 SoC(System on Chip)을 지원한다.
Zephyr는 적은 메모리와 저장 공간에서도 동작할 수 있도록 설계되어 있으며, 실시간성이 중요한 임베디드 환경에서 사용된다.
개발 배경
기존 임베디드 시스템에서는 FreeRTOS, VxWorks, ThreadX 등 RTOS가 널리 사용되어 왔다.
IoT 시장이 확대되면서 다음과 같은 요구사항이 증가하게 되었으며, Zephyr 프로젝트를 시작하게 되었다.
- 다양한 MCU 지원
- 오픈소스 기반 개발 환경
- 네트워크 기능 내장
- 보안 기능 제공
- 장기적인 유지보수
Zephyr는 단순한 RTOS 기능 뿐 아니라 다음 요소들을 하나의 프레임워크로 제공한다.
| Kernel Device Driver Framework Device Tree Kconfig Networking Stack Bluetooth Stack Security Framework |
특히 Linux에서 사용되는 Device Tree와 Kconfig를 도입하여 Linux 개발 경험을 가진 개발자가 쉽게 적응할 수 있도록 설계되었다.
주요 특징
1. 경량 운영체제
Zephyr는 매우 작은 메모리 환경에서도 동작할 수 있다. 가령,
| RAM : 수 KB ~ 수백 KB Flash : 수십 KB ~ 수 MB |
따라서 메모리 자원이 제한적인 MCU에서도 사용이 가능하다.
2. 실시간 운영체제
Zephyr는 실시간 응답성을 보장하도록 설계되었다.
Thread / Scheduler / Mutex / Semaphore / Interrupt Handling / Timer
위 기능을 통해 정해진 시간 내에 작업을 수행해야 하는 시스템에 적합하다.
3. Device Tree 지원
Zephyr는 Linux와 유사한 Device Tree 기반 하드웨어 기술 방식을 사용한다.
temp0: temp0 {
compatible = "vendor,temp";
reg = <0x10000000 0x1000>;
temp-id = <0>;
};
하드웨어 정보와 드라이버 코드를 분리할 수 있다.
4. Kconfig 기반 설정
Zephyr는 Linux와 동일한 Kconfig 시스템을 사용한다.
temp0: temp0 {
compatible = "vendor,temp";
reg = <0x10000000 0x1000>;
temp-id = <0>;
};
필요한 기능만 선택하여 펌웨어 크기를 최소화할 수 있다.
5. 다양한 아키텍처 지원
하나의 소스 코드를 다양한 플랫폼에서 사용할 수 있다.
- ARM Cortex-M
- ARM Cortex-R
- ARM Cortex-A
- RISC-V
- x86
- ARC
Linux와의 차이점
| 항목 | Zephyr | Linux |
| 목적 | MCU 기반 RTOS | 고성능 범용 OS |
| 실시간성 | 높음 | 제한적 |
| MMU 필요 여부 | 불필요 | 필요 |
| 메모리 요구량 | KB~MB | 수십~수백 MB |
| 프로세스 지원 | 없음 | 있음 |
| 사용자 공간 | 없음 | 있음 |
| 부팅 시간 | 수 ms | 수 초 |
| Device Tree | 지원 | 지원 |
| Kconfig | 지원 | 지원 |
위 특징을 살펴보면, Zephyr 가 Linux에 훨씬 가벼운 OS라는 점을 알 수 있다.