RT,对应real time。
顾名思义,RT就是实时。
当一个人同时干几件事的时候,光保证每一件事都会被执行那还不行。
陈星看到此处已经意识到:如果小车的差速控制任务执行的慢一些,而让无关紧要的日志记录任务霸占位置,那这显然不合理。
自然而然,他就看明白了“任务抢占”的概念。
一句话:事有轻重缓急。不可能所有的事情都同样对待,肯定是哪件事情急迫先做哪件。
假如当小车前方一米距离突然出现障碍物,这个时候如果自动避障任务执行不及时,显然就会一头撞过去。
所以,任务天生就有优先级之分。
而保证任务能被及时执行,这就是RT的概念。
概念很好理解,而实际掌握却还有一段路要走。
AR适时列出了RTOS的核心特性。
【任务管理、时间管理、内存管理、通信机制、中断管理、可扩展性。】
单片机终究不是人,而是只会执行指令的冰冷芯片。所以不可能通过它的自觉来完成任务。
光有【任务调度】功能还不信。单片机又没带手表,自然需要【时间管理】来为其提供时间参考。
而每個任务其实都是一段程序,而每一段程序都需要运行在内存之中。但内存是有限的,所以就需要把有限的内存分配给需要的任务。在该任务用完之后,还要把任务用完的内存回收过来。因而【内存管理】不可或缺。
单片机不像人一样有眼睛,任务执行完成没有,它没法自己发现,这时候就需要任务与操作系统交互,【通信机制】就应运而生。且不同任务之间还需要交互,比如自动避障任务检测到障碍之后,肯定要通知控制方向的差速任务。这时候也会用到【通信机制】。
【中断管理】则是贯穿于RTOS的始终,比如:测距模块反馈距离数值,单片机不可能一直等着测距模块告诉自己。就好比老板不会一直守在员工身边要工作成果。而是得员工完成以后主动上报。
而这个主动上报的行为就可以理解为【中断】,顾名思义:单片机收到了一个新的事件,当前执行的任务被中断。进而再根据实际情况调整任务执行策略。
好在陈星眼下只需要考虑智能小车这一个项目,他还不是真正的开发人员,不需要考虑到今后还会不会要开发其它的作品。所以【可扩展性】这一块内容他不需要关心。
眼下他根本不需要考虑将RTOS适配多个硬件平台,也不需要掌握RTOS的功能裁剪。他只需要关心一点--让RTOS跑起来。
看到这里,RTOS的所有核心概念,陈星已然掌握。但接下来马上又面临新的问题。
RTOS其实是一个统称,就好比汽车一样。决定要开汽车,接下来就是选择具体某个品牌和型号的汽车。
RTOS的核心概念就和汽车的核心三大件一样,原理都是共通的。
2007年的当下,所有的汽车都离不开底盘、发动机、变速箱。
但是,就如同买汽车一样。并非是了解了底盘、发动机、变速箱这三大件就知道选哪个牌子的汽车。总还得考虑自己的使用场景,和自己的钱包。
选RTOS也是一样。适用,才是第一位的。