FreeRTOS源码解析——第一章 整体架构

news2024/11/16 17:40:58

FreeRTOS源码解析

第一章 FreeRTOS 整体架构
第二章 FreeRTOS 编程规范
第三章 FreeRTOS 内存管理
第四章 FreeRTOS 任务管理
第五章 FreeRTOS 消息队列
第六章 FreeRTOS 软件定时器
第七章 FreeRTOS 信号量
第八章 FreeRTOS 互斥量
第九章 FreeRTOS 任务通知
第十章 FreeRTOS 事件组


FreeRTOS源码解析——第一章 整体架构

  • FreeRTOS源码解析
  • 前言
  • 一、FreeRTOS简介
  • 二、FreeRTOS架构框图
  • 三、FreeRTOS支持的主要平台
  • 四、移植简要说明
    • 1、基于stm32f412的移植框图
    • 2、增加的代码目录
    • 3、测试代码
    • 4 、硬件运行结果
  • 总结


前言

本章主要介绍FreeRTOS的整体框架,给出一个简要的移植示例,文末有示例下载链接。


一、FreeRTOS简介

FreeRTOS是在微控制器上使用的具有市场领先的实时操作系统,与世界领先的芯片公司合作开发了18年,目前每170秒就会被下载一次。FreeRTOS在MIT开源许可下进行免费分发和使用:包括一个内核和一个不断增长和丰富的IOT库,可以适用于所有的行业。FreeRTOS主打的是可靠性和易用性。
备注:翻译于FreeRTOS官网

二、FreeRTOS架构框图

freertos架构框图

FreeRTOS支持市面上的多种芯片架构,如Cortex-M 、Cortex-R 、Cortex-A、RISC-V等,可以通过官方提供的Demo快速完成移植。
除基础内核外,FreeRTOS包含了丰富的组件和第三方库,还有专门应用于物联网的AWS版本等。主要包含以下组成部分:

  • 基础内核:包括不可裁剪的最小内核和可裁剪模块。最小内核包含任务管理、内存管理、中断管理、异常管理和系统时钟。可裁剪模块包括队列、信号量、互斥量、软件定时器、任务通知、事件组。
  • 内核增强:在内核基础功能之上,进一步提供增强功能,包括低功耗模式、cpu的使用率、Trace事件跟踪、TCP/IP、CLI、POSIX等。
  • 协议:提供的一系列独立于FreeRTOS内核的库,只和标准C库相关。比如MQTT、JSON、HTTP等
  • 第三方组件:一般和具体应用场景相关的组件或者第三方提供的组件,比如GUI、为 AWS IoT 特定的增值云服务等。

本系列文章集中在基础内核的各个模块。

三、FreeRTOS支持的主要平台

图片来源于FreeRtos官网
备注:图片来源于FreeRTOS官网

四、移植简要说明

本节主要对FreeRTOS的移植进行一个大概的说明,详细教程可以百度,有很多很好的例程。

1、基于stm32f412的移植框图

在这里插入图片描述

2、增加的代码目录

在这里插入图片描述

3、测试代码

TaskHandle_t TaskPrintTestHandle = NULL;
void PrintTestTask(void *arg)
{
    uint32_t udwPrintTaskCnt = 0;
    while(1)
    {
        udwPrintTaskCnt ++;
        log_info("PrintTaskCnt:%d\n",udwPrintTaskCnt);
        vTaskDelay(1000);
    
    }
}

int main(void)
{
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_USART1_UART_Init();

  while (1)
  {
	BaseType_t xReturn = xTaskCreate( PrintTestTask, "print_test", 128, NULL, 1, &TaskPrintTestHandle ) ;
    if (TaskPrintTestHandle == NULL)
    {
        log_info("Create Task (print_test) Fail, reason:%ld\n", xReturn);
     }
    else
    {
        log_info("Create Task (print_test) Success!\n");
    }
    vTaskStartScheduler();
  }
}

4 、硬件运行结果

在这里插入图片描述

FreeRTOS 在Stm32f412上的移植例程,点击跳转下载


总结

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

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

相关文章

算法习题之宏观分层问题

宏观分层 习题1 给定一个正方形矩阵matrix,原地调整成顺时针90度转动的样子习题2 给定一个长方形矩阵matrix,实现转圈打印习题3 给定一个正方形或者长方形矩阵matrix,实现zigzag打印习题4 输入N,在控制台上输出初始边长为N的图案 习题1 给定一…

U盘数据丢失是什么原因?轻松让U盘数据恢复的教程

在数字化时代,我们不可避免地使用各种便携式存储设备,如U盘,来传输和存储重要数据。然而,有时我们可能不小心删除了U盘中的文件,或者格式化了U盘等等而导致数据丢失。这种情况下,你可能会困惑地想知道&…

机器学习——基于Tensorflow和Keras实现卷积神经网络CNN——猫狗分类

文章目录 环境的配置神经网络CNN的介绍卷积前馈神经网络卷积神经网络应用邻域 数据集准备数据预处理构建基准模型 总结什么是过拟合(overfit)?什么是数据增强?单独制作数据增强,精确率提高了多少? 然后再添…

硬件大熊原创合集(2023/06更新)

06月份更新篇章: 一款射频芯片的layout设计指导案例-篇章1 一款射频芯片的layout设计指导案例-篇章2 警惕超声波工艺对晶振造成损伤 走嵌入式方向,一定要软硬件都懂吗? 6月份广州光亚展,和电子电力大咖文老师见了个面,…

2023车载摄像头9大热点趋势

摘要: 相较于消费类电子摄像头,车载摄像头的工作环境极度恶劣,比如说震动、高温、雨雾、低温、光线变化剧烈等。而车载摄像头以驾驶安全为目的,上述各个工作状态下,均需要能获取稳定、可靠、清晰的周边环境数据。 近年…

HOT36-二叉树的中序遍历

leetcode原题链接:二叉树的中序遍历 题目描述 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例 1: 输入:root [1,null,2,3] 输出:[1,3,2]示例 2: 输入:root [] 输出&#xff1a…

BUUCTF藏藏藏

也是一个图片文件,和一个txt文件 txt文件中是一个提交flag格式,没啥用 拿去010打开后发现可能存在隐藏文件 这个格式说明还有解压文件吧,但是为啥分离不出来呢 刚好有另外一个分离文件的软件foremost 解压后打开在zip文件下有一个福利docx文件…

【零基础入门学习Python---Python网络编程保姆级教程】

🚀 Python 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

GDB寻找segmentation fault位置

一、在当前文件夹下生成指定二进制文件的core文件 查看允许core文件空间大小: ulimit -c修改core文件空间为无限大: ulimit -c unlimited让core文件生成在当前目录下: sudo bash -c echo core.%e.%p > /proc/sys/kernel/core_pattern再…

2023黑马头条.微服务项目.跟学笔记(二)

2023黑马头条.微服务项目.跟学笔记 二 app端文章查看,静态化freemarker,分布式文件系统minIO今日简介学习内容1.文章列表加载1.1 需求分析1.2 表结构分析思考:表的垂直拆分 1.3 导入文章数据库1.3.1 导入数据库1.3.2 导入对应的实体类总结 1.4 实现思路1.4.1 sql练习…

hippo - 提升我们团队工程效率的工具

1. 背景 我们 shopeepay 团队是一个比较大的前端团队(80成员),团队内部分布着 react native、javascript npm包、react component npm包、serverless、普通的react工程等多种类型的项目,每种项目类型中的每个项目都有它们自己的配…

Windows 使用Git使用Gitee仓库

1.本地创建文件夹。图中例子,我在桌面创建了文件夹。 2.打开 Git Bash Here. 3.Git Bash 的部分指令。 ls 查看当前文件夹 mkdir gittest01 创建文件夹 cd gittest01 进入文件夹 git init 创建本地仓库 git config --global user.name"chengqian" 创建者…

Redis主从复制模式的2

搭建完后可以去测试一下这几个问题: 1.主机中的数据会复制到从节点中 2.主机中新增的数据会同步到从节点中 3.redis集群后,从节点只能读(slave),主节点可以写(master) 4.主机重启后还是主节点 5.从机重启后也会变成主节点 血脉相传 一个主机master理论上可以有多个从机slave…

抖音短视频矩阵号系统开发者开源部署分享(一)

抖音是一款备受欢迎的短视频APP,拥有数亿的用户,其中包括了大量的粉丝。为了让更多的人能够发现和观看到你的视频,抖音SEO是必不可少的一环,特别是对于拥有企业或个人品牌的用户来说。在这个过程中,抖音SEO源码的开源部…

【前端工程化】比gzip压缩更优的br压缩

🐱 个人主页:不叫猫先生,公众号:前端舵手 🙋‍♂️ 作者简介:2022年度博客之星前端领域TOP 2,前端领域优质作者、阿里云专家博主,专注于前端各领域技术,共同学习共同进步…

2.4g无线芯片G350产品介绍

G350是一款2.4GHz的无线收发芯片,具有低成本和高集成度的特点。它集成了发射机、接收机、频率综合器和GFSK调制解调器,为无线通信系统提供了完整的解决方案。 该芯片采用了低功耗设计,在各个环节都降低功耗以提高电池使用寿命。即使在最低电流…

STM32 Proteus UCOSII系统简易时钟计时系统-0054

STM32 Proteus UCOSII系统简易时钟计时系统-0054 Proteus仿真小实验: STM32 Proteus UCOSII系统简易时钟计时系统-0054 功能: 硬件组成:STM32F103R6单片机 LCD1602显示器 1.单片机程序使用UCOSII操作系统,显示任务、时间计算任…

【Python 随练】学用 line 函数画直线

题目: 画图,学用line函数画直线。 简介: 在本篇博客中,我们将介绍如何使用Python的绘图库来画直线。我们将使用line函数来绘制直线,并提供一个完整的代码示例来演示其用法。 绘制直线: 要绘制直线&…

开源项目管理工具Plane

本文软件由网友 不长到一百四誓不改名 推荐,不过这次是在他推荐之前,就已经完成了的 🙂 什么是 Plane ? Plane 是一个简单的、可扩展的、开源的项目和产品管理工具。它允许用户从一个基本的任务跟踪工具开始,逐步采用各…

初步学习使用SpringBoot框架

对于SpringBoot框架介绍大家可以看看这个这篇文章,SpringBoot优缺点以及如何安装使用 以下我是按照老师给的安装方法进行安装使用SpringBoot框架: 大家安装SpringBoot框架时候,最好安装3.0以下的,不然需要对应较高版本的JDK版本&…