FreeRTOS简介及FreeRTOS源码包组成结构

电子说

1.3w人已加入

描述

2.FreeRTOS简介

FreeRTOS 是市场领先的面向微控制器和小型微处理器的实时操作系统 (RTOS),与世界领先的芯片公司合作开发。FreeRTOS目前由亚马逊公司管理,遵循MIT开源许可证协议进行免费分发,包括一个实时内核和一组不断丰富的 IoT 库。

FreeRTOS的代码库支持 40 多种 MCU 架构和 10多种工具链,包括最新的 RISC-V和ARMv8-M (Arm Cortex-M33) 微控制器。

3.FreeRTOS源码包组成结构

在FreeRTOS官网可以下载到最新的源码包,当前版本为FreeRTOSv202212.01

FreeRTOS源码包主要包含2个子目录:FreeRTOS 和 FreeRTOS-Plus。

(1)FreeRTOS目录包含实时内核源文件和示例工程;

(2)FreeRTOS-Plus 库实现了 FreeRTOS 内核的附加功能,包含FreeRTOS-Plus-TCP、FreeRTOS-Plus-CLI和FreeRTOS-Plus-IO等模块及示例工程。

FreeRTOS

FreeRTOS目录包含实时内核源文件目录Source和示例工程目录Demo。

FreeRTOS

FreeRTOS/Source目录包含内核源文件、内核头文件目录include和处理器相关的移植文件目录portable。

FreeRTOS/Source目录下的内核源文件包含3个核心 RTOS 代码,分别为:task.c、queue.c和list.c。还包含4个可选代码,timers.c实现了软件计时器;croutine.c实现了协程功能;event_groups.c实现了事件组功能;stream_buffer.c实现了流缓冲区功能。

FreeRTOS

FreeRTOS/portable目录包含了不同编译器和芯片架构对应的可移植层代码,位于FreeRTOS/Source/portable/[compiler]/[architecture]子目录下,其中[compiler]和[architecture]分别表示编译器和芯片架构。例如,FreeRTOS\\Source\\portable\\RVDS\\ARM_CM3子目录表示RVDS及Keil开发环境下ARM Cortex-M3架构处理器的可移植层代码。

此外,FreeRTOS/portable目录下还包含用于内存管理的堆分配方案代码,位于FreeRTOS/Source/portable/MemMang 目录中,支持heap_1.c~heap_5.c五种分配方案。

FreeRTOS

FreeRTOS/Demo目录包含所有示例工程的共用目录Common以及不同编译器和芯片架构对应的专用目录。例如,FreeRTOS/Demo/CORTEX_STM32F103_Keil目录是STM32F103微控制器的Keil工程目录,对应架构为ARM Cortex-M3。

FreeRTOS

4.FreeRTOS项目工程建立方法

4.1概要

本节主要介绍基于FreeRTOS源码包,新建FreeRTOS项目工程所需的必备源文件、头文件、配置文件和可选源文件。

4.2必备源文件

FreeRTOS项目工程必须包含以下源文件:

(1)FreeRTOS/Source/tasks.c

(2)FreeRTOS/Source/queue.c

(3)FreeRTOS/Source/list.c

(4)FreeRTOS/Source/portable/[compiler]/[architecture]/port.c

(5)FreeRTOS/Source/portable/MemMang/heap_x.c,x为1~5

4.3头文件

编译器应包含如下头文件路径:

(1)FreeRTOS/Source/include

(2)FreeRTOS/Source/portable/[compiler]/[architecture]

(3)使用的示例项目中FreeRTOSConfig.h配置文件所在的目录

4.4配置文件

配置文件FreeRTOSConfig.h用于为构建的应用程序量身定制 RTOS 内核,并根据实际硬件情况对CPU主频、中断优先级等参数进行配置。

FreeRTOS/Demo下的示例项目中均含有配置文件FreeRTOSConfig.h,新建项目时选取相同编译器及相同芯片架构的FreeRTOSConfig.h文件作为模板,在此基础上进行修改即可。

4.5可选源文件

FreeRTOS项目工程的可选源文件包括:

(1)FreeRTOS/Source/timers.c,用于软件定时器功能;

(2)FreeRTOS/Source/event_groups.c,用于事件组功能;

(3)FreeRTOS/Source/stream_buffer.c,用于流缓冲区功能;

(4)FreeRTOS/Source/croutine.c,用于协程功能,注意目前协程功能已 被弃用,不推荐用于新设计。

4.6小结

本节介绍了基于FreeRTOS源码包新建FreeRTOS项目工程所需的源文件和头文件。在编译工程时可能会报一些错误;在编译通过后,调试功能时也可能会遇到一些问题,到时需要具体问题具体分析解决了。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分