(2) 在单片机系统中嵌入mC/OS-II将增加系统的开销,这在许多书籍和资料中都提到过。现在我们所使用的51系列单片机,其片内都带有一定的RAM和ROM。对于一些简单的程序,如果采用传统的编程方法,已经不需要外扩存储器了。如果在其中嵌入mC/OS-II的话,在只需要使用任务调度、任务切换、信号量处理、延时或超时服务的情况下,也不需要外扩ROM了,但是外扩RAM 是必须的。由于UC/OS-II是可裁减的操作系统,其所需要的RAM大小就依赖于我们对操作系统一些功能的选择。嵌入mC/OS-II以后总的RAM需求可以由如下表达式得出:
RAM总需求=应用程序的RAM需求+内核数据区的RAM需求+(任务栈需求+最大中断嵌套栈需求)×任务数
所幸的是mC/OS-II可以对每个任务分别定义堆栈空间的大小,我们可根据任务的实际需求来进行栈空间的分配。但不管怎么说,在RAM容量有限的情况下,我们还是应该注意一下对大型数组、数据结构和函数的使用,别忘了,函数的形参也是要推入堆栈的。
(3) mC/OS-II的移植也是一件需要值得注意的工作。如果我们手中没有现成的移植实例的话,我们就必须自己来编写移植代码。虽然只需要改动两个文件,但仍需要对相应的微处理器比较熟悉才行。最好参照已有的移植实例。另外,即使我们有移植实例,在编程前最好也要阅读一下,因为里面牵扯到堆栈操作。我们在编写中断服务程序时,把寄存器推入堆栈的顺序必须与移植代码中的顺序相对应。
(4) 和其它一些著名的嵌入式操作系统不同,mC/OS-II在单片机系统中的启动过程比较简单。mC/OS-II的内核是和应用程序放在一起编译成一个文件的,我们只需要把这个文件转换成HEX格式,写入ROM中就可以了。上电后,它会像普通的单片机程序一样运行。
结语
从以上的分析中我们不难看出,是否在单片机系统中嵌入mC/OS-II取决于使用者所要开发的项目。对于实时性,可靠性要求较强的项目,特别是大型项目,最好使用mC/OS-II;而对于一些简单的,成本要求低的项目,就没必要这么麻烦。