前言
本次学习了百问网的七天物联网直播课收获很多,写下笔记记录一下。
RTOS是什么?
实时操作系统(Real-time operating system, RTOS),又称即时操作系统,它会按照排序运行、管理系统资源,并为开发应用程序提供一致的基础。
实时操作系统与一般的操作系统相比,最大的特色就是“实时性”,如果有一个任务需要执行,实时操作系统会马上(在较短时间内)执行该任务,不会有较长的延时。这种特性保证了各个任务的及时执行。
(维基百科定义)
实时操作系统(rtos),如果你的项目需要高效的实时性,就可以使用这种系统。
怎样使用RTOS?
RTOS常见的有freertos,VxWorks,RT-Thread,uCOS,QNX等等,国内比较火的是freertos和RT-Thread.我推荐学习freertos,你也可以自己选择一款喜欢的学习。下面我们大概讲下如何使用,所有的RTOS系统都差不多,都可以使用。
假设我们要同时执行两个函数AB(AB也代表两个任务),AB执行的时间都很长,我们可以使用裸机程序,把AB函数都改造为“状态机”,但如果MCU的性能较好的话,我们可以使用RTOS,这两种方法的核心都是“分时复用”:
- 分时: 函数A运行一小段时间,函数B再运行一段时间,如此循环,交替运行。
- 复用:复用MCU,充分发挥其效能。
我们举个示例:
假如一个妈妈要同时给小孩喂饭和回复同事消息,她可以一心多用,它可以这样做:
- 左手拿勺子,给小孩喂饭
- 右手敲键盘,回复同事
- 两不耽误,小孩“以为”妈妈在专心喂饭,同事“以为”她在专心聊天
- 但是脑子只有一个啊,虽然说“一心多用”,但是谁能同时思考两件事?
- 只是她反应快,上一秒钟在考虑夹哪个菜给小孩,下一秒钟考虑给同事回复什么信息
代码结构如下(示例):
代码如下:
喂饭()
{
while (1)
{
喂一口饭();
}
}
回信息()
{
while (1)
{
回一个信息();
}
}
void main()
{
createtask(喂饭);
createtask(回信息);
start_scheduler();
while (1)
{
sleep();
}
}
总结
RTOS的优势在于可以让多个任务轮流执行,实时响应,不再需要我们去把任务函数按照状态机那样拆分,降低开发成本,充分运用单片机的功能。