目录
1. FreeRTOS简介
1.1 FreeRTOS介绍
1.2 为何选择FreeRTOS
1.3 FreeRTOS资料获取
1.3.1 官网下载
1.3.2 Github下载
1.3.3 托管网站下载
1.4 FreeRTOS的编程风格
1.4.1 数据类型
1.4.2 变量名
1.4.3 函数名
1.4.4 宏
1. FreeRTOS简介
1.1 FreeRTOS介绍
FreeRTOS是一个可裁剪的小型RTOS系统,其特点包括:
① FreeRTOS 的内核支持抢占式,合作式和时间片调度。
② SafeRTOS 衍生自 FreeRTOS,SafeRTOS 在代码完整性上相比 FreeRTOS更胜一筹。
③ 提供了一个用于低功耗的 Tickless 模式。
④ 系统的组件在创建时可以选择动态或者静态的 RAM,比如任务、消息队列、信号量、软件定时器等等。
⑤ 已经在超过 30 种架构的芯片上进行了移植。
⑥ FreeRTOS-MPU 支持 Corex-M 系列中的 MPU 单元,如 STM32F407.
⑦ FreeRTOS 系统简单、小巧、易用,通常情况下内核占用 4k-9k 字节的空间。
⑧ 高可移植性,代码主要 C 语言编写。
⑨ 支持实时任务和协程(co-routines 也有称为合作式、协同程序,我在这里使用的均成为协程)。
1.2 为何选择FreeRTOS
① 开源和免费:FreeRTOS是开源的实时操作系统,遵循MIT许可证,可以免费获取和使用。这使得它成为许多嵌入式开发者和企业的首选,特别是在成本和许可证限制方面较为敏感的项目中。
② 轻量级和高效:FreeRTOS设计精简,专注于提供基本的实时调度和任务管理功能,适合资源有限的嵌入式系统。它的内核非常小巧,具有低的内存占用和快速的上下文切换时间,能够在各种处理器架构上高效运行。
③ 广泛的架构支持:FreeRTOS支持多种处理器架构和开发板,包括ARM Cortex-M,ESP32,PIC,以及多个仿真器和开发板,这使得它在不同项目和硬件平台上都能得到广泛应用。
④ 丰富的特性和生态系统:尽管FreeRTOS本身非常轻量,但它提供了许多丰富的特性,如任务管理、消息队列、信号量、软件定时器等,可以满足大多数嵌入式系统的实时需求。同时,FreeRTOS拥有活跃的社区和丰富的生态系统,提供了许多额外的组件和驱动程序,可以加速开发过程并提供可靠的支持。
⑤ 成熟和可靠性:FreeRTOS经过多年的发展和使用,在工业和商业应用中已被广泛验证和采用,具有高度的成熟性和可靠性,适合要求高可靠性和稳定性的应用场景。
⑥ 易于学习和使用:FreeRTOS的API设计简洁清晰,易于理解和使用。它提供了详细的文档和示例,对于初学者和经验丰富的开发者都是友好的选择。
1.3 FreeRTOS资料获取
1.3.1 官网下载
官网下载链接:FreeRTOS - Market leading RTOS (Real Time Operating System) for embedded systems with Internet of Things extensionsFreeRTOS - Market leading RTOS (Real Time Operating System) for embedded systems with Internet of Things extensionsFreeRTOS - Market leading RTOS (Real Time Operating System) for embedded systems with Internet of Things extensions
手动输入链接:www.freertos.org
1.3.2 Github下载
Github下载:GitHub - FreeRTOS/FreeRTOS: 'Classic' FreeRTOS distribution. Started as Git clone of FreeRTOS SourceForge SVN repo. Submodules the kernel.
1.3.3 托管网站下载
FreeRTOS - Market leading RTOS (Real Time Operating System) for embedded systems with Internet of Things extensions
在该网站可以找到,以前发行的版本:
找到自己想要下载的版本,点击进入如下界面:
其中两个文件均可下载。
注意:以上文件下载完后,我试了一下,进行解压的话,会提示文件过多,解压不了,我试了另一台电脑上面用的360解压的软件给解压出来了,然后我准备上传到百度网盘,发现由于文件过多,上传和下载速度也是非常感人。现在没有好的解决办法,后续发现好的解决办法会发到:FreeRTOS_时光の尘的博客-CSDN博客
1.4 FreeRTOS的编程风格
1.4.1 数据类型
FreeRTOS对C语言中的一些数据类型的命名,进行了重定义,以下是部分:
1.4.2 变量名
比如char型变量的前缀是c, short型变量的前缀是s, long型变量的前缀是1, portBASE_TYPE类型变量的前缀是x。还有其他的数据类型,比如数据结构,任务句柄,队列句柄等定义的变量名的前缀也是 x。
如果一个变量是无符号型的那么会有一个前缀 u,如果是一个指针变量则会有一个前缀 p。因此,当我们定义一个无符号的 char 型变量的时候会加一个 uc前缀,当定义一个char型的指针变量的时候会有一个pc前缀。
1.4.3 函数名
如果是私有的函数则会加一个prv (private)的前缀。
①vTaskPrioritySet()函数的返回值为 void型,在task.c这个文件中定义。
②xQueueReceive()函数的返回值为 portBASE_TYPE 型,在 queue. c这个文件中定义。
③vSemaphoreCreateBinary()函数的返回值为 void型,在semphr.h 这个文件中定义。
1.4.4 宏
FreeRTOS_时光の尘的博客-CSDN博客