μC/OS-II在凌阳单片机SPCE061A上的移植
>
//求出系统堆栈的长度,并将其存入R2
R1=SP
R2=OSStkStart
R1+=1
R2=R2-R1
R1=[_OSTCBCμγ]//R1≤OSTCBStkPtr,R1为任
//务堆栈的头指针
R1=[R1]//首先将系统堆栈长度保存在任
//务堆栈中
[R1]=R2
R3=OSStkStart//得到堆栈的起始地址
//保存系统堆栈到任务堆栈
save_stack:
R3-=1
R1+=1
R4=[R3]
[R1]=R4
R2-=1
JNZsave_stack
CALL_OSTaskSwHook
R1=[_OSTCBHighRdy]
[_OSTCBCur]=R1
R1=[_OSPrioHighRdy]
[_OSPrioCur]=R1
JMPOSCtxSw_in
3.2μCOS-II系统时钟
以凌阳SPCE061A单片机的TMB2时基信号作为系统时钟,每经历一个时钟节拍的时间将产生一次中断,在中断服务子程序中会调用OSTickISR()函数,汇编代码如下:
_OSTickISR:
PUSHALL
R1=0x0001
testR1,[P_INT_Ctrl]
JZOUT
R1=0x0001
[P_INT_Clear]=R1
CALL_OSIntEnter
CALL_OSTimeTick
CALL_OSIntExit
OUT:
R1=0x0001
[P_INT_Clear]=R1
POPALL
RETI
结语
RTOS是当今嵌入式应用的热点。应用RTOS,可以提高产品的可靠性,降低研发周期。μCOS-II具有很好的实时性和很小的代码量,因此掌握μCOS-II的移植方法是相当重要的。本文移植修改的源代码请参见本刊网络补充版(http://fanwen.oyaya.net收集整理)。
《μC/OS-II在凌阳单片机SPCE061A上的移植(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/166366.html
//求出系统堆栈的长度,并将其存入R2
R1=SP
R2=OSStkStart
R1+=1
R2=R2-R1
R1=[_OSTCBCμγ]//R1≤OSTCBStkPtr,R1为任
//务堆栈的头指针
R1=[R1]//首先将系统堆栈长度保存在任
//务堆栈中
[R1]=R2
R3=OSStkStart//得到堆栈的起始地址
//保存系统堆栈到任务堆栈
save_stack:
R3-=1
R1+=1
R4=[R3]
[R1]=R4
R2-=1
JNZsave_stack
CALL_OSTaskSwHook
R1=[_OSTCBHighRdy]
[_OSTCBCur]=R1
R1=[_OSPrioHighRdy]
[_OSPrioCur]=R1
JMPOSCtxSw_in
3.2μCOS-II系统时钟
以凌阳SPCE061A单片机的TMB2时基信号作为系统时钟,每经历一个时钟节拍的时间将产生一次中断,在中断服务子程序中会调用OSTickISR()函数,汇编代码如下:
_OSTickISR:
PUSHALL
R1=0x0001
testR1,[P_INT_Ctrl]
JZOUT
R1=0x0001
[P_INT_Clear]=R1
CALL_OSIntEnter
CALL_OSTimeTick
CALL_OSIntExit
OUT:
R1=0x0001
[P_INT_Clear]=R1
POPALL
RETI
结语
RTOS是当今嵌入式应用的热点。应用RTOS,可以提高产品的可靠性,降低研发周期。μCOS-II具有很好的实时性和很小的代码量,因此掌握μCOS-II的移植方法是相当重要的。本文移植修改的源代码请参见本刊网络补充版(http://fanwen.oyaya.net收集整理)。
《μC/OS-II在凌阳单片机SPCE061A上的移植(第2页)》