FreeRTOS

FreeRTOS是一個熱門的嵌入式裝置用即時作業系統核心，它於2003年由Richard Barry設計，並已被經成功移植到35種不同的微控制器上。FreeRTOS採用MIT許可證授權。

## 實作

FreeRTOS的設計小巧且簡易，整個核心程式碼只有3到4個C檔案，為了讓程式碼容易閱讀、移植和維護，大部分的程式碼都是以C語言編寫，只有一些函式（多數是架構特定排班副程式）採用組合語言編寫。

FreeRTOS提供許多方法以實現多線程（threads）、多作業（task）、互斥鎖（mutex）、號誌（semaphore）和軟體計時器（software timer），有個為低耗電應用程式提供的無嘀嗒（tick-less）模式，執行緒的優先權管理也有支援，此外，FreeRTOS提供了四種記憶體配置的模式：

- 僅配置（allocate only）
- 以非常簡易但快速的演演算法進行配置與釋放
- 搭配記憶體合併，以較複雜但快速的演演算法進行配置與釋放
- 搭配互斥保護，以 C 函式庫配置進行配置與釋放

FreeRTOS中沒有一些像Linux、Microsoft Windows等典型作業系統具有的先進特徵，例如裝置驅動程式、先進記憶體管理機制、使用者管理和網路管理，FreeRTOS著重在執行的簡潔與速度，FreeRTOS有時會被視為是一個『執行緒函式庫』而非『作業系統』，儘管可以找到命令列介面和類似POSIX I/O 介面的插件。

FreeRTOS實作了多執行緒，主程式會在規律的短時間區間內呼叫一個執行緒時計方法，這個方法會以循環制依照任務的優先順序進行任務切換，一般來說，這個短時間區間介於 1/1000 秒與 1/100 秒之間，透過一個硬體時計中斷來計時，但這個區間經常隨著特定的應用而改變。

從FreeRTOS官網（FreeRTOS.org）所下載到的程式碼包含準備用來移植或編譯的設定檔和演示程式碼，讓使用者可以快速地進行應用程式設計。

## 主要特色

- 記憶體足跡非常小，低負擔 (計算)（overhead）且執行非常快速
- 提供低電耗應用程式無計時選項
- 對作業系統新手而言，很適合作為入門教材，對於專業開發者來說則適合用於商業產品開發
- 排程器可以設定成可搶先（preemptive）或協作式多任務處理（cooperative operation）
- 提供共用副程式（coroutine），在FreeRTOS中，共用副程式是一個記憶體堆疊用量非常有限但非常簡易輕巧的任務
- 支援使用（generic trace macros.）

## 支援平台

- Altera Nios II
- ARM architecture
- ARM7
- ARM9
- ARM Cortex-M
- ARM Cortex-A
- Atmel
- Atmel AVR
- AVR32
- SAM3
- SAM4
- SAM7
- SAM9
- SAM D20
- SAM L21
- Cortus
- APS1
- APS3
- APS3R
- APS5
- FPS6
- FPS8
- Cypress半導體
- PSoC
- Energy micro
- EFM32
- Fujitsu
- FM3 series
- MB91460 series
- MB96340
- Freescale
- Coldfire V1
- Coldfire V2
- HCS12
- Kinetis
- IBM
- PowerPC_400,PPC404
- Infineon
- TriCore
- Infineon XMC
- Intel
- x86
- 8052
- PIC微控制器
- PIC18
- PIC24
- dsPIC
- PIC32
- Microsemi
- SmartFusion
- Multiclet
- Multiclet P1
- NXP（NXP LPC）
- LPC1000
- LPC2000
- LPC4300
- Renesas
- 78K0R
- RL78
- H8/S
- RX600
- RX200
- SuperH
- V850
- STMicroelectronics
- STM32
- STR7
- Texas Instruments
- MSP430
- Stellaris
- Hercules處理器（TMS570LS04 & RM42）
- Xilinx
- MicroBlaze
- Zynq-7000

## 相關系統

### SafeRTOS

SafeRTOS的功能和FreeRTOS類似，但是是為實現安全關鍵系統所設計。FreeRTOS的機能模型經過完全的HAZOP，其機能模型及API因為使用者誤用或是硬體失效造成的弱點都已經識別且修正。最後的需求經過完整IEC 61508 SIL 3開發生命週期來實現，也是只有軟體的元件可以達到的最高等級。

SafeRTOS是由WITTENSTEIN high integrity systems開發，原開發者 Real Time Engineers Ltd 為其合作夥伴。SafeRTOS和FreeRTOS有相同的排程演演算法，相似的API，其他方面也相當類似，不過是因為不同的目標而設計的。SafeRTOS只用C語言進行開發，以符合IEC61508的認證需求。

在作業系統中，SafeRTOS有其獨特的地方，是只需要放在微處理器中的唯讀記憶體（ROM）即可，因此可以進行IEC61508或是其他安全或是可靠度相關的完整軟體及硬體預認證。若是放在唯讀記憶體中，SafeRTOS代碼只能依照原始的組態來執行，因此用這套作業系統的設備的認證測試，不需在安全認證中重新測試其開發的程式。

德州儀器會針對其TI Stellaris系列的部份MCU的ROM裡加上SafeRTOS，因此客戶可以將SafeRTOS用在商業應用中，而不用採購其原代碼。在這種使用方式下，會提供一個簡單的C語言標頭檔將SafeRTOS的API函式對映於其在ROM中對應位置內。這種將SafeRTOS放在唯讀記憶體的作法相當理想，因為其中的程式不會被修改，去除了使用者的錯誤，也確保在專案開發過程中，SafeRTOS部份的程式都和認證時的相同。

### OpenRTOS

OpenRTOS也是和FreeRTOS有關的專案，其代碼和FreeRTOS完全相同，但是其授權及收費方式不同。OpenRTOS是由WITTENSTEIN Aerospace and Simulation Ltd提供的軟體，其授權要求移除了所有參考GNU通用公共許可證的內容。OpenRTOS是商業軟體，需購買後才能使用，也沒有上述的授權要求，購買OpenRTOS的客戶也可以獲得完整的技術支援。

## 基本資料

- 開發者：Real Time Engineers Ltd.
- 作業系統家族：實時作業系統
- 運作狀態：活躍
- 源碼模式：可取得原代碼
- 內核類別：微內核
- 支援平台：ARM (ARM7, ARM9, Cortex-M3, ARM Cortex-M4, Cortex-A), Atmel AVR, AVR32, HCS12, MicroBlaze, Cortus (APS1, APS3, APS3R, APS5, FPF3, FPS6, FPS8), MSP430, PIC, Renesas H8/S, SuperH, RX, x86, 8052, Coldfire, V850, 78K0R, Fujitsu MB91460 series, Fujitsu MB96340 series, Nios II, Cortex-R4, TMS570, RM4x
- 市場取向：嵌入式設備
- 許可證：MIT許可證