1、FreeRTOS - 裸机和RTOS开发的区别

本文对比了裸机开发与RTOS在单片机中的应用,裸机缺乏任务调度,效率低且资源浪费,而RTOS引入实时操作系统,支持多任务并行执行,提高效率并节省CPU资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是裸机?

我们平时常用的单片机开发,其实就是裸机开发,裸机指内部没有操作系统支持的编程环境,代码的编写执行没有操作系统的支持帮助,需要实现的功能全部都放在在一个 while 里面,功能的运行完全取决于代码的逻辑顺序,如下

f0203c4f435b4b9ab51da50f3ca3c797.png

就是吃完一碗米饭,最后再吃一盘菜,无法做到吃口饭吃口菜,如果吃完一碗白饭需要半个小时,想要吃上菜就需要等半个小时,很不方便。一旦项目大起来,需要实现的功能就特别多,这时要再想吃口饭就得等很久很久,如下

2ba059bbf92243c89643512577fd1634.png

另外,裸机开发也会造成 CPU 资源的浪费,例如调用 delay 函数时,CPU 就会进入死等状态,期间不会去做任何事,直到 delay 结束。

是否要进入中断服务函数也是根据代码的执行逻辑顺序,只有执行到判断中断标志位了才能进入中断(除了定时器中断),例如。


什么是 RTOS ?

RTOS,Real-time Operation System,是一系列实时操作系统的总称,如 RT-Thread、FreeRTOS、uCOS 等等,是相比于裸机开发的另一种开发方式,就是让单片机载入一个实时操作系统,摆脱裸机的开发环境,实现更高效率的处理方式(多任务调度处理。类似 Linux 的多线程多进程,这也是区别于裸机开发的点)

原本的裸机开发,全部代码只能在一个大循环 while 中按顺序执行,不同功能间的执行可能有较大的时间间隔。如果使用 RTOS,就可以创建多个不同的任务,每个任务负责实现不同功能,通过调度,快速进行任务切换,由于切换速度非常快,肉眼看起来就像是全部功能在同时执行一样,如下

9efdd97c65234d75a595493e6b1cf5d5.png

RTOS 的任务就是程序员自定义的函数,如上面的 task1、task2(创建任务函数前需要先定义和声明一些参数,这里不做详细介绍),分别完成不同的事,通过开启任务调度器,任务间可以频繁的进行自动切换,就能实现吃一口饭,再吃一口菜,再吃一口饭...

RTOS 也可以有效的利用 CPU 资源,避免资源浪费,如下

02f1368b473f46ddbdcab02f1e80d79f.png

玩游戏之后延时等待一段时间,在这期间会去认真写作业,而不会在那里傻等,直到等待时间结束,才会恢复正常的任务调度

 

裸机和 RTOS 根本区别:有没有任务调度(即一个没有实时性,一个有实时性)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值