FreeRTOS 学习:(一)裸机与 RTOS

下一篇

裸机 与 RTOS

1)裸机

在没有操作系统的情况下,直接在硬件上运行程序。开发者需要直接与微控制器的寄存器打交道。

特点:实时性差、delay函数死等、结构臃肿(实现功能都放在同一个无限循环中)。

在这里插入图片描述

2)RTOS

RTOS:Real-Time Operating System,实时操作系统

一种专门为 实时应用设计 的操作系统内核。它提供任务调度、内存管理、任务间通信等核心服务,允许 多个任务 “并发” 运行 。RTOS 通常会 为每个任务分配一个优先级 (数值越大,任务优先级越高),并且 中断也有自己的、独立于任务的优先级系统 (数值越小,中断优先级越高),中断可以打断任意任务。这两套优先级系统协同工作,共同决定了系统的实时响应能力。

在这里插入图片描述

特点:

  • 分而治之
    • 实现功能划分为多个任务。
  • 延时函数
    • 当前(高优先级)任务遇到延时函数时,会释放 CPU 的资源,去执行(低优先级)其他任务,当延时时间到了之后,又会回来执行(高优先级)原先任务,不让 CPU 休息。
  • 抢占式
    • 高优先级任务可以抢占低优先级任务。
    • 如果高优先级的任务一直运行,那么低优先级的任务是不能运行的,除非高优先级任务进入了阻塞态(比如进入延时),进入阻塞态之后,会让出 CPU 的使用权,执行就绪的低优先级任务。
  • 同级任务交替运行
    • 当多个就绪态的任务具有相同的最高优先级时,会轮流获得一个固定的 CPU 时间片(例如每个任务运行10ms),时间片用完后,即使任务没有主动放弃 CPU,RTOS 也会强制进行上下文切换,让下一个同优先级的任务运行。
  • 任务堆栈
    • 每个任务都有自己的栈空间,用来保存任务的执行情况,防止被打断的时候丢失寄存器信息、变量值。

3)两者的区别总结

单片机在不运行 RTOS 的情况下,即使使用定时器、中断、状态机等方法,也无法做到多任务“并发”。所以 RTOS 对比裸机最大的优势就在于多任务“并发”,但是这个并不是真的并发,而是 同优先级的任务会以极快的速度交替运行、不同优先级任务的抢占式调度 (最简单的区别就是裸机的 delay 函数是死等的,而 RTOS 在运行 delay 的时候仍可以做别的事情)。对比总结:

特性裸机 (Bare Metal)RTOS
操作系统有(实时内核)
任务模型单任务(超级循环)或中断驱动多任务,并发执行
调度顺序执行或中断触发抢占式/协作式调度
实时性可预测,但复杂逻辑下难保证专为实时设计,能保证关键任务及时执行
资源占用极低(无OS开销)较高(需要RAM/Flash给内核和任务栈)
开发难度简单项目容易,复杂项目难入门有门槛,但复杂项目开发更高效
代码结构容易变得混乱(意大利面条代码)模块化,结构清晰
适用场景简单、低成本、资源受限的系统复杂、多任务、高实时性要求的系统

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值