FreeRTOS实战指南 — 1 FreeRTOS简介

目录

1.1 为什么需要FreeRTOS

1.2 FreeRTOS资料获取

1.3 FreeRTOS文件夹内容


1.1 为什么需要FreeRTOS

裸机开发直接控制硬件,虽然资源占用少,但开发复杂性高,缺乏高级功能,适合资源受限的简单应用。嵌入式操作系统提供了硬件抽象层、多任务处理、丰富的API和驱动支持,使得开发更加高效、可扩展和可维护,但需要更多的系统资源。

FreeRTOS是众多嵌入式操作系统中的一种,常用的还有uC/OS-II、RT-Thread、Linux等。uC/OS-II以其简洁高效的实时内核著称;FreeRTOS则提供了小型且高度可配置的实时多任务解决方案;RT-Thread在保持实时性的同时,融入了丰富的物联网特性与软件包支持;而Linux作为通用操作系统,以其强大的功能和广泛的硬件支持,也在嵌入式领域占据重要位置。以下是几种操作系统的对比。

特性/系统

uC/OS-II

FreeRTOS

RT-Thread

Linux

开发者

Micrium公司

Richard Barry

中国开源社区

林纳斯·托瓦兹(Linus Torvalds

开源性

通常是商业许可,但存在开源版本

开源

开源

开源

设计理念

简洁、可裁剪的实时内核

小型、轻量级、高效

丰富的软件包和易于移植

通用性、多任务、网络支持

实时性

可通过特定配置实现实时性

可移植性

高,支持多种硬件平台

内存占用

极低

较低,但较FreeRTOS

相对较高

多任务支持

支持

支持

支持

支持

任务调度

基于优先级

基于优先级,支持时间片轮转

基于优先级,支持多种调度策略

多种调度算法

设备驱动支持

有限,需自行开发或购买

有限,需自行开发

提供统一设备驱动框架,支持多种外设

丰富的设备驱动,涵盖广泛硬件

生态系统与社区

相对较小,但专业性强

活跃的开源社区

活跃的开源社区,但较Linux

庞大的开源社区,丰富的资源

应用场景

工业控制、医疗设备

传感器控制、家电控制

智能家居、工业自动化、物联网

广泛,包括服务器、桌面、嵌入式等

FreeRTOS是一个轻量级的实时操作系统,广泛用于微控制器和小型微处理器。它以其高效的资源利用、可预测的实时性能和易于移植的特性,成为嵌入式系统开发者的首选之一。FreeRTOS提供了丰富的任务管理、时间管理、同步和通信机制,同时保持了代码的简洁性和可维护性。作为一个开源项目,FreeRTOS拥有活跃的社区支持,并且由Amazon提供长期维护和更新,是物联网和各种嵌入式应用中常用的操作系统。

1.2 FreeRTOS资料获取

FreeRTOS的源码和相应的官方书籍均可从官网www.freertos.org获得,官网首页打开后具体见图。

点击DownloadSource按钮,可以下载FreeRTOS最新版本的源码。如果想下载以往版本的可从托管网址:https://sourceforge.net/projects/freertos/files/FreeRTOS/下载。教程通过托管网址下载FreeRTOS最新版本。

有 zip 和 exe 格式两种不同的的压缩包可供选择,只是压缩的格式不一样,选择其中任意一个下载。

1.3 FreeRTOS文件夹内容

FreeRTOS源码中包含3个主要的文件夹,FreeRTOS文件夹包含了FreeRTOS内核的源代码和相关的头文件,这是FreeRTOS实时操作系统的核心部分,包括任务管理、时间管理、同步机制等功能的实现。FreeRTOS-Plus文件夹是FreeRTOS的扩展组件,提供了额外的功能,如TCP/IP网络堆栈、文件系统、安全协议等。tools文件夹包含了一些与FreeRTOS相关的工具,用于辅助开发、调试或测试FreeRTOS应用程序。这里我们主要学习的是第1个FreeRTOS文件夹。

FreeRTOS 包含 Demo 例程和内核源码,FreeRTOS 文件夹下的 Source 文件夹里面包含的是 FreeRTOS 内核的源代码,我们移植 FreeRTOS 的时候就需要这部分源代码; FreeRTOS 文件夹下的Demo 文件夹里面包含了 FreeRTOS 官方为各个单片机移植好的工程代码,下面我们对 FreeRTOS 的文件夹进行分析说明。

一级目录

二级目录

描述

Demo

Common

包含多个示例项目共享的源代码和配置文件。

[Platform]

包含特定平台的示例项目,如 CORTEX_M4FCORTEX_M7 等。进行项目开发时,可以方便的以此搭建出自己的项目

Source

include

包含 FreeRTOS 内核的头文件。

portable

包含与硬件架构相关的移植代码。

portable/MemMang

包含不同的内存管理实现,例如 heap_1, heap_2, heap_3, heap_4, heap_5

portable/Compiler

包含特定编译器的移植文件,如 GCCIARKeil 等。

portable/Arch

包含特定架构的移植文件,如 ARMMIPSXilinx 等。

Documentation

包含 FreeRTOS 的官方文档,包括快速入门指南、API 参考等。

License

包含 FreeRTOS 的许可证文件。

这里我们重点分析一下FreeRTOS/ Source 文件夹下的文件,include文件夹包含FreeRTOS内核的所有公共头文件,这些头文件定义了FreeRTOS API、数据结构和宏。portable文件夹包含与特定硬件架构或编译器相关的代码,这些代码负责将FreeRTOS内核与目标硬件平台或编译器接口连接起来。其余部分则是一些通用的C文件。

Include文件夹具体描述如下表格。

文件/文件夹名称

描述

atomic.h

原子操作相关的API,用于无序访问的数据操作。

croutine.h

协程相关API,用于协程的创建和管理。

deprecated_definitions.h

已弃用的宏定义,用于向后兼容。

event_groups.h

事件组API,用于任务间的同步和通信。

FreeRTOS.h

FreeRTOS核心API,包含所有其他头文件。

list.h

列表操作相关的数据结构和宏。

message_buffer.h

消息缓冲区API,用于发送和接收消息。

mpu_prototypes.h

内存保护单元(MPU)相关原型声明。

mpu_wrappers.h

MPU安全访问封装函数。

portable.h

移植层相关的数据类型和宏定义。

projdefs.h

项目定义的宏,如任务挂起和恢复。

queue.h

队列API,用于任务间的数据传递。

semphr.h

信号量API,用于任务同步。

stack_macros.h

栈相关宏定义,用于任务栈操作。

StackMacros.h

栈相关宏定义,用于任务栈操作。

stdint.readme

关于标准整数类型定义的说明。

stream_buffer.h

流缓冲区API,用于数据流的传输。

task.h

任务创建和管理相关的API

timers.h

软件定时器API,用于任务定时操作。

portable文件夹在FreeRTOS中包含了使FreeRTOS能够与特定硬件架构和编译器接口兼容的代码,如任务上下文切换、内存管理和中断管理,同时提供了多种内存分配策略,确保了FreeRTOS内核的可移植性和高效运行。

  • 17
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

几度春风里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值