电子说
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目录包含实时内核源文件目录Source和示例工程目录Demo。
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/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/Demo目录包含所有示例工程的共用目录Common以及不同编译器和芯片架构对应的专用目录。例如,FreeRTOS/Demo/CORTEX_STM32F103_Keil目录是STM32F103微控制器的Keil工程目录,对应架构为ARM Cortex-M3。
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项目工程所需的源文件和头文件。在编译工程时可能会报一些错误;在编译通过后,调试功能时也可能会遇到一些问题,到时需要具体问题具体分析解决了。
全部0条评论
快来发表一下你的评论吧 !