⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 os_core.s43

📁 ucos2.52在msp430上移植
💻 S43
📖 第 1 页 / 共 5 页
字号:
; 627.	        pevent1->OSEventPtr  = pevent2;
	MOV	R13,4(R14)	
; 628.	        pevent1++;
	ADD	#8,R14	
; 629.	        pevent2++;
	ADD	#8,R13	
	ADD	#1,R12	
	JMP	(?0139)	
?0138:
; 630.	    }
; 631.	    pevent1->OSEventType = OS_EVENT_TYPE_UNUSED;
; 632.	    pevent1->OSEventPtr  = (OS_EVENT *)0;
	MOV	#0,4(R14)	
; 633.	    OSEventFreeList      = &OSEventTbl[0];
	MOV	#OSEventTbl,&OSEventFreeList	
; 634.	#else
; 635.	    OSEventFreeList              = &OSEventTbl[0];               /* Only have ONE event control block        */
; 636.	    OSEventFreeList->OSEventType = OS_EVENT_TYPE_UNUSED;
; 637.	    OSEventFreeList->OSEventPtr  = (OS_EVENT *)0;
; 638.	#endif
; 639.	#endif
; 640.	}
	RET		
OS_InitMisc:
; 641.	/*$PAGE*/
; 642.	/*
; 643.	*********************************************************************************************************
; 644.	*                                             INITIALIZATION
; 645.	*                                    INITIALIZE MISCELLANEOUS VARIABLES
; 646.	*
; 647.	* Description: This function is called by OSInit() to initialize miscellaneous variables.
; 648.	*
; 649.	* Arguments  : none
; 650.	*
; 651.	* Returns    : none
; 652.	*********************************************************************************************************
; 653.	*/
; 654.	
; 655.	static  void  OS_InitMisc (void)
; 656.	{
; 657.	#if OS_TIME_GET_SET_EN > 0   
; 658.	    OSTime        = 0L;                                          /* Clear the 32-bit system clock            */
	MOV	#0,&OSTime	
	MOV	#0,&(OSTime+2)	
; 659.	#endif
; 660.	
; 661.	    OSIntNesting  = 0;                                           /* Clear the interrupt nesting counter      */
	MOV.B	#0,&OSIntNesting	
; 662.	    OSLockNesting = 0;                                           /* Clear the scheduling lock counter        */
	MOV.B	#0,&OSLockNesting	
; 663.	
; 664.	    OSTaskCtr     = 0;                                           /* Clear the number of tasks                */
	MOV.B	#0,&OSTaskCtr	
; 665.	
; 666.	    OSRunning     = FALSE;                                       /* Indicate that multitasking not started   */
	MOV.B	#0,&OSRunning	
; 667.	    
; 668.	    OSCtxSwCtr    = 0;                                           /* Clear the context switch counter         */
	MOV	#0,&OSCtxSwCtr	
	MOV	#0,&(OSCtxSwCtr+2)	
; 669.	    OSIdleCtr     = 0L;                                          /* Clear the 32-bit idle counter            */
	MOV	#0,&OSIdleCtr	
	MOV	#0,&(OSIdleCtr+2)	
; 670.	
; 671.	#if (OS_TASK_STAT_EN > 0) && (OS_TASK_CREATE_EXT_EN > 0)
; 672.	    OSIdleCtrRun  = 0L;
	MOV	#0,&OSIdleCtrRun	
	MOV	#0,&(OSIdleCtrRun+2)	
; 673.	    OSIdleCtrMax  = 0L;
	MOV	#0,&OSIdleCtrMax	
	MOV	#0,&(OSIdleCtrMax+2)	
; 674.	    OSStatRdy     = FALSE;                                       /* Statistic task is not ready              */
	MOV.B	#0,&OSStatRdy	
; 675.	#endif
; 676.	}
	RET		
OS_InitRdyList:
; 677.	/*$PAGE*/
; 678.	/*
; 679.	*********************************************************************************************************
; 680.	*                                             INITIALIZATION
; 681.	*                                       INITIALIZE THE READY LIST
; 682.	*
; 683.	* Description: This function is called by OSInit() to initialize the Ready List.
; 684.	*
; 685.	* Arguments  : none
; 686.	*
; 687.	* Returns    : none
; 688.	*********************************************************************************************************
; 689.	*/
; 690.	
; 691.	static  void  OS_InitRdyList (void)
; 692.	{
; 693.	    INT16U   i;
; 694.	    INT8U   *prdytbl;
; 695.	
; 696.	
; 697.	    OSRdyGrp      = 0x00;                                        /* Clear the ready list                     */
	MOV.B	#0,&OSRdyGrp	
; 698.	    prdytbl       = &OSRdyTbl[0];
	MOV	#OSRdyTbl,R13	
; 699.	    for (i = 0; i < OS_RDY_TBL_SIZE; i++) {
	MOV	#0,R12	
?0145:
	CMP	#2,R12	
	JC	(?0144)	
; 700.	        *prdytbl++ = 0x00;
	MOV.B	#0,0(R13)	
	ADD	#1,R13	
	ADD	#1,R12	
	JMP	(?0145)	
?0144:
; 701.	    }
; 702.	
; 703.	    OSPrioCur     = 0;
	MOV.B	#0,&OSPrioCur	
; 704.	    OSPrioHighRdy = 0;
	MOV.B	#0,&OSPrioHighRdy	
; 705.	
; 706.	    OSTCBHighRdy  = (OS_TCB *)0;                                 
	MOV	#0,&OSTCBHighRdy	
; 707.	    OSTCBCur      = (OS_TCB *)0;
	MOV	#0,&OSTCBCur	
; 708.	}
	RET		
