博主最近在搞 Sensor hub,跑的是 FreeRTOS,所以来学一学 FreeRTOS。
Sensor hub:智能传感集线器,是一种基于低功耗 MCU 和轻量级 RTOS 操作系统之上的软硬件结合的解决方案,其主要功能是连接并处理来自各种传感器设备的数据。诞生之初的目的主要是为了解决在移动设备端的功耗问题。
比如手机中,希望待机的情况下(主控低功耗),还可以获取各种传感器的数据,就可以在主控之外搞一个单片机,跑小系统,来接收各种传感器数据。这样设计可以使主控省电,只需要一点单片机的电。
FreeRTOS 官网:www.freertos.org
FreeRTOS 可以分为两部分:Free 和 RTOS,Free 就是免费的、自由的、 不受约束的,RTOS 是 Real Time Operating System,实时操作系统。
RTOS 不是指某一个确定的系统,而是指一类系统。比如 UCOS,FreeRTOS,RTX,RT-Thread 等这些都是 RTOS 类操作系统。
学习 RTOS 首选 UCOS,因为 UCOS 的资料很多,尤其是中文资料!FreeRTOS 的资料少,而且大多数是英文的,那为何要选择它?原因如下:
1、FreeRTOS 免费!这是最重要的一点,UCOS 是要收费的,学习 RTOS 系统的话 UCOS 是首选,但是做产品的话就要考虑一下成本了。显而易见的,FreeRTOS 在此时就是一个很好的 选择,当然了也可以选择其他的免费的 RTOS 系统。
2、许多其他半导体厂商产品的 SDK 包就使用 FreeRTOS 作为其操作系统,尤其是 WIFI、 蓝牙这些带协议栈的芯片或模块。
3、许多软件厂商也使用 FreeRTOS 做本公司软件的操作系统,比如著名的 TouchGFX,其 所有的例程都是基于 FreeRTOS 操作系统的。ST 公司的所有要使用到 RTOS 系统的例程也均采 用了 FreeRTOS,由此可见免费的力量啊!
4、简单,FreeRTOS 的文件数量很少,这个在我们后面的具体学习中就会看到,和 UCOS 系统相比要少很多!
5、文档相对齐全,在 FreeRTOS 的官网(www.freertos.org)上可以找到所需的文档和源码, 但是所有的文档都是英文版本的,而且下载 pdf 文档的时候是要收费的。
6、FreeRTOS 被移植到了很多不同的微处理器上,比如我们使用的 STM32,F1、F3、F4 和 最新的 F7 都有移植,这个极大的方便了我们学习和使用。
7、社会占有量很高,EEtimes 统计的 2015 年 RTOS 系统占有量中 FreeRTOS 已经跃升至第 一位。
FreeRTOS 特点
FreeRTOS 是一个可裁剪的小型 RTOS 系统,其特点包括:
● FreeRTOS 的内核支持抢占式,合作式和时间片调度。
● SafeRTOS 衍生自 FreeRTOS,SafeRTOS 在代码完整性上相比 FreeRTOS 更胜一筹。
● 提供了一个用于低功耗的 Tickless 模式。
● 系统的组件在创建时可以选择动态或者静态的 RAM,比如任务、消息队列、信号量、 软件定时器等等。
● 已经在超过 30 种架构的芯片上进行了移植。
● FreeRTOS-MPU 支持 Corex-M 系列中的 MPU 单元,如 STM32F103。
● FreeRTOS 系统简单、小巧、易用,通常情况下内核占用 4k-9k 字节的空间。
● 高可移植性,代码主要 C 语言编写。
● 支持实时任务和协程(co-routines 也有称为合作式、协同程序,本教程均成为协程)。
● 任务与任务、任务与中断之间可以使用任务通知、消息队列、二值信号量、数值型信号量、递归互斥信号量和互斥信号量进行通信和同步。
● 创新的事件组(或者事件标志)。
● 具有优先级继承特性的互斥信号量。
● 高效的软件定时器。
● 强大的跟踪执行功能。
● 堆栈溢出检测功能。
● 任务数量不限。
● 任务优先级不限。
FreeRTOS 衍生出来了另外两个系统:OpenRTOS 和 SafeTROS。
OpenRTOS 是 FreeRTOS 的商业化版本,OpenRTOS 的商业许可协议不包含任何 GPL 条款。
SafeRTOS 也是 FreeRTOS 的衍生版本,只是 SafeRTOS 过了一些安全认证,比如 IEC61508。