FreeRTOS
1. 개요
FreeRTOS는 2003년 리처드 배리에 의해 개발된 실시간 운영 체제 커널로, 이후 아마존 웹 서비스(AWS)로 관리 주체가 변경되었다. C 언어로 작성되어 다양한 마이크로컨트롤러 아키텍처를 지원하며, 스레드, 뮤텍스, 세마포어, 소프트웨어 타이머 등을 제공한다. 주요 기능으로는 작은 메모리 크기, 낮은 오버헤드, 틱리스 옵션, 선점형/협력형 멀티태스킹 지원 등이 있다. FreeRTOS를 기반으로 아마존 FreeRTOS, SAFERTOS, OPENRTOS 등의 파생 제품이 있으며, 라이선스는 GPL에서 MIT로 변경되었다.
이미지 준비중입니다.
| 개발사 | 아마존 웹 서비스 |
|---|---|
| 종류 | 실시간 운영 체제 |
| 개발 상태 | 현재 |
| 소스 모델 | 오픈 소스 |
| 최초 출시일 | 2003년 |
| 최신 버전 | 11.1.0 |
| 최신 출시일 | 2024년 4월 22일 |
| 마케팅 대상 | 임베디드 시스템 |
| 프로그래밍 언어 | C |
| 언어 | 영어 |
| 커널 종류 | 실시간 마이크로커널 |
| 라이선스 | MIT |
| 웹사이트 | FreeRTOS 공식 웹사이트 |
| ARM (ARM7, ARM9, Cortex-M3, -M4, -M7, -A, -R4) 아트멜 AVR AVR32 HCS12 마이크로블레이즈 Cortus (APS1, APS3, APS3R, APS5, FPF3, FPS6, FPS8) MSP430 PIC 르네사스 H8/S 슈퍼H RX x86 8052 콜드파이어 V850 78K0R 후지쯔 MB91460 후지쯔 MB96340 니오스 II TMS570 RM4x Espressif ESP32 RISC-V (예: SHAKTI) |
-
임베디드 운영체제 -
블랙베리 10
블랙베리 10은 2013년에 출시된 블랙베리 리미티드의 모바일 운영 체제로, 터치스크린 및 물리 키보드 스마트폰을 지원하며 제스처 기반 인터페이스, 블랙베리 허브 등의 기능을 제공했으나 2022년에 공식 지원이 종료되었다. -
임베디드 운영체제 -
QNX
QNX는 고든 벨과 댄 도지가 개발한 마이크로커널 기반의 실시간 운영 체제로, 산업용 기계 제어 분야에서 신뢰성을 인정받아 현재는 블랙베리가 소유하며 자동차 인포테인먼트 시스템, 자율 주행 시스템 등 다양한 임베디드 시스템에 활용되고, POSIX 표준 준수로 유닉스 계열 소프트웨어와 호환된다. -
위키백과 특수 효과용 -
찰리 채플린
찰리 채플린은 런던 빈민가 출신으로 뛰어난 코미디 연기와 영화 연출로 세계적인 명성을 얻었으며, "작은 방랑자" 캐릭터, 슬랩스틱 코미디, 판토마임 연기, 사회 비판적 메시지, 매카시즘 시대의 탄압, 아카데미 명예상 수상 등으로 대표되는 파란만장한 삶을 살았던 영국의 배우이자 영화 감독이다. -
위키백과 특수 효과용 -
1996년 하계 올림픽
1996년 하계 올림픽은 미국 애틀랜타에서 개최되어 26개 종목 271개 세부 종목으로 구성, 197개국이 참가했으나, 센테니얼 올림픽 공원 폭탄 테러 사건과 재정적 성공, 도시 인프라 개선이라는 양면성을 남겼다. -
실시간 운영체제 -
Nucleus RTOS
Nucleus RTOS는 1993년 Accelerated Technology에서 출시된 실시간 운영 체제로, 다양한 아키텍처와 구성 요소를 지원하며 안전 인증을 받아 여러 제품에 사용되었다. -
실시간 운영체제 -
블랙베리 10
블랙베리 10은 2013년에 출시된 블랙베리 리미티드의 모바일 운영 체제로, 터치스크린 및 물리 키보드 스마트폰을 지원하며 제스처 기반 인터페이스, 블랙베리 허브 등의 기능을 제공했으나 2022년에 공식 지원이 종료되었다.
2. 역사
--
FreeRTOS 커널은 2003년경 리처드 배리에 의해 처음 개발되었으며, 이후 배리의 회사인 Real Time Engineers Ltd.에서 개발 및 유지 관리되었다. 2017년, FreeRTOS 프로젝트 관리는 아마존 웹 서비스(AWS)로 넘어갔다. 배리는 AWS 팀의 일원으로서 FreeRTOS 개발을 계속하고 있다. 아마존으로 전환되면서, 프로젝트의 후속 릴리스는 라이선스가 GPL 버전 2 (FreeRTOS 커널 외부의 독점 코드에 대한 정적 연결에 대한 특별 예외 조항 포함)에서 MIT로 변경되었다.
버전 9까지는 예외 조항이 있는 GPL 하에 배포되었다. 예외 조항은 커널 자체가 오픈 소스인 경우 사용자의 코드를 클로즈드 소스로 유지할 수 있다는 내용이다. 아마존에 인수된 후의 버전 10부터는 MIT 라이선스를 채택하고 있다.
3. 구현
FreeRTOS는 이식성과 유지보수성을 높이기 위해 대부분 C로 작성되었다. 아키텍처별 스케줄러 루틴 등 필요한 경우 소수의 어셈블리 언어 함수도 포함한다. 커널 자체는 3~4개의 C 파일로 구성되어 있으며, 코드는 가독성이 좋고 이식 및 유지보수가 용이하다.
3.1. 프로세스 관리
FreeRTOS는 여러 개의 스레드 또는 태스크, 뮤텍스, 세마포어, 소프트웨어 타이머를 위한 방법을 제공한다. 저전력 애플리케이션을 위해 틱리스 모드가 제공된다. 스레드 우선 순위가 지원된다. FreeRTOS 애플리케이션은 정적으로 할당될 수 있지만, 객체는 다음 5가지 메모리 관리 (할당) 방식으로 동적으로 할당될 수도 있다.
* 할당만;
* 매우 간단하고 빠른 알고리즘으로 할당 및 해제;
* 메모리 병합을 사용하는 더 복잡하지만 빠른 할당 및 해제 알고리즘;
* 여러 메모리 영역에 힙을 분산시킬 수 있는 메모리 병합을 포함하는 더 복잡한 방식의 대안;
* 일부 상호 배제 보호 기능을 갖춘 C 라이브러리 할당 및 해제.
FreeRTOS는 호스트 프로그램이 정기적인 짧은 간격으로 스레드 틱 메서드를 호출하여 여러 스레드를 구현한다. 스레드 틱 메서드는 우선 순위 및 라운드 로빈 스케줄링 방식을 기반으로 태스크를 전환한다. 일반적인 간격은 하드웨어 타이머의 인터럽트를 통해 1~10밀리초( ~ 초)이지만, 이 간격은 주어진 애플리케이션에 맞게 자주 변경된다.
4. 주요 기능
FreeRTOS는 작은 메모리 크기, 낮은 오버헤드, 빠른 실행 속도를 가진다. 저전력 응용 프로그램을 위한 틱리스(tick-less) 옵션도 제공한다. 취미로 개발하는 사람들과 상업용 제품을 개발하는 전문 개발자 모두를 대상으로 한다.
스케줄러는 선점형 멀티태스킹 또는 협력형 멀티태스킹으로 구성할 수 있다. 코루틴을 지원하는데, FreeRTOS의 코루틴은 태스크와 유사하지만 콜 스택 사용이 제한적이며 간단하고 가볍다.
일반적인 트레이스 매크로를 통해 트레이스를 지원한다. FreeRTOS 파트너인 Percepio의 상용 도구인 Tracealyzer와 같은 도구를 사용하여 디버깅 및 검증을 위해 세마포어 및 큐 작업에 대한 태스크 스케줄링 및 커널 호출을 포함하여 FreeRTOS 기반 시스템의 런타임 동작을 기록하고 시각화할 수 있다.
5. 지원 아키텍처
FreeRTOS는 다양한 종류의 마이크로컨트롤러 및 프로세서 아키텍처를 지원한다.
| 제조사 | 제품군 | 세부 모델 |
|---|---|---|
| 알테라 | Nios II | |
| ARM 아키텍처 | ARM7 | |
| ARM9 | ||
| ARM Cortex-M | ||
| ARM Cortex-A | ||
| Cortex-M0 | ||
| Cortex-M3 | ||
| Cortex-M4 | ||
| Ceva-BXx | ||
| SensPro | ||
| Ceva-XC16 | ||
| Ceva-XM6, Ceva-Xx, Ceva-XM4 | ||
| Atmel | Atmel AVR | |
| AVR32 | ||
| SAM3 / SAM4 | ||
| SAM7 / SAM9 | ||
| SAMD20 / SAML21 | ||
| Cortus | APS1 | |
| APS3 | ||
| APS3R | ||
| APS5 | ||
| FPS6 | ||
| FPS8 | ||
| Cypress | PSoC | |
| 에너지 마이크로 | EFM32 | |
| eSi-RISC | eSi-16x0, eSi-32x0 | |
| DSP 그룹(DSP Group) | DBMD7 | |
| Espressif | ESP8266ex | |
| ESP32 | ||
| 후지쯔 | FM3 | |
| MB91460 | ||
| MB96340 | ||
| 프리스케일 | 콜드파이어 V1 / V2 | |
| HCS12 | ||
| 키네티스(Kinetis) | ||
| Kinetis K1x, K2x | ||
| HCS12 | ||
| IBM | PPC404 / PPC405 | |
| 인피니언 | TriCore | |
| Infineon XMC4000 | ||
| 인텔 | x86 | |
| 8052 | ||
| 마이크로칩 테크놀로지 | PIC18 / PIC24 / dsPIC | |
| PIC 마이크로컨트롤러 PIC32 | ||
| 마이크로세미 | 스마트퓨전 | |
| Multiclet | Multiclet P1 | |
| NXP | LPC1000 | |
| LPC2000 | ||
| LPC4300 | ||
| 르네사스 | 78K0R | |
| RL78 | ||
| H8/S | ||
| RX600 | ||
| RX200 | ||
| SuperH | ||
| V850 | ||
| RISC-V | RV32I | |
| RV64I | ||
| PULP RI5CY | ||
| FR 패밀리(MB91460 시리즈), F2MC-16FX 패밀리(MB96340 시리즈) | ||
| 실리콘 랩스 | Gecko (ARM Cortex) | |
| ST마이크로일렉트로닉스 | STM32 | |
| STR7 | ||
| 텍사스 인스트루먼츠 | C2000 시리즈 (TMS320F28x) | |
| MSP430 | ||
| Stellaris | ||
| 허큘리스 (TMS570LS04 & RM42) | ||
| 자일링스 | 마이크로블레이즈 | |
| Zynq-7000 | ||
| 소프트 프로세서 |
6. 파생 제품
FreeRTOS 커널은 2003년경 리처드 배리가 개발하였으며, 이후 그의 회사인 Real Time Engineers Ltd.에서 개발 및 유지 관리되었다. 2017년, 이 회사는 FreeRTOS 프로젝트 관리를 아마존 웹 서비스(AWS)로 넘겼다. 배리는 AWS 팀의 일원으로서 FreeRTOS 작업을 계속하고 있다. 아마존으로 전환되면서, 프로젝트의 라이선스는 GPL 버전 2에서 MIT로 변경되었다.
FreeRTOS를 기반으로 개발된 주요 파생 제품은 다음과 같다:
* [[Amazon FreeRTOS]]: 아마존에서 사물 인터넷(IoT) 지원을 위한 라이브러리를 갖춘 FreeRTOS 확장판이다.
* SAFERTOS: FreeRTOS와 유사한 기능을 가지지만 안전 필수 구현을 위해 설계되었다.
* OPENRTOS: Wittenstein High Integrity Systems에서 판매하는 아마존 FreeRTOS의 상용 라이선스 버전이다.
6.1. Amazon FreeRTOS
아마존은 사물 인터넷(IoT) 지원을 위한 라이브러리를 갖춘 FreeRTOS의 확장판을 제공하며, 이는 특히 아마존 웹 서비스(AWS)를 위해 제작되었다. 2017년 버전 10.0.0부터 아마존은 원본 커널에 대한 업데이트를 포함하여 FreeRTOS 코드 관리를 맡았다.
6.2. SAFERTOS
SAFERTOS는 FreeRTOS의 보완 버전으로 개발되었으며, 공통 기능을 가지면서도 안전 필수 구현을 위해 설계되었다. FreeRTOS는 위험성 및 운용성 연구(HAZOP)를 거쳤으며, 약점이 식별되어 해결되었다. 그 결과는 소프트웨어 전용 구성 요소의 최고 수준인 전체 IEC 61508 SIL 3 개발 수명 주기를 거쳤다.
SAFERTOS는 FreeRTOS 프로젝트의 주요 개발자인 Real Time Engineers Ltd와 파트너십을 맺고 Wittenstein High Integrity Systems에 의해 개발되었다. SAFERTOS와 FreeRTOS는 동일한 스케줄링 알고리즘을 공유하고 유사한 응용 프로그래밍 인터페이스(API)를 가지지만, 개발 목표가 달랐다. SAFERTOS는 IEC61508 인증 요구 사항을 충족하기 위해 전적으로 C 언어로 개발되었다.
SAFERTOS는 표준 준수를 위해 마이크로컨트롤러의 온칩 읽기 전용 메모리(ROM)에만 존재할 수 있다. 하드웨어 메모리에 구현된 경우 SAFERTOS 코드는 원래의 인증된 구성에서만 사용할 수 있다. 즉, 시스템을 인증하는 데 설계의 커널 부분에 대한 재테스트가 필요하지 않다. SAFERTOS는 Texas Instruments의 일부 Stellaris 마이크로컨트롤러의 ROM에 포함되어 있다. SAFERTOS 소스 코드는 별도로 구매할 필요가 없다. 이 사용 시나리오에서는 C 헤더 파일을 사용하여 SAFERTOS API 함수를 읽기 전용 메모리의 해당 위치에 매핑한다.
6.3. OPENRTOS
Wittenstein High Integrity Systems에서 판매하는 상용 라이선스 버전의 아마존 FreeRTOS이다. 이 제품은 아마존 FreeRTOS 커널 및 라이브러리를 MIT 라이선스 없이 사용할 수 있도록 지원한다.
OpenRTOS는 FreeRTOS에서 GPL에 대한 언급과 GPL에 의한 구현을 모두 제거한 것이다. 예를 들어, 상용 제품에 FreeRTOS를 통합한 경우에는 제조자는 FreeRTOS를 사용하고 있음을 인지하고, 사용자가 요구할 경우 GPL 규정에 따라 소스 코드를 공개해야 하지만, OpenRTOS를 채택하는 경우에는 그러한 제약이 없다.
7. 라이선스
FreeRTOS 커널은 2003년경 리처드 배리(Richard Barry)에 의해 처음 개발되었으며, 이후 배리의 회사인 Real Time Engineers Ltd.에 의해 개발 및 유지 관리되었다. 2017년에 이 회사는 FreeRTOS 프로젝트의 관리를 아마존 웹 서비스(AWS)로 넘겼다. 배리는 AWS 팀의 일원으로서 FreeRTOS 작업을 계속하고 있다.
버전 9까지는 예외 조항이 있는 GPL 하에 배포되었다. 예외 조항은 커널 자체가 오픈 소스인 경우 사용자의 코드를 클로즈드 소스로 유지할 수 있다는 내용이다. 아마존에 인수된 후의 버전 10부터는 MIT 라이선스를 채택하고 있다.