OS_InitTaskIdle:
; 709.	
; 710.	/*$PAGE*/
; 711.	/*
; 712.	*********************************************************************************************************
; 713.	*                                             INITIALIZATION
; 714.	*                                         CREATING THE IDLE TASK
; 715.	*
; 716.	* Description: This function creates the Idle Task.
; 717.	*
; 718.	* Arguments  : none
; 719.	*
; 720.	* Returns    : none
; 721.	*********************************************************************************************************
; 722.	*/
; 723.	
; 724.	static  void  OS_InitTaskIdle (void)
; 725.	{
; 726.	#if OS_TASK_CREATE_EXT_EN > 0
; 727.	    #if OS_STK_GROWTH == 1
; 728.	    (void)OSTaskCreateExt(OS_TaskIdle,
; 729.	                          (void *)0,                                 /* No arguments passed to OS_TaskIdle() */
; 730.	                          &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1], /* Set Top-Of-Stack                     */
; 731.	                          OS_IDLE_PRIO,                              /* Lowest priority level                */
; 732.	                          OS_TASK_IDLE_ID,
; 733.	                          &OSTaskIdleStk[0],                         /* Set Bottom-Of-Stack                  */
; 734.	                          OS_TASK_IDLE_STK_SIZE,
; 735.	                          (void *)0,                                 /* No TCB extension                     */
; 736.	                          OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/* Enable stack checking + clear stack  */
	PUSH	#3	
	PUSH	#0	
	PUSH	#0	
	PUSH	#512	
	PUSH	#OSTaskIdleStk	
	PUSH	#65535	
	PUSH.B	#12	
	PUSH	#(OSTaskIdleStk+1022)	
	MOV	#0,R14	
	MOV	#OS_TaskIdle,R12	
	CALL	#OSTaskCreateExt	
	ADD	#16,SP	
; 737.	    #else
; 738.	    (void)OSTaskCreateExt(OS_TaskIdle,
; 739.	                          (void *)0,                                 /* No arguments passed to OS_TaskIdle() */
; 740.	                          &OSTaskIdleStk[0],                         /* Set Top-Of-Stack                     */
; 741.	                          OS_IDLE_PRIO,                              /* Lowest priority level                */
; 742.	                          OS_TASK_IDLE_ID,
; 743.	                          &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1], /* Set Bottom-Of-Stack                  */
; 744.	                          OS_TASK_IDLE_STK_SIZE,
; 745.	                          (void *)0,                                 /* No TCB extension                     */
; 746.	                          OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/* Enable stack checking + clear stack  */
; 747.	    #endif
; 748.	#else
; 749.	    #if OS_STK_GROWTH == 1
; 750.	    (void)OSTaskCreate(OS_TaskIdle,
; 751.	                       (void *)0,
; 752.	                       &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1],
; 753.	                       OS_IDLE_PRIO);
; 754.	    #else
; 755.	    (void)OSTaskCreate(OS_TaskIdle,
; 756.	                       (void *)0,
; 757.	                       &OSTaskIdleStk[0],
; 758.	                       OS_IDLE_PRIO);
; 759.	    #endif
; 760.	#endif
; 761.	}
	RET		
