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许可证