基于Cortex-M3核的μCOS-II移植与应用(3)

本文作者(潘丽蕊,袁保社),请您在阅读本文时尊重作者版权。

基于Cortex-M3核的μCOS-II移植与应用(3)

OSStartHighRdy();

OSCtxSw();

OSIntCtxSw();

OSPendSV();

IntDisAll()。

OSStartHighRdy()函数的作用是使用调度器运行第一个任务,也就是运行就绪态任务中优先级最高的任务。

OSCtxSw()函数的作用是进行任务级的上下文切换。任务级的切换是通过执行软中断指令来实现的,要求中断服务子程序、陷阱或异常处理的向量地址要指向OSCtxSw()。

OSIntCtxSw()函数在ISR中执行任务切换功能。与OSCtxSw()函数基本相同,不同的只是不用在OSIntCtxSw()函数中保存CPU的寄存器。

OSPendSV()函数的作用是进行上下文切换。

IntDisAll()函数用于关闭中断控制器中的所有中断。

6 μCOS-II的测试及简单应用

6.1 μCOS-II的测试

当为处理器做完μCOS-II的移植后,紧接着的工作就是验证移植的μCOS-II是否正常工作,而这可能是移植中最复杂的一步。应该首先不加任何应用代码来测试移植好的μCOS-II,也就是说,让内核自己测试自己。有2个理由促使这样做:首先,用户不希望将事情复杂化;其次,如果出现了问题,可以明白问题是出现在移植的内核代码中,而不是应用程序的问题。

可以使用不同的技术测试自己的移植工作,这里通过以下4个步骤测试移植代码:

(1)确保C编译器、汇编编译器及链接器正常工作;

(2)验证OSTaskStkInit()和OSStartHighRdy()函数;

(3)验证OSCtxSw()函数;

(4)验证OSIntCtxSw()函数。

详细步骤在此就不再赘述,以下给出具体的应用来说明。

6.2 简单应用

当移植代码测试成功后,可以测试一些具体的任务,这些任务可以由简单到复杂,不断的进行测试,从而进一步验证内核的稳定性和系统的性能。

这里建立了一个按键控制蜂鸣器的控制任务,其代码如下[5]:

int main (void)

{

OSInit();/* OS-II 初始化uCOS-II的内核 */

OSTaskCreate( taskBuzzer, (void *)0, GstkBuzzer[TASK_BUZZER_STK_SIZE-1],

TASK_BUZZER_PRIO);/* 初始化启动任务 */

OSStart();/* Start uCOS-II启动uCOS-II */

return(0);

}static void taskBuzzer (void*parg)

{(void)parg;

while(1)

{OSTimeDlyHMSM(0, 0, 0, 100); /* 扫描周期100ms */

switch(keyRead()) /* 读按键值 */

{case 0xFE:/* 只有Key1按下 */

buzzerSound(1000); /* 蜂鸣器以1000Hz频率发声 */

OSTimeDlyHMSM(0, 0, 0, 550); /* 延时550ms */

buzzerQuiet(); /* 关闭蜂鸣器,停止发声 */

break;

case 0xFD: /* 只有Key2按下 */

buzzerSound(1500);/* 蜂鸣器以1500Hz频率发声 */

OSTimeDlyHMSM(0, 0, 0, 550); /*延时550ms */

buzzerQuiet(); /* 关闭蜂鸣器,停止发声 */

break;

default:

break;

}}}

加载后,按下Key1或者Key2分别会使蜂鸣器发出不同频率的声音,说明测试成功,内核能够正常运行。如果测试未成功,要认真找出存在的问题,尤其不能忽略硬件的问题。当然也可以采用其它的测试,如LED灯流水闪烁、串口测试等。

7 结束语

通过对μCOS-II实时操作系统体系结构、运行环境和运行机制以及Cortex-M3内核的移植需求的研究,并正确编写及改写了移植环境的定制与配置,实现了μCOS-II 到Cortex-M3核上的移植。试验表明,移植是成功的,最终实现了移植后的应用。

参考文献:

[1]魏洪兴.嵌入式系统设计师教程[M].北京:清华大学出版社,2006.

[2]Jean J.Labrosse.嵌入式实时操作系统μC/OS-II[M].北京:北京航空航天大学出版社, 2003.

[3]周立功.ARM 微控制器基础与实战[M]. 2版.北京:北京航空航天大学出版社,2005.

[4]关海,冯大政.μCOSII在基于Cortex-M3核的ARM处理器上的移植[J]. 电子科技,2009(3).

[5]广州周立功单片机发展有限公司. 基于群星Cortex-M3的μCOS-II移植模板的使用[M]. 2009.2.

共3页: 上一页12 第3页 下一页

赞助广告

相关栏目