首页 > 编程知识 正文

freertos项目,freertos zynq

时间:2023-05-05 19:43:44 阅读:175241 作者:4158

FreeRTOS系列:

FreeRTOS概述

FreeRTOS的基本构成

FreeRTOS数据类型和代码样式

自由RTOS内存管理

FreeRTOS任务管理

FreeRTOS任务调度算法

自由运行队列

FreeRTOS软计时器

FreeRTOS中断管理

FreeRTOS资源管理

FreeRTOS事件组

自由RTOS任务通知

FreeRTOS概述

FreeRTOS 是一个嵌入式实时操作系统,什么是实时操作系统呢?

对于一个嵌入式系统,比如说一个数据采集器,他需要不停地采集数据并发送给主机,例如有三个任务,一个是采集任务,一个是发送任务,一个显示任务。正常情况下,应该是先采集再显示并发送,理想中显示和发送是同时进行的。但是我们的MCU在一个时刻只能跑一个任务,也就是说必有个先后关系,我们可以认为定义顺序如下——采集-发送-显示。

那么考虑复杂一点的情况,如果此时发送任务没有等到数据,他就会停在这里等待,然而这就导致了显示任务不能正常进行。这就不能称为实时。这个例子也许还不能完全体现实时系统的重要性,如果我们将场景设定为自动驾驶,我们的控制和感知系统的实时性凸显的尤为重要,一个意外的延迟会造成安全性的极大下降。还有更多的场景,这里就不一一列举了。当然,除了实时性的优点,RTOS也具有较强的扩展性和易用性,方便开发者进行开发。总之,RTOS在很多场景中都是不可或缺的。

对于FreeRTOS来说,严格意义上来说还不能称为实时,因为他只是相当于分时复用,比方说我们把一个时间单位设定为1ms,那么我把这1ms可以分为很多的细分,每个细分上跑不同的任务,这样在宏观上看就相当于实时系统了。真正的实时系统,就是实现并行的操作,比如说FPGA,这里不再赘述。常见的RTOS,还有 C O S mu COS COS 、VxWorks等

下图是2019年EETimes统计的最常用的操作系统排名,供大家参考

自由RTOS体系结构

一个FreeRTOS 系统主要由BSP驱动+内核+组件组成(如上图)。内核包含多任务调度、内存管理、任务间通信的功能,组件包含网络协议、外设支持等。

FreeRTOS内核是可剪裁的,组件也是可选的。由于嵌入式应用往往对内存空间的要求十分苛刻,所以一个可剪裁的RTOS对于嵌入式应用非常重要。这使得FreeRTOS的核心代码只有9000行左右。

FreeRTOS特性灵活任务优先级灵活轻量级任务通知机制队列二值/计数信号量互斥/递归互斥量软定时器事件组定时/空闲Hook函数堆栈溢出检查跟踪记录任务时间统计… FreeRTOS文件http://ww

FreeRTOS核心组件主要有三个文件:list.c,queue.c,tasks.c是必须添加的;可扩展的部分:stream_buffer.c, croutine.c, event_group.c这几个功能用不着可以不加。

queue.c队列timers.c软定时器event_group.c事件组croutine.c命令多应用于资源有限的MCU,目前已有下图是FreeRTOS-Kernel的根目录

下图是FreeRTOS的根目录

需要注意的是,这两个根目录是不一样的。FreeRTOS的内核文件是在FreeRTOS-Kernel的目录下的。FreeRTOSDemo目录下是不同芯片的Demo(如下图)

一个完整的工程除了需要.c文件之外,还需要引用头文件

头文件‘task.h’, ‘queue.h’, ‘semphr.h’, ‘timers.h’ ,‘event_groups.h’ 等

另外还需要添加头文件等包含路径

**

FreeRTOS/Source/include. //头文件

free RTOS/source/portable/[ compiler ]/[ architecture ].//其他接口

FreeRTOSConfig.h //配置文件

**

示例:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。