RTOS姊妹花——Small RTOS与STOS++简介
标签:
rtoscstos杂谈 |
本文是本人(陈眀计)很久以前撰写的,当前源码可在http://www.zlgmcu.com/philips/philips-embedsys.asp下载。因为种种原因,这两个操作系统均不再更新,读者可以自行修改和升级。
1
在详细说明之前,我们先看图1、图2这两幅图。从两幅图中可以看出,图1是Small
http://s3/middle/7faddd2dhb01ee4de5532&690RTOS与STOS++简介" TITLE="RTOS姊妹花——Small
图1
大家仔细看一下两者的CPU占有率:基于Small
至于占用存储的的比较,从编译结果来看,STOS++的代码会大一点,但则没有普遍意义:作例子的程序并没有发挥c++的优势。而STOS++的ram占用小一点,但这已没有意义:C++的对象会占用一些堆空间,在实际运行时其占用的空间可能不比Small
http://s12/middle/7faddd2dhb01ee59326eb&690RTOS与STOS++简介" TITLE="RTOS姊妹花——Small
图2
Small
STOS++是Small
这个版本的Small
2
2.1
l公开源代码
对于当前版本,只要遵循许可协议,任何人可以免费获得源代码。
l支持任务数“无限制”。
Small
l任务支持优先级,暂定支持32个优先级。
l不同优先级的任务之间完全基于优先级调度。
高优先级的任务在运行则低优先级的任务不能得到运行。事实上,如果所有任务的优先级均不同,则可认为她们是完全基于优先级的。
l同优先级的任务之间基于时间片轮询调度。
同优先级的任务之间基于时间片调度。目前分配给同一优先级的任务的时间片相同,但不同优先级可以由不同大小的时间片。
l任务之间可以直接发送消息。
不需要事件的支持,任务间可以直接发送消息,而收到消息的任务也可返回一个消息给发送者。一个任务同一个时刻只可以给一个任务发一个消息。如果接收消息的任务还没有把消息收走,又发消息则自身被挂起直至消息被收走。发给同一个任务的消息以FIFO或LIFO方式接收。
l事件(信号量、消息队列等)可基于FIFO方式调度也可基于优先级方式调度。
目前仅支持信号量和消息队列,但事件底层公共代码已完成,添加事件支持很容易。
lmain()函数就是优先级最低的任务。
l可固化
她们为嵌入式系统设计,如果您有固化手段,它可以嵌入到您的产品中成为产品的一部分。
l中断管理
中断可以使正在执行的任务挂起。如果优先级更高的任务被中断唤醒,则高优先级的任务在中断嵌套全部退出后立即执行。中断嵌套层数可达255层。
lRAM需求小
代码考虑了小RAM的应用,在RTOS中对RAM的需求是比较少的。
2.2
l基于标准C语言编写。
l可移植
作者尽量使用把与CPU相关部分压缩到最小,与CPU无关部分用ANSI
2.3
l基于标准C++编写,使用更方便。
每个任务(优先级最低的除外)都是一个对象,都有共同的祖先OS_TASK。通过OS_TASK的方法访问RTOS。
l与CPU管部分代码与同版本的Small
这样,如果CPU既支持C又支持C++,只需移植一次,Small
2.4
未来的版本除了增加事件支持外,最主要的是增加调试支持。

加载中…