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. Vue3从入门到精通(三)

    vue3插槽Slots 在 Vue3 中,插槽(Slots)的使用方式与 Vue2 中基本相同,但有一些细微的差异.以下是在 Vue3 中使用插槽的示例: // ChildComponent.vue ...

  2. python datetime.now() 的问题

    python中,获取指定日期格式的时间可以用 datetime.datetime.now().strftime("%Y-%m-%d")  定义函数的时候,是可以设置参数的默认值的. ...

  3. 「学习笔记」KMP 算法

    前置知识 前缀 是指从串首开始到某个位置 \(i\) 结束的一个特殊子串. 真前缀 指除了 \(S\) 本身的 \(S\) 的前缀. 举例来说, 字符串 abcabeda 的所有前缀为 {a, ab, ...

  4. 使用SpringBoot+React搭建一个Excel报表平台

    摘要:本文由葡萄城技术团队于博客园原创并首发.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 前言 Excel报表平台是一款功能强大.操作简单的系统平台,可 ...

  5. CF103B Cthulhu题解

    CF103B Cthulhu 点击查看题目 点击查看思路 如果 \(n < m\),那么会形成多个环. 如果 \(n > m\),那么不会形成环. 只有 \(n = m\) 时会形成环, ...

  6. Parallel 与 ConcurrentBag<T> 这对儿黄金搭档

    〇.前言 日常开发中经常会遇到数据统计,特别是关于报表的项目.数据处理的效率和准确度当然是首要关注点. 本文主要介绍,如何通过 Parallel 来并行处理数据,并组合 ConcurrentBag&l ...

  7. JVM虚拟机栈

    JVM虚拟机栈 1.概述 1.1背景 由于跨平台性的设计,Java的指令都是根据栈来设计的.不同平台CPU架构不同,所以不能设计为基于寄存器的. 优点是跨平台,指令集小,编译器容易实现,缺点是性能下降 ...

  8. 通过Maxwell同步mariadb数据至kafka

    实验环境 本地虚拟机 maraidb 10.8.8 kafka 2.12-3.3.1 maxwell由容器部署 1 mariadb 1.1 配置log_bin 配置文件中加入如下内容 server-i ...

  9. Redis解决网络抖动问题

    Redis解决网络抖动问题 所谓网络抖动问题, 简单来说就是防止用户短暂的时间内对同一个接口多次点击访问 这里利用的是redis锁的原子性和with Statement上下文管理器实现, 另外该类还支 ...

  10. FAQ: ansible playbook 中 tasks 与 handlers 的区别

    ansible自动化运维有两种执行方式,一种是对远程主机批量执行命令,使用ansible命令,直接调用模块加参数执行:另一种是对远程主机批量执行脚本,也是调用模块,但是要把参数按照yanl语法写到一个 ...