热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

FreeRTOS笔记(十五)FreeRTOS总结

文章目录01–裸机和FreeRTOS区别1.1–裸机1.2–FreeRTOS1.3–区别02–对FreeRTOS的感受03–推荐上一文链接:FreeRTOS笔记(十四)[简]软件定

文章目录

  • 01 – 裸机和FreeRTOS区别
      • 1.1 – 裸机
      • 1.2 – FreeRTOS
      • 1.3 – 区别
  • 02 – 对FreeRTOS的感受
  • 03 – 推荐

上一文链接:FreeRTOS笔记(十四)[简] 软件定时器、事件组、任务通知

01 – 裸机和FreeRTOS区别

  学完FreeRTOS,应该要自己总结一下FreeRTOS和裸机的区别,宏观上说,FreeRTOS是一个运行在裸机上的微内核,它和裸机的最终目标是一致的,都是需要运行用户程序,接受一些输入,然后输出
  而微观上,FreeRTOS和裸机是有很大区别的,怎样的区别,在乎站在哪个角度上考虑,如果站在用户角度上,那么FreeRTOS和裸机可能没有区别,所以在这一切站在开发者的角度上考虑
《FreeRTOS笔记(十五)FreeRTOS总结》

1.1 – 裸机

  前台和后台,前台是中断,用于处理异步事件,后台是大循环,循环里面调用API完成相关操作,任务顺序执行
  裸机要使得任务并发性是可以的,使用中断实现一些固定的跳转方式,比如使用软件中断呼叫某些固定号数的任务程序,;整个程序逻辑简单的时候是没有问题的,但是当整个程序逻辑复杂的时候,比如手机,你完全不知道用户的下一个步骤到底是什么,所以必须考虑全部的可执行性,整个程序就会非常复杂,如果继续用裸机,可能可以,但是绝对难以维护和阅读,所以此时裸机显得无能为力

1.2 – FreeRTOS

  基于任务开发,核心是可剥夺的内核,实现多任务并发执行,任务是可以剥夺其他任务的CPU使用权,哪一个任务可以执行,哪一个任务需要等待,完全由内核决定和管理,开发者可以设计任务的优先级逻辑让任务之间按照开发者的意愿进行

1.3 – 区别

  总的来说,裸机用于处理逻辑简单、功能简单的需求,例如平衡小车、蓝牙玩具、闹钟等等,而FreeRTOS则用于处理逻辑复杂,功能复杂的需求,例如实现蓝牙协议和串口传输、实现并发C/S模式、高速环境采集器等等,具体细节如下表

……裸机FreeRTOS
逻辑复杂度
开发方式基于前后台基于任务
模块执行模式顺序并发
堆栈操作不需要操作需要操作
内存管理没有
模块通信没有任何保护机制的全局变量基于队列的各种含原子操作和保护的介质
模块独立性
应用例子平衡小车、蓝牙玩具、闹钟……蓝牙协议和串口传输、实现并发C/S模式、高速环境采集器
——————
02 – 对FreeRTOS的感受

  对于裸机开发而言,FreeRTOS更像是提供了一个便捷的平台,不需要从轮子造起,任务之间的并发安全不需要考虑,这对于功能复杂、逻辑复杂的需求而言是个福音,但是任务的并发调度不一定要用FreeRTOS,自定义中断也能进行,只是FreeRTOS是经过千锤百炼得出的微内核,修改了各种BUG,对任务的并发调度有非常大的帮助,使用别人优秀的代码也是自己优秀的体现

03 – 推荐

  最后,推荐一下大牛的FreeRTOS笔记/教程,个人觉得比较全面
  FreeRTOS基础篇
  FreeRTOS高级篇


推荐阅读
  • 面试题总结_2019年全网最热门的123个Java并发面试题总结
    面试题总结_2019年全网最热门的123个Java并发面试题总结 ... [详细]
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • Java EE 平台集成了多种服务、API 和协议,旨在支持基于 Web 的多层应用程序开发。本文将详细介绍 Java EE 中的 13 种关键技术规范,帮助开发者更好地理解和应用这些技术。 ... [详细]
  • 阿里云 Aliplayer高级功能介绍(八):安全播放
    如何保障视频内容的安全,不被盗链、非法下载和传播,阿里云视频点播已经有一套完善的机 ... [详细]
  • 本文探讨了 TypeScript 中泛型的重要性和应用场景,通过多个实例详细解析了泛型如何提升代码的复用性和类型安全性。 ... [详细]
  • 小程序的授权和登陆
    小程序的授权和登陆 ... [详细]
  • 无论是在迁移到云服务还是更换云服务商的过程中,数据迁移都是一个至关重要的环节。本文将探讨数据迁移中可能遇到的问题及解决方案,包括路径问题、速度问题和数据完整性等。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 本文将深入探讨 iOS 中的 Grand Central Dispatch (GCD),并介绍如何利用 GCD 进行高效多线程编程。如果你对线程的基本概念还不熟悉,建议先阅读相关基础资料。 ... [详细]
  • RocketMQ在秒杀时的应用
    目录一、RocketMQ是什么二、broker和nameserver2.1Broker2.2NameServer三、MQ在秒杀场景下的应用3.1利用MQ进行异步操作3. ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 高端存储技术演进与趋势
    本文探讨了高端存储技术的发展趋势,包括松耦合架构、虚拟化、高性能、高安全性和智能化等方面。同时,分析了全闪存阵列和中端存储集群对高端存储市场的冲击,以及高端存储在不同应用场景中的发展趋势。 ... [详细]
  • 本文介绍了Spring 2.0引入的TaskExecutor接口及其多种实现,包括同步和异步执行任务的方式。文章详细解释了如何在Spring应用中配置和使用这些线程池实现,以提高应用的性能和可管理性。 ... [详细]
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
author-avatar
Allen
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有