OS_InitTaskStat:
; 762.	/*$PAGE*/
; 763.	/*
; 764.	*********************************************************************************************************
; 765.	*                                             INITIALIZATION
; 766.	*                                      CREATING THE STATISTIC TASK
; 767.	*
; 768.	* Description: This function creates the Statistic Task.
; 769.	*
; 770.	* Arguments  : none
; 771.	*
; 772.	* Returns    : none
; 773.	*********************************************************************************************************
; 774.	*/
; 775.	
; 776.	#if OS_TASK_STAT_EN > 0
; 777.	static  void  OS_InitTaskStat (void)
; 778.	{
; 779.	#if OS_TASK_CREATE_EXT_EN > 0
; 780.	    #if OS_STK_GROWTH == 1
; 781.	    (void)OSTaskCreateExt(OS_TaskStat,
; 782.	                          (void *)0,                                   /* No args passed to OS_TaskStat()*/
; 783.	                          &OSTaskStatStk[OS_TASK_STAT_STK_SIZE - 1],   /* Set Top-Of-Stack               */
; 784.	                          OS_STAT_PRIO,                                /* One higher than the idle task  */
; 785.	                          OS_TASK_STAT_ID,
; 786.	                          &OSTaskStatStk[0],                           /* Set Bottom-Of-Stack            */
; 787.	                          OS_TASK_STAT_STK_SIZE,
; 788.	                          (void *)0,                                   /* No TCB extension               */
; 789.	                          OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);  /* Enable stack checking + clear  */
	PUSH	#3	
	PUSH	#0	
	PUSH	#0	
	PUSH	#512	
	PUSH	#OSTaskStatStk	
	PUSH	#65534	
	PUSH.B	#11	
	PUSH	#(OSTaskStatStk+1022)	
	MOV	#0,R14	
	MOV	#OS_TaskStat,R12	
	CALL	#OSTaskCreateExt	
	ADD	#16,SP	
; 790.	    #else
; 791.	    (void)OSTaskCreateExt(OS_TaskStat,
; 792.	                          (void *)0,                                   /* No args passed to OS_TaskStat()*/
; 793.	                          &OSTaskStatStk[0],                           /* Set Top-Of-Stack               */
; 794.	                          OS_STAT_PRIO,                                /* One higher than the idle task  */
; 795.	                          OS_TASK_STAT_ID,
; 796.	                          &OSTaskStatStk[OS_TASK_STAT_STK_SIZE - 1],   /* Set Bottom-Of-Stack            */
; 797.	                          OS_TASK_STAT_STK_SIZE,
; 798.	                          (void *)0,                                   /* No TCB extension               */
; 799.	                          OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);  /* Enable stack checking + clear  */
; 800.	    #endif
; 801.	#else
; 802.	    #if OS_STK_GROWTH == 1
; 803.	    (void)OSTaskCreate(OS_TaskStat,
; 804.	                       (void *)0,                                      /* No args passed to OS_TaskStat()*/
; 805.	                       &OSTaskStatStk[OS_TASK_STAT_STK_SIZE - 1],      /* Set Top-Of-Stack               */
; 806.	                       OS_STAT_PRIO);                                  /* One higher than the idle task  */
; 807.	    #else
; 808.	    (void)OSTaskCreate(OS_TaskStat,
; 809.	                       (void *)0,                                      /* No args passed to OS_TaskStat()*/
; 810.	                       &OSTaskStatStk[0],                              /* Set Top-Of-Stack               */
; 811.	                       OS_STAT_PRIO);                                  /* One higher than the idle task  */
; 812.	    #endif
; 813.	#endif
; 814.	}
	RET		
OS_InitTCBList:
; 815.	#endif
; 816.	/*$PAGE*/
; 817.	/*
; 818.	*********************************************************************************************************
; 819.	*                                             INITIALIZATION
; 820.	*                            INITIALIZE THE FREE LIST OF TASK CONTROL BLOCKS
; 821.	*
; 822.	* Description: This function is called by OSInit() to initialize the free list of OS_TCBs.
; 823.	*
; 824.	* Arguments  : none
; 825.	*
; 826.	* Returns    : none
; 827.	*********************************************************************************************************
; 828.	*/
; 829.	
; 830.	static  void  OS_InitTCBList (void)
; 831.	{
; 832.	    INT8U    i;
; 833.	    OS_TCB  *ptcb1;
; 834.	    OS_TCB  *ptcb2;
; 835.	
; 836.	
; 837.	    OSTCBList     = (OS_TCB *)0;                                 /* TCB Initialization                       */
	MOV	#0,&OSTCBList	
; 838.	    for (i = 0; i < (OS_LOWEST_PRIO + 1); i++) {                 /* Clear the priority table                 */
	MOV.B	#0,R14	
?0149:
	CMP.B	#13,R14	
	JC	(?0148)	
; 839.	        OSTCBPrioTbl[i] = (OS_TCB *)0;
	MOV.B	R14,R12	
	ADD	R12,R12	
	MOV	#0,OSTCBPrioTbl(R12)	
	ADD.B	#1,R14	
	JMP	(?0149)	
?0148:
; 840.	    }
; 841.	    ptcb1 = &OSTCBTbl[0];
	MOV	#OSTCBTbl,R13	
; 842.	    ptcb2 = &OSTCBTbl[1];
	MOV	#(OSTCBTbl+36),R12	
; 843.	    for (i = 0; i < (OS_MAX_TASKS + OS_N_SYS_TASKS - 1); i++) {  /* Init. list of free TCBs                  */
	MOV.B	#0,R14	
?0153:
	CMP.B	#12,R14	
	JC	(?0152)	
; 844.	        ptcb1->OSTCBNext = ptcb2;
	MOV	R12,14(R13)	
; 845.	        ptcb1++;
	ADD	#36,R13	
; 846.	        ptcb2++;
	ADD	#36,R12	
	ADD.B	#1,R14	
	JMP	(?0153)	
?0152:
; 847.	    }
; 848.	    ptcb1->OSTCBNext = (OS_TCB *)0;                              /* Last OS_TCB                              */
	MOV	#0,14(R13)	
; 849.	    OSTCBFreeList    = &OSTCBTbl[0];
	MOV	#OSTCBTbl,&OSTCBFreeList	
; 850.	}
	RET		
OS_Sched:
; 851.	/*$PAGE*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -