| 
  于是今天就尝试自己做uC/OS-II的移植:(记下几个关键的步骤) 1.        OS_CPU.H - OS_CRITICAL_METHOD=1       (51单片机使用方式1)
 
 
 #define OS_ENTER_CRITICAL()       EA=0 
#define OS_EXIT_CRITICAL()          EA=1 
 因此       OS_STK_GROWTH      0 
 任务切换由OSCtxSw()完成,OSCtxSw()由汇编语言写! 
 - InitHardware (void)reentrant              初始化硬件时钟中断
 
 
   2.        OS_CPU_C.C - OSTaskStkInit()     关于堆栈。最后仅仅理解大致的步骤是怎样,但是目前要我自己写还是很有难度,最后则拷贝了网上下的对应的文件。
 
 
   3.        OS_CPU_A.ASM   4.        关于INCLUDES.H和uC/OS-II.C等一系列文件都要修改下头文件;而且源文件对于函数声明都要设置为可重入reentrant(KEIL在缺省情况下编译代码为不可重入) eg.   uC/OS-II.H    (790) 
void OS_TaskIdle (void *data); 
改为 
void OS_TaskIdle (void *data)reentrant;     (类似的要修改的实在太多了) 
   5.        最后在网上找到一篇关于uC/OS-II移植到51的心得,很值得细看,许多问题都提到了:     好好坚持! btw 
-任务切换:OSTCBHighRdy必须指向优先级最高的任务控制块OS_TCB 
OSTCBHighRdy->OSTCBPrio     任务的优先级 
       
-任务在OSTaskCreate之后即进入就绪表。 
-就绪表:OSRdyGrp& OSRdyTbl[] 
  
-任务调度:OS_Sched中OS_TASK_SW()中都系汇编语言,未用心去睇。 
  
 |