FreeRTOS详细目录结构和作用

news2024/11/24 3:36:58

 FreeRTOS各个目录的功能简介

1. Demo目录:这个目录下主要包含了大量官方支持的微控制器和不同平台上的项目,包括常用的stm32和keil平台下进行开发的项目。我主要使用的是CORTEX_STM32F103_Keil和common两个目录,对系统进行精简的话可以只保留这两个目录,其他大量的目录都可以删除。在删除前一定要选择好自己的微控制器和平台。

2. Source目录:这个目录包含了FreeRTOS内核的源代码。

include-包含FreeRTOS内核的头文件,这是使用FreeRTOS的API和数据类型的必要文件。

portable-包含针对特定处理器体系结构的移植层代码,每个处理器体系结构一般都有对应的子目录,如ARM、MIPS、Xilinx等。这是将FreeRTOS移植到特定平台的必要文件。里面选择开发的微处理器内核和工具,选用RVDS和选用的是stm32f103选用的是ARM-M3架构,所以只需保留这个RVDS里面的ARM_CM3目录就行。另外一个目录是MenMang,是进行内存管理的,里面包含的文件有heap,五个heap分别为:

  • heap_1 —— 最简单,不允许释放内存。
  • heap_2—— 允许释放内存,但不会合并相邻的空闲块。
  • heap_3 —— 简单包装了标准 malloc() 和 free(),以保证线程安全。
  • heap_4 —— 合并相邻的空闲块以避免碎片化。 包含绝对地址放置选项。
  • heap_5 —— 如同 heap_4,能够跨越多个不相邻内存区域的堆。

3. Tools目录:这个目录包含一些工具和脚本,用于构建、调试和测试FreeRTOS应用,可以删除。

4. FreeRTOS-Plus目录:是生态文件可以删除的

FreeRTOS移植文件

FreeRTOS的最核心文件只有2个: FreeRTOS/Source/tasks.c和 FreeRTOS/Source/list.c

其他文件有:

FreeRTOS/Source/下的文件作用
tasks.c必需,任务操作
list.c必须,列表
queue.c基本必需,提供队列操作、信号量(semaphore)操作
timer.c可选,software timer
event_groups.c可选,提供event group功能
croutine.c可选,过时

FreeRTOS需要3个头文件目录:

  • FreeRTOS本身的头文件:FreeRTOS/Source/include
  • 移植时用到的头文件:FreeRTOS/Source/portable/[compiler]/[architecture]
  • 含有配置文件FreeRTOSConfig.h的目录
头文件作用
FreeRTOSConfig.hFreeRTOS的配置文件,比如选择调度算法:configUSE_PREEMPTION 每个demo都必定含有FreeRTOSConfig.h 建议去修改demo中的FreeRTOSConfig.h,而不是从头写一个
FreeRTOS.h使用FreeRTOS API函数时,必须包含此文件。 在FreeRTOS.h之后,再去包含其他头文件,比如: task.h、queue.h、semphr.h、event_group.h

Demo目录下是预先配置好的、没有编译错误的工程。目的是让你可以基于它进行修改,以适配你的单板。 这些Demo还可以继续精简:

Demo/Common 中的文件可以完全删除

main函数中只需要保留2个函数:

prvSetupHardware()

vTaskStartScheduler()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/748163.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

光伏行业中的设备自动化系统EAP:优化生产流程的重要工具

随着清洁能源的需求不断增长,光伏行业作为可再生能源的重要组成部分,正迅速发展。为了满足日益增长的市场需求,光伏企业需要提高生产效率、降低成本,并保证产品的质量和可靠性。 图.光伏面板(pexels) 在这…

校园跑腿小程序怎么做

校园跑腿小程序是为了方便学生在校园内解决各类需求而设计的一款应用程序。该小程序具有多种功能,包括校园跑腿、二手市场、骑手接单、校园表白墙、下单支付、学校代理以及佣金抽成等。 1. 校园跑腿: 该小程序提供校园内的跑腿服务,学生可以…

【开源项目】中后台开发框架vue-admin-work-pro

vue-admin-work-pro 基本介绍 基于Vue3、Vite、TypeScript、NaiveUI、Vuex等最新技术栈开发的开箱即用的中后台前端框架。 内置常用模板,无需考虑交互排版,助你高效开发样式美观大方,无缝对接 Naive Ui,随意组合页面&#xff0c…

ME GO小车

ME GO小车 ⚫ 体积小巧 ⚫ 集成多种传感器和执行器 ⚫ Mixly图形化编程 避障检测、自动巡线、灯光显示、 声音报警、自动测距、物联遥控等 ME GO小车——俯视图 ME GO小车——车底 ME GO CE 以上选自芯”向未来 元控智联挑战赛(小学组)赛事介绍资料二…

操作系统Linux—day03

操作命令 搜索文件 find命令 1按照文件名称搜索 语法:find [路径] -name “文件名 ” -print 打印出所有查找文件名的路径 2按照更新时间搜索 语法: find [路径] -mtime 3 -print 查找更改时间为3天前的文件,3表示3天前,-3…

python 第三方包安装

1 MAC 打开终端 ,证明安装上python了 2 直接输入 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspark 其中 python3. 多的版本 需要 pip3 也可以直接用 pip 试一试 -i https://pypi.tuna.tsinghua.edu.cn/simple : 为 国内镜像地址 pyspark 第三方包

苹果pencil和普通的有什么区别?ipad第三方电容笔推荐

苹果原装电容笔和那种只具备倾斜压感的平替电容笔不一样,平替电容笔并没有具备重力压感。但是,如果你并不经常需要绘画的话,那么你也不必花费太多的金钱来购买一支价格如此贵的苹果电容笔,选择一款平替电容笔即可。在这里&#xf…

c++11 标准模板(STL)(std::basic_istream)(六)

定义于头文件 <istream> template< class CharT, class Traits std::char_traits<CharT> > class basic_istream : virtual public std::basic_ios<CharT, Traits> 类模板 basic_istream 提供字符流上的高层输入支持。受支持操作包含带格式…

阿里云容蓓:DCDN 助力云原生时代的应用构建及最佳实践

在数字化转型速度不断提升的今天&#xff0c;大带宽、低时延、高并发的场景不断涌现&#xff0c;内容分发网络(Content Delivery Network&#xff0c;CDN)应用需求还在不断攀升&#xff0c;打造更高质量的CDN服务将成为新时代产业竞争的关键所在。亚太CDN峰会自2012年第一届以来…

python_day7_画图

json数据与python字典的相互转换 import json列表&#xff0c;其中每个元素均为一个字典 data [{"name": "张三", "age": 10},{"name": "李四", "age": 13},{"name": "jay", "age&qu…

【论文阅读】Scaling Laws for Neural Language Models

前言 本文简要介绍 Scaling law 的主要结论原文地址&#xff1a;Scaling Laws for Neural Language Models个人认为不需要特别关注公式内各种符号的具体数值&#xff0c;而更应该关注不同因素之间的关系&#xff0c;比例等 Summary Performance depends strongly on scale, w…

windows安装netcat

netcat 就是 nc netcat官网&#xff1a;https://eternallybored.org/misc/netcat/ 将下载的netcat解压到C:\Program Files重命名为netcat &#xff08;安装位置自定义&#xff09; 配置一下环境变量&#xff0c;让nc命令可以在任何地方使用 在系统变量中加入netcat的启动路径 …

【面试题37】优化MYSQL数据库的方法有哪些

文章目录 一、前言二、优化的方向2.1 数据库设计优化2.2 查询优化2.3 硬件优化2.4 配置优化2.5. 定期维护和监控 三、MySQL查询优化的一些方向3.1 使用索引3.2 优化查询语句3.3 避免使用SELECT *3.4 分析查询计划3.5 设置合适的缓存大小3.6 分区表3.7 使用连接池3.8 定期优化数…

记录一组excel函数-将同一个id的多组数据整合到一格并用逗号隔开

初始数据如上图&#xff0c;用函数整理成下图 主要涉及两点&#xff1a;去重和集合 1.去重&#xff1a; 方法1: UNIQUE函数 使用方法&#xff1a;输入函数UNIQUE&#xff08;范围1:范围2&#xff09; 方法2:数据->删除重复项 使用方法&#xff1a;选中需要删除重复项的列&a…

Android :Activity生命周期

MainActivity .java import android.app.Activity; import android.os.Bundle; import android.util.Log; import java.util.function.LongToDoubleFunction; public class MainActivity extends Activity { //日志标记 private String TAG this.getClass().getSimpleNa…

Jenkins持续集成:使用Gerrit Trigger插件实现代码提交自动验证

Gerrit Trigger插件集成了Gerrit代码审查&#xff0c;当创建一个“patch set”时触发Jenkins构建&#xff0c;本文档介绍Gerrit Trigger插件配置及使用方法。 目录 安装Gerrit Trigger插件Gerrit 访问权限配置Jenkins Gerrit Server配置Gerrit Trigger配置 安装Gerrit Trigger插…

深入理解Linux网络——本机网络IO

文章目录 一、相关实际问题二、跨机网络通信过程1&#xff09;跨机数据发送2&#xff09;跨机数据接收3&#xff09;跨机网络通信汇总 三、本机发送过程1&#xff09;网络层路由2&#xff09;网络设备子系统3&#xff09;驱动程序 四、本机接收过程五、问题解答 系列文章&#…

什么是Heatmap(热图)图表?用DHTMLX可实现快速构建

DHTMLX Chart是DHTMLX最新发布的JavaScript UI小部件库的核心内容之一&#xff0c;这个图表小部件收到了几个重要的更新&#xff0c;但其中最引人注目的是一个新的数据可视化选项——日历热图。 DHTMLX专注于JavaScript和HTML5 UI小部件和库&#xff0c;以帮助开发人员更快地构…

【ThinkPHP】实现一个逆向工程生成model

ThinkPHP为了节省一些重复的步骤&#xff0c;写了个简单版的生成model的工具&#xff0c;逆向生成model代码&#xff0c;节省时间&#xff0c;专注写业务代码。 ThinkPHP中的命令行也提供了一些生成代码的命令&#xff1a; make:controller 创建控制器 make:model 创建模型 m…

spring复习:(17)ClassPathXmlApplicationContext

类继承图如下&#xff1a; 其中的父类AbstractRefreshableApplicationContext中定义了一个DefaultListableBeanFactory对象: Nullableprivate DefaultListableBeanFactory beanFactory;AbstractApplicationContext中定义了obtainFreshBeanFactory方法 protected ConfigurableL…