您现在的位置: 论文网 >> 计算机论文 >> 计算机应用论文 >> MicroC/OS-II在80C196上的移植实现论文

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

作者:未知
出处:论文网
时间:2007-05-14

    为80C196定义OS_ENTER_CRITICAL和OS_EXIT_CRITICAL如下:

// 中断禁止函数

#define  OS_ENTER_CRITICAL()  asm DI

// 中断使能函数

#define  OS_EXIT_CRITICAL()   asm EI

3.4 其他代码实现

3.4.1 任务堆栈初始化函数

任务堆栈初始化函数代码如下:

OS_STK  *OSTaskStkInit (void (*task)(void *pd), void *pdata, OS_STK *ptos, INT16U opt)

{

     … …

     stk = (OS_STK*)ptos;

*--stk = (OS_STK)task; // 任务开始地址

*--stk = (OS_STK)0x0000|gimask;  // PSW IMASK

*--stk = (OS_STK)0x0000|gimask1;// IMASK1 WSR

*--stk = (OS_STK)4;    // DX

*--stk = (OS_STK)3;    // CX

*--stk = (OS_STK)2;    // BX

*--stk = (OS_STK)1;    // AX

 

return ((OS_STK *)stk);

}

3.4.2 开始运行最高优先级就绪任务

系统开始运行时,调用该函数,以开始运行,其实现代码如下:

void OSStartHighRdy(void)

{

     OSRunning = TRUE;  // 置系统正在运行标志

     … …

     OSTCBCur = OSTCBHighRdy;    // 置当前TCB为最高优先级就绪任务的TCB

     psp = OSTCBHighRdy->OSTCBStkPtr; // 取得堆栈指针

     asm{     // 恢复现场

         pop  dx;  pop  cx;  pop  bx;  pop  ax;  popa;    // 转到新任务

     }

}

3.4.3 现场切换函数

OS_Sched函数调用该函数实现真正的任务切换。

void OSCtxSw(void)

{

     asm{     // 保存被中断任务的现场

         pusha;   push ax;  push bx;  push cx;  push dx;

     }

OSTCBCur->OSTCBStkPtr = psp;     // 存储被中断任务的堆栈指针

     OSTCBCur = OSTCBPrioTbl[OSPrioHighRdy];   // 取得最高优先级就绪任务的TCB

     OSPrioCur = OSPrioHighRdy;  // 设当前任务优先级为最高优先级就绪任务的优先级

     psp = OSTCBCur->OSTCBStkPtr;              // 取得堆栈指针

     asm{     // 现场恢复

         pop  dx;  pop  cx;  pop  bx;  pop  ax;  popa;

     }

}

4. 注意事项

在实现过程中的得到如下经验教训:

1)       尽量减少任务的数量,以减少系统额外开销。相对少的任务数,可以减少,系统花在任务切换上的时间。

2)       合理分配各个任务的优先级。

3)       注意开中断、关中断的时机。

4)       注意入栈和出栈要匹配。如果堆栈指针出现错位,将会出现灾难性后果。特别注意中断服务函数的处理,其调用时的入栈内容和退出中断的出栈内容要对应,而中断退出有两种可能:正常退出和任务切换。

5)       合理选择定时器时间周期。

6)       同类型工作,也同样需要有优先级区分。例如:同样是通信任务,接收数据需要较高的优先级,而通信故障处理需要较低的优先级。一般情况下,通信处理都有一定的故障容忍时间,只要在容忍时间内得到处理就可以了。如果发生不可恢复性错误,故障处理将会占用大量的时间,如果在较高优先级,将会影响整个系统的性能。

5. 结论

通过在80C196上移植实现MicroC/OS-II,达到了不改变硬件设计,增加应用功能,提高了应用系统性能的目的。在嵌入式系统中使用嵌入式实时操作系统,不但可以提高系统的实时性、可靠性和稳定性,还可以提高应用软件的可移植性和可维护性,降低开发人员的工作量。因此,只要硬件环境允许,应尽量采用实时操作系统。

参考文献:

1.         Jean J.Labrosse 著,邵贝贝等译,《嵌入式实时操作系统 μC/OS-II(第二版)》,北京航空航天大学出版社,2003年5月 第1版

2.         孙涵芳主编,《Intel 16位单片机》,北京航空航天大学出版社,1995年11月 第1版

上一页 [1] [2]

论文搜索
关键字:MicroC/OS-II 80C196 移植
最新计算机应用论文
基于网络信息安全技术管理的计算机应用研究
浅析人工智能体系建设
抖音短视频平台视频推荐模式研究
应用电子技术中可编程控制器的应用探讨
用友NC信息系统的实施应用实践研究
基于校园一卡通数据系统的学生行为分析研究
云环境下基于蚁群算法的动态容错技术研究
自拍图像中的记忆痕迹
抖音短视频用户使用动机研究
基于创新扩散理论的Vlog传播
热门计算机应用论文
学生成绩管理系统的设计与实现
浅析计算机病毒及防范的措施
学籍管理系统软件
对计算科学与计算机发展的思考
计算机应用型人才的培养模式研究
物资管理信息系统开发
计算机信息管理在第三方物流中的应用
嵌入式系统数字图像采集接口电路设计
基于B/S体系结构开发应用系统
项目管理在软件中的应用