FreeRTOS图示理解
仅供本人查阅
前后台系统(裸机)
缺点:
实时性不能保证,事件可能无法得到及时处理。
存在CPU空转的情况,CPU利用率不搞,白白浪费功耗。
强迫人按照机器的顺序工作方式思考编码,当任务越多,代码结构越复杂,编码难度越大。
解决裸机编程方法
实时性不高
主程序尽量少用delay 通过硬件定时器做事件处理增强实时性
CPU利用率不高
中断程序不要加延时
代码结构复杂
高内聚低耦合 .c.h与其他功能相关联性太大太多
- 状态机编程
- 面向对象思想 多态 继承 复用抽象
FreeRTOS全称
实时操作系统,强调的是:实时性。
实时操作系统又分为硬实时和软实时。硬实时要求在规定的时间内必须完成操作,硬实时系统不允许超时,在软实时里面处理过程超时的后果就没有那么严格。
在实时操作系统中,我们可以把要实现的功能划分为多个任务,每个任务负责实现其中的一部分,每个任务都是一个很简单的程序,通常是个死循环。
RTOS操作系统:FreeRTOS,UCOS,RTX,RT-Thread, DJYOS操作系统的核心内容在于:实时内核。
实时性 | 操作系统 | 终端 |
---|---|---|
实时并不意味着快 | 一种系统软件 | 运行特定的嵌入式硬件 |
在固定的时间内对事件进行响应 | 提供任务管理和协调的功能控制 | 功能可裁剪代码可移植 |
FreeRTOS介绍
FreeRTOS是一个可裁剪、可剥夺型的多任务内核,而且没有任务数限制。
FreeRTOS提供了实时操作系统所需的所有功能,包括资源管理、同步、任务通信等。
FreeRTOS特点
FreeROTS开源
FreeRTOS免费
FreeRTOS是很多多第方组件钦定的系统!
FreeRTOS使用
FreeRTOS下载:
FreeRTOS还是有一定难度的,在学习的过程中难免会遇到看不懂的东西,如果遇到不懂的就先不要管,开发ESP8266只需要学会怎么调用FreeRTOS的API函数
对C语言的要求,需要了解指针、结构体、数据结构中的链表等。
FreeRTOS任务特性
简单
没有使用限制
支持抢占
支持优先级
每个任务都拥有堆栈导致了 RAM 使用量增大
FreeRTOS源码结构
FreeRTOS任务创建头文件:
task.h
portBASE_TYPE xTaskCreate(
pdTASK_CODE pvTaskCode,指向任务的实现函数的指针。效果上仅仅是函数名
const portCHAR * const pcNane,具有描述性的任务名。FreeRTOS不会使用它。
unsigned portSHORT usStackDepth,指定任务堆栈的大小
void *pvParameters,指针用于作为一个参数传向创建的任务
unsigned portBASE_TYPE uxPriority, 任务运行时的优先级
xTaskHandle *pvCreatedTask用于传递任务的句柄,可以引用从而x务进行
)
FreeRTOS配置文件:
FreeRTOS函数Include配置
FreeRTOS任务调度机制(多任务基础)
FreeRTOS任务状态
FreeRTOS任务优先级
FreeRTOS任务实现
FreeRTOS任务控制块