freertos源码分析(1)--初始篇
代码下载地址:https://www.freertos.org/
部分转载参考
FreeRTOS基础知识:
RTOS全称为:Real Time OS,就是实时操作系统,强调的是:实时性。实时操作系统又分为硬实时和软实时。硬实时要求在规定的时间内必须完成操作 ,硬实时系统不允许超时,在软实时里面处理过程超时的后果就没有那么严格。 在实时操作系统中,我们可以把要实现的功能划分为多个任务,每个任务负责实现其中的一部分,每个任务都是一个很简单的程序,通常是一个死循环。 RTOS操作系统:FreeRTOS,UCOS,RTX,RT-Thread,DJYOS等。 RTOS操作系统的核心内容在于:实时内核。
可剥夺型内核:
RTOS的内核负责管理所有的任务,内核决定了运行哪个任务,何时停止当前任务切换到其他任务,这个是内核的多任务管理能力。多任务管理给人的感觉就好像芯片有多个CPU,多任务管理实现了CPU资源的最大化利用,多任务管理有助于实现程序的模块化开发,能够实现复杂的实时应用。
可剥夺内核顾名思义就是可以剥夺其他任务的CPU使用权,它总是运行就绪任务中的优先级最高的那个任务。
FreeRTOS是一个可裁剪、可剥夺型的多任务内核,而且没有任务数限制。FreeRTOS提供了实时操作系统所需的所有功能,包括资源管理、同步、任务通信等。 FreeRTOS是用C和汇编来写的,其中绝大部分都是用C语言编写的,只有极少数的与处理器密切相关的部分代码才是用汇编写的,FreeRTOS结构简洁,可读性很强!最主要的是非常适合初次接触嵌入式实时操作系统学生、嵌入式系统开发人员和爱好者学习。
FreeRTOS系统的优势
1. 协议栈代码完全开源,而且官网相关补充资料也完全免费。
2. FreeRTOS使用广泛,网上各种资料比较多。
3. 协议栈代码整体编码风格统一,逻辑比较清晰。
4. FreeRTOS现在属于Amazon,基本不用担心版本断档问题。
FreeRTOS 系统运行原理
基于硬件适配层实现跨平台可移植
基于任务驱动的方式运行整个系统
基于优先级抢占的方式实现实时性
基于任务队列的方式实现核心的任务调度
基于队列、信号量方式实现任务之间的通信和同步
FreeRTOS代码结构:
FreeRTos文件夹包含系统实现kernel代码
FreeRtos-Plus包含kernel以外的系统常用功能组件。
List.c动态管理各种task实现任务调度;
Tasks.c任务本身的一些配置。
Queue.c消息队列用于task间通信和同步。
FreeRTOS-Plus-IO:提供不同硬件设备I/O引脚的通信接口
FreeRTOS-Plus-TCP:TCP/IP协议组件,对于需要使用IP通信的设备,这个组件非常重要
FreeRTOS-Plus-UDP
WolfSSL:用来对应用层协议添加认证加密组件。
IAR工具打开代码列表
使用FreeRTOSv10.2.0\FreeRTOS\Demo\CORTEX_M4F_STM32F407ZG-SK为例
文件列表:
FreeRTOS_Source:freertos源代码。
ST_and_IAR_code:ST和IAR相关代码。
Main.c初始启动代码,任务操作。