学帮网 > 计算机论文 > 教育资讯

MicroC/OS-II在80C196上的移植实现[1]

来源:学生作业学帮网 编辑:学帮网 时间:2024/05/08 00:35:29 计算机论文
MicroC/OS-II在80C196上的移植实现[1]计算机论文
【毕业论文网 - 计算机论文】
摘 要:在嵌入式系统中使用实时操作系统,可以提高系统的稳定性、可靠性和实时性。MicroC/OS-II是一个完整的,可移植、可固化、可剪裁的抢占式多任务实时内核,并且开放源代码,得到了广泛应用。本文结合具体应用,介绍了MicroC/OS-II在80C196上移植实现过程和注意事项。
关键词:实时操作系统 MicroC/OS-II 80C196 移植
在嵌入式系统开发中,很长时间以来,一直采用传统的嵌入式系统软件设计模式:无限循环+中断服务。该模式下,主程序为一个无限循环,单任务顺序执行各个处理任务。在循环之外,设计一个或多个中断服务函数,用于处理异步事件。在相对简单的应用中,这种模式,完全可以胜任。而对于实时性要求较高、处理任务较多的应用,就会暴露出实时性差的缺点,甚至不能够达到应用的要求,系统可靠性低,稳定性差。引入实时操作系统,可以较好解决这个问题。 MicroC/OS-II是一个完整的,可移植、可固化、可剪裁的抢占式多任务实时内核,并且开放源代码,在嵌入式系统中得到了广泛应用。为了实现老系统功能升级,达到了不改变硬件设计,增加系统功能、提高系统性能的目的,从而采用该实时操作系统。本文介绍了将其移植应用于80C196的具体实现和注意事项。 所谓移植,就是使一个实时内核能够在其他微处理器或微控制器上运行。移植要做的是,修改或编写与处理器硬件相关的代码。由于80C196系统的资源有限,除了代码移植,还要根据具体应用,对MicroC/OS-II进行裁剪,以达到系统的设计要求。 1. MicroC/OS-II简介 MicroC/OS-II的系统结构见图1。 MicroC/OS-II最主要的特点之一是源代码开放,有利于用户根据具体应用对操作系统进行充分的裁减。这也使得其可移植性非常的强。 MicroC/OS-II是为嵌入式应用专门设计的,完全可与应用软件融合在一起,进行编译、连接,进而作为产品的一部分发布。 MicroC/OS-II是完全可剥夺型的实时内核,总是运行就绪任务中最高优先级的任务,即准备就绪的高优先级任务可以剥夺正在运行的低优先级任务的CPU使用权。 2. 移植的基本思路 2.1 编译器 采用TASKING公司的C196编译器,可以方便的嵌入汇编语言,因此该移植所有的函数都在OS_CPU_C.C中实现,没有OS_CPU_A.ASM文件。能够采用C语言编码的,尽量采用C语言编码;不能采用C代码的,采用嵌入汇编的方式。以此降低代码的分散度,提高代码的可读性。 2.2 代码移植 代码移植,需要修改或编写与处理器硬件相关的代码。包括与处理器相关的数据类型定义,函数定义,存储器操作等。其中的主要任务有: 1) 重新编辑INCLUDES.H文件,增加与应用相关的头文件;改写OS_CPU.H文件; 2) 改写OS_CFG.H文件;编写OS_CPU_C.C; 3) 优化代码效率。 2.3 存储资源 由于80C196系统的物理资源十分有限,需要对系统内核进行充分的裁剪。 片内可用内存为220个字节,在系统中外部扩展3584(3.5K)个字节。为了提高系统速度,操作系统尽量使用片内存储区。系统应用中经常使用的变量,也需要分配在片内存储区。 为了节约存储资源采取以下措施: 1) 裁剪不使用的功能模块和其使用相应变量。 2) 根据应用的需要裁剪所需资源的规模。例如,在应用中实际使用任务为6个,所以将OSRdyTbl由一个数组,更改为一个8位变量,并去掉OSRdyGrp,因为其永远是0。 3) 修改OS_InitTaskIdle内容,将OS_TaskIdle任务换为应用的最低优先级的任务。 4) 裁剪OS_TCB的内容。例如,永远不会使用的变量OSTCBY和OSTCBBitY。 5) 裁剪中断嵌套的相关内容。 2.4 时间资源 MicroC/OS-II推荐的时钟节拍为10~200ms,而本系统的实际时钟节拍为250μs,这样系统额外开销必然大幅度增加,系统时间资源十分紧张。 为了节约时间资源采取以下措施: 1) 弃用OSTimeDly函数,直接操作任务定时器,调用OS_Sched函数。 2) 弃用OSIntExit和OSIntCtxSw函数,将其源代码直接加入软件定时器中断服务函数。 3) 降低其他中断服务函数的代码长度,且不进行任务切换,降低系统时钟的误差。 4) 根据编译得到的汇编代码,对部分C语言代码进行优化。 3. 移植实现 3.1 任务分配 一个任务,也称为一个线程,是一个简单的程序,该程序可以认为CPU完全属于自己。每个任务有独立的堆栈空间和优先级。 根据每个任务的内容可以在相应位置,使任务就绪。而任务就绪和任务切换可以分开。例如,在计算机论文