FreeRTOS 和裸机的区别


01 FreeRTOS 简介

什么是FreeRTOS?

特点:实时性、可移植性、可扩展性

架构:内核、任务、调度器、通信机制

什么是裸机?

特点:无操作系统、直接操作硬件

缺点:缺乏任务调度、难以管理多任务

02 FreeRTOS 和裸机的区别

多任务管理 FreeRTOS 裸机
提供任务调度器 无任务调度器
可以创建多个任务 只能顺序执行任务
通过时间片轮转算法进行任务切换 需要手动切换任务
系统资源管理 FreeRTOS 裸机
提供给内存管理 需要手动管理内存
提供任务间通信机制 需要自行实现任务间通信
可以动态创建和删除任务 无法动态创建和删除任务
可移植性和可扩展性 FreeRTOS 裸机
可以在不同的硬件平台上运行、提供丰富的API和配置选项 需要根据硬件平台进行适配、功能受限于硬件平台

03 Cubemx 简介

特点:图形化界面、自动生成代码、支持多种 MCU

创建RTOS工程

步骤:

  1. 打开 Cubemx
  2. 选择 MCU 型号
  3. 配置系统时钟
  4. 配置 RTOS 参数
  5. 生成代码

04 多任务体验

  • 创建任务

    • 定义任务函数

      • 任务函数的参数和返回值任务函数的实现
    • 创建任务
      • 使用 FreeRTOS 提供的 API 创建任务设置任务的优先级和堆栈大小
  • 任务调度
    • 时间轮转算法

      • 任务按照优先级顺序执行,每个任务执行一段时间后却换到下一个任务
    • 任务切换
      • 任务切换的实际、任务切换的开销
  • 任务间通信
    • 信号量

      • 用于任务同步和互斥、通过信号量实现任务间的资源共享
    • 队列
      • 用于任务间的消息传递、通过队列实现任务间的数据交换
  • 动态创建和删除任务
    • 创建任务

      • 使用 FreeRTOS 提供的 API 动态创建任务设置任务的优先级和和堆大小
    • 删除任务
      • 使用 FreeRTOS 提供的 API 删除任务释放任务占用的资源

FreeRTOS 和裸机的区别的更多相关文章

  1. freeRTOS与裸机程序相比有什么区别??

    FreeRTOS命名及变量规则 初学FreeRTOS的用户对其变量和函数的命名比较迷惑,    FreeRTOS的核心源代码遵从MISRA编码标准指南,关于MISRA编码标准,可以查看文章https: ...

  2. FreeRTOS学习目录

    1.关于实时操作系统的一些概念性问题 2.freeRTOS与裸机程序相比有什么区别?? 3.freeRTOSConfig.h文件对FreeRTOS进行系统配置 4.FreeRTOS的内存管理

  3. FreeRTOS+CubeMX编程实践

    一.关于FreeRTOS 1.什么是FreeRTOS? FreeRTOS是一个轻量级的操作系统.FreeRTOS提供的功能包括:任务管理.时间管理.信号量.消息队列.内存管理.记录功能等,可基本满足较 ...

  4. FreeRTOS和Ucos在任务优先级的区别

    而ucos的任务优先级是任务优先级的数组越小,任务优先级越高.和STM32的中断优先级保持一样的分析,和freeRTOS相反.

  5. freertos内存pvPortMalloc 和 malloc 区别 ,以及全局变量占用情况

    1.FreeRtos占用内存 #define configTOTAL_HEAP_SIZE ( ( size_t ) ( 30 * 1024 ) ) pvPortMalloc是从configTOTAL_ ...

  6. FreeRTOS和Ucos在打开关闭中断的区别

  7. FreeRTOS 事件标志组

    以下转载自安富莱电子: http://forum.armfly.com/forum.php 为什么要使用事件标志事件标志组是实现多任务同步的有效机制之一.也许有不理解的初学者会问采用事件标志组多麻烦, ...

  8. FreeRTOS 二值信号量,互斥信号量,递归互斥信号量

    以下转载自安富莱电子: http://forum.armfly.com/forum.php 本章节讲解 FreeRTOS 任务间的同步和资源共享机制,二值信号量. 二值信号量是计数信号量的一种特殊形式 ...

  9. FreeRTOS 计数信号量

    以下转载自安富莱电子: http://forum.armfly.com/forum.php 本章节开始讲解 FreeRTOS 任务间的同步和资源共享机制,计数信号量. FreeRTOS 中计数信号量的 ...

  10. FreeRTOS 消息队列

    以下基础内容转载自安富莱电子: http://forum.armfly.com/forum.php 本章节为大家讲解 FreeRTOS 的一个重要的通信机制----消息队列,初学者要熟练掌握,因为消息 ...

随机推荐

  1. 使用Git进行版本控制和协作:代码共享、协作和版本管理

    目录 引言 Git 是一款开源的分布式版本控制系统,它已经成为了现代软件开发中必不可少的工具之一.在这篇文章中,我们将介绍如何使用 Git 进行版本控制和协作,以实现代码共享.协作和版本管理.Git ...

  2. WPF入门教程系列二十九 ——DataGrid使用示例MVVM模式(7)

    WPF入门教程系列目录 WPF入门教程系列二--Application介绍 WPF入门教程系列三--Application介绍(续) WPF入门教程系列四--Dispatcher介绍 WPF入门教程系 ...

  3. 手撕HashMap(一)

    HashMap基本了解 1. jdk1.7之前,HashMap底层只是数组和链表 2. jdk1.8之后,HashMap底层数据结构当链表长度超过8时,会转为红黑树 3. HashMap利用空间换时间 ...

  4. 大语言模型的开发利器langchain

    目录 简介 什么是langchain langchain的安装 langchain快速使用 构建应用 聊天模式 Prompt的模板 Chains Agents Memory 总结 简介 最近随着cha ...

  5. Unity iOS Guideline 1.3 - Safety - Kids Category 被拒

    解决办法: 不使用unity 的分析SDK //关闭unity信息收集服务 UnityEngine.Analytics.Analytics.enabled = false; UnityEngine.A ...

  6. go NewTicker 得使用

    转载请注明出处: 在 Go 语言中,time.NewTicker 函数用于创建一个周期性触发的定时器.它会返回一个 time.Ticker 类型的值,该值包含一个通道 C,定时器会每隔一段时间向通道 ...

  7. centos系统给centos-root硬盘扩容

    此服务器为虚拟机,通过lsblk命令查看当前虚拟机硬盘: 其中一块硬盘大小为100G,已作为系统盘使用,但是只分配了15G的空间使用,需要对剩余空间进行分区,并扩容到对应centos卷组的root目录 ...

  8. ObjectInputStream_报错问题

    报错: Exception in thread "main" java.io.StreamCorruptedException: invalid stream header: CE ...

  9. 2023年郑州轻工业大学校赛邀请赛myh

    赛程回顾和赛后总结 赛程回顾 although 昨天刚复盘的,但还是记不住题号.就口胡下是那类型题吧. 刚开始时,我和队长先看的a,让jc去找签到题.我们看了下a,队长说可能dp,但还是感觉没啥思路就 ...

  10. Lazy(Func<T>)的异常缓存问题

    Lazy可以提供多线程环境下的安全保障,但是用不好也是会跳到坑里. 我这里使用Lazy<t>(Func<T>)来创建一个Lazy实例,然后在需要的地方访问它的Value属性,它 ...