uC/OS-II@STC8H	PendSv	ֲ	tzz1983   2024/5/4

иСĿҪʹ, ѡԴͺSTC8H4K64TL.
ϰuC/OS,ûҵʵ,Ǿͻ˼ʱ,Լֲһ.


ҿ uC/OS-II-51 ֲ涼ǲ˶ջģʽ.
ʵ,uC/OSxdataģջ.KeilC51ģջ,
⵼uC/OS-IIԲ,磺OSTaskCreateExt(), ջȹ.
ʵ,ʷֲ汾ȻõuC/OS-IIĴ,ȴֻʵuC/OS-1Ĺ.


:
ֲ uC/OS-II-51 ֲ, 51˵˴Ż.
ֲ汾ʹ "PendSv" жл.


ǰֲ汾Ƚ,һЩµ£

1.֧ûѡ small  large ģʽ, small  large ģʽԹ.
2.OSлʱ,ж,жϿԿӦ.
3.жﲻҪʹ OSIntNesting++OSIntExit().жϿԭ,Ҳʹϰ.
4.OSں˺ͳһʹ small ģʽ,ûѡ޹,Ч.
5. small  large Ѿreentrant֧. ѡ.
6.ֲ汾,uC/OS-IIйܶ.


ԣ

Ѱͨ "ź,Ϣ,־,,ź,ڴ,ʱ,
/,/,ȡOSʱ,ͳ,ջ,"  ļ򵥹ܲ.

ֲ汾2024/5/4, δʱ֤, Ŀ, .


ʹã

رע⣺ os_cpu.h У #define  OS_STK_GROWTH   1  //ջ, Ӧģջ, 

ʱע⣺ջ &TASK_STK[STK_SIZE-1] , ջ&TASK_STK[0] . ʱǰֲ汾պ÷һ,رѣ

ǰҪEA, õʱԶEA.

ϸٽʹõԭ.


ƣ

small  large ģʽѡ,Ŀ.

ҪΪ,Ϊ,ѡ" LX51 Misc ".

OSһӲжģPendSvΪ, л.PendSvռһжԴ.

PendSv תos_cfg.h  os_cpu.h  os_cpu_a.c

ʱԴ: ת Config.h

OSռöʱ0ϵͳδ,́꼶.



ģʽ

Ƽѡ large ģʽ,ʡʡ. 
largeģʽʱ,xdataܹ, ԣûķǿ뷽ʽ, ЧҲ small+reentrant ģʽͶ.


ѡ small ģʽ,ȫֱ;ֲλɵDATAռ,Ҫע. 
һЧİ취ȫֱʽָ洢, ͬʱûҲʽָΪ reentrant, Ͳȫֶκ;ֲռDATAռĻ.
Ǳڵķգ
1. small+reentrant ģʽ,ܻű(idata)ջ,ô,ǧҪкܴߴľֲ.
2. ⺯ֻȫ,޷ָ. ܳΪռDATAͷԪ.
(ս飺ϴʱǲҪѡ small ģʽ, ̫鷳)


жϵOSע

* OSǲжеõ,
* ԭuCOS-IIṩOSIntNestingֵж,
* Լ⵽ûĴ,Ӷǰһ.
* ֲuCOS-IIȡOSIntNesting
* ҪûЩOSǲжеõģ OSTimeDly(),OSxxPend() ǲжϷõ )
* жһǷже? : ͨ鿴ԭ,÷񲻻᷵жϵô,
* ͬʱҲл,ͨ÷,->񼶵,Ҳжϼ. 򲻿жϵ.


/*
* ҪжϵòһлOS,ֲ汾ṩ˶жϵð汾,жϷĺ.
*/
INT8U  OSTaskSuspend_FROM_ISR (INT8U prio)FunctionProperties;
INT8U  OSTaskResume_FROM_ISR (INT8U prio)FunctionProperties;
INT8U  OSTaskChangePrio_FROM_ISR (INT8U  oldprio,INT8U  newprio)FunctionProperties;
INT8U  OSTimeDlyResume_FROM_ISR (INT8U prio)FunctionProperties;
INT8U  OSSemPendAbort_FROM_ISR (OS_EVENT *pevent, INT8U opt, INT8U *perr)FunctionProperties;
INT8U  OSSemPost_FROM_ISR (OS_EVENT *pevent)FunctionProperties;
OS_FLAGS  OSFlagPost_FROM_ISR (OS_FLAG_GRP  *pgrp, OS_FLAGS flags, INT8U opt, INT8U *perr)FunctionProperties;
INT8U  OSMboxPostOpt_FROM_ISR (OS_EVENT  *pevent, void *pmsg, INT8U opt)FunctionProperties;
INT8U  OSMboxPost_FROM_ISR (OS_EVENT  *pevent, void *pmsg)FunctionProperties;
INT8U  OSMboxPendAbort_FROM_ISR (OS_EVENT  *pevent, INT8U opt, INT8U *perr)FunctionProperties;
INT8U  OSQPendAbort_FROM_ISR (OS_EVENT  *pevent, INT8U opt, INT8U *perr)FunctionProperties;
INT8U  OSQPost_FROM_ISR (OS_EVENT  *pevent, void *pmsg)FunctionProperties;
INT8U  OSQPostFront_FROM_ISR (OS_EVENT  *pevent, void *pmsg)FunctionProperties;
INT8U  OSQPostOpt_FROM_ISR (OS_EVENT  *pevent, void *pmsg, INT8U opt)FunctionProperties;



