作者:Allen | 来源:互联网 | 2023-08-20 04:43
文章目录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和裸机可能没有区别,所以在这一切站在开发者的角度上考虑
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高级篇