| 下一篇 |
|---|
裸机 与 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给内核和任务栈) |
| 开发难度 | 简单项目容易,复杂项目难 | 入门有门槛,但复杂项目开发更高效 |
| 代码结构 | 容易变得混乱(意大利面条代码) | 模块化,结构清晰 |
| 适用场景 | 简单、低成本、资源受限的系统 | 复杂、多任务、高实时性要求的系统 |
裸机与 RTOS&spm=1001.2101.3001.5002&articleId=154005928&d=1&t=3&u=cea2c0080df044fb8361b53b09754019)
1万+

被折叠的 条评论
为什么被折叠?



