说一说RTOS
RTOS 即Real-time operating system,实时操作系统,这种操作系统比分时操作系统实时性强,线程切换速度快,线程切换时间可控,为了保证实时性,实时操作系统一般都是抢占型内核,允许高优先级的线程抢占CPU,优先级低的排队执行。普通的单片机程序只有一个while循环,功能比较多的时候这个循环代码很复杂,阅读性差,不好维护。而RTOS可以创建线程,每个线程有自己的while循环,功能可以模块化设计。
1、功能扩展性好,加个功能加个线程就好了,非常方便。
2、单片机利用率高,减少单片机空转。
3、可以像电脑端一样编程,电脑程序员方便地做单片机开发。进程间通讯,内存管理等随便用。
4、代码阅读方便,各个线程很清晰。
5、部分RTOS自带各种功能模块,比如网络,文件系统,UI等模块。选择使用操作系统基本上都是因为这个优点。
使用RTOS的缺点:
1、实时性变差,有人说RTOS不就是实时操作系统嘛,怎么会变差呢,有了操作系统单片机肯定要花费不少时间在操作系统上,比如线程切换是需要时间的等等。实时操作系统是相对非实时操作系统来说的。没有操作系统的那个while才是最实时的。
2、内存开销大,包括RAM和Flash,增加了操作系统代码量就增多了,占用更多的Flash空间,每个任务栈占用了很多RAM,每个栈肯定都有些富余的,也就是有不少的栈空间是空闲的,占用了宝贵的RAM空间。
3、出现BUG时不好调试,虽然大部分单片机都有在线仿真功能。因为每个线程都有自己的线程栈,查找起来麻烦一些。
4、操作系统为了安全运行,必须开关全局中断,在操作系统里面有大量的开关全局中断操作。全局中断只要关闭就会对实时性有一定的影响。比如恰好关闭中断时事件到来,这时候是不能响应的。
5、移植操作系统需要一些汇编知识,稍有些难度,好在官方都有实际例子可以借鉴。
记得09年的时候在51单片机上跑RTOS,51单片机主频低,能跑是能跑,占用比较多资源,没有多少空间给功能开发,也就学学玩玩,实际应用不现实。如果要使用RTOS还是在主频高一些,存储资源丰富的ARM上跑比较合适,比如STM32。
评论