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. 前端Vue图片上传组件支持单个文件多个文件上传 自定义上传数量 预览删除图片 图片压缩

    前端Vue图片上传组件支持单个文件多个文件上传 自定义上传数量 预览删除图片 图片压缩, 下载完整代码请访问uni-app插件市场址:https://ext.dcloud.net.cn/plugin? ...

  2. ABP - 本地事件总线

    1. 事件总线 在我们的一个应用中,经常会出现一个逻辑执行之后要跟随执行另一个逻辑的情况,例如一个用户创建了后续还需要发送邮件进行通知,或者需要初始化相应的权限等.面对这样的情况,我们当然可以顺序进行 ...

  3. Lamada List 去重及其它操作示例

    import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; import java.util. ...

  4. 利用身份验证和授权机制,例如OAuth、JWT 和 API 密钥,APIaaS 如何帮助解决安全挑战?

    什么是 APIaaS? APIaaS,即 API 即服务(API as a Service)是一种创新的基于云的方法,提供 API(应用程序编程接口),使第三方服务提供商能够访问特定服务.数据或资源. ...

  5. 从Excel 电子表格中读取数据并插入到数据库的简单方式

    using (FileStream fileStreamRead = new FileStream("new.xls" , FileMode.Open )) { //创建工作簿 I ...

  6. border属性之border-radius

    border-radius - 指定每个圆角 如果你在 border-radius 属性中只指定一个值,那么将生成 4 个 圆角. 但是,如果你要在四个角上一一指定,可以使用以下规则: 四个值: 第一 ...

  7. Web网页音视频通话之Webrtc相关操作(二)

    效果图 HTML <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  8. 伸展树(Splay)详解

    引入 在一条链中,二叉查找树的时间复杂度就会退化成 \(O(n)\),这时我们就需要平衡树来解决这个问题. \(Splay\)(伸展树)是平衡树的一种,它的每一步插入.查找和删除的平摊时间都是 \(O ...

  9. python中将时间转换为时间戳

    某平台url中的时间格式为时间戳,将时间变量传入url前,需要将固定格式的时间转换为时间戳.使用python中的time模块,对时间的几种格式进行转换. strptime(),将时间字符串转换成 结构 ...

  10. JavaScript迭代协议

    JavaScript迭代协议解读 迭代协议分为可迭代协议和迭代器协议. 协议指约定俗成的一系列规则. 可迭代协议 可迭代协议规定了怎么样算是一个可迭代对象:可迭代对象或其原型链上必须有一个键为[Sym ...