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

📄 os_core.s

📁 将本站的UCOSFORAVR128V276版本升级到了280版
💻 S
📖 第 1 页 / 共 5 页
字号:
; 
;     for (i = 0; i < OS_EVENT_TBL_SIZE; i++) {
	cpi R22,2
	brlo L71
	.dbline -2
L70:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r ptbl 20 pc
	.dbsym r i 22 c
	.dbsym r pevent 16 pS[os_event]
	.dbend
	.dbfunc s OS_InitEventList _OS_InitEventList fV
;        pevent2 -> R20,R21
;              i -> R22,R23
;        pevent1 -> R10,R11
	.even
_OS_InitEventList:
	xcall push_gset3
	.dbline -1
	.dbline 815
;         *ptbl++ = 0;
;     }
; }
; #endif
; /*$PAGE*/
; /*
; *********************************************************************************************************
; *                                             INITIALIZATION
; *                           INITIALIZE THE FREE LIST OF EVENT CONTROL BLOCKS
; *
; * Description: This function is called by OSInit() to initialize the free list of event control blocks.
; *
; * Arguments  : none
; *
; * Returns    : none
; *********************************************************************************************************
; */
; 
; static  void  OS_InitEventList (void)
; {
	.dbline 823
; #if OS_EVENT_EN && (OS_MAX_EVENTS > 0)
; #if (OS_MAX_EVENTS > 1)
;     INT16U     i;
;     OS_EVENT  *pevent1;
;     OS_EVENT  *pevent2;
; 
; 
;     OS_MemClr((INT8U *)&OSEventTbl[0], sizeof(OSEventTbl)); /* Clear the event table                   */
	ldi R18,40
	ldi R19,0
	ldi R16,<_OSEventTbl
	ldi R17,>_OSEventTbl
	xcall _OS_MemClr
	.dbline 824
;     pevent1 = &OSEventTbl[0];
	ldi R24,<_OSEventTbl
	ldi R25,>_OSEventTbl
	movw R10,R24
	.dbline 825
;     pevent2 = &OSEventTbl[1];
	ldi R20,<_OSEventTbl+8
	ldi R21,>_OSEventTbl+8
	.dbline 826
	clr R22
	clr R23
	xjmp L80
L77:
	.dbline 826
	.dbline 827
	clr R2
	movw R30,R10
	std z+0,R2
	.dbline 828
	std z+2,R21
	std z+1,R20
	.dbline 833
	movw R24,R10
	adiw R24,8
	movw R10,R24
	.dbline 834
	subi R20,248  ; offset = 8
	sbci R21,255
	.dbline 835
L78:
	.dbline 826
	subi R22,255  ; offset = 1
	sbci R23,255
L80:
	.dbline 826
;     for (i = 0; i < (OS_MAX_EVENTS - 1); i++) {             /* Init. list of free EVENT control blocks */
	cpi R22,4
	ldi R30,0
	cpc R23,R30
	brlo L77
	.dbline 836
;         pevent1->OSEventType    = OS_EVENT_TYPE_UNUSED;
;         pevent1->OSEventPtr     = pevent2;
; #if OS_EVENT_NAME_SIZE > 1
;         pevent1->OSEventName[0] = '?';                      /* Unknown name                            */
;         pevent1->OSEventName[1] = OS_ASCII_NUL;
; #endif
;         pevent1++;
;         pevent2++;
;     }
;     pevent1->OSEventType            = OS_EVENT_TYPE_UNUSED;
	clr R2
	movw R30,R10
	std z+0,R2
	.dbline 837
;     pevent1->OSEventPtr             = (OS_EVENT *)0;
	clr R3
	std z+2,R3
	std z+1,R2
	.dbline 842
; #if OS_EVENT_NAME_SIZE > 1
;     pevent1->OSEventName[0]         = '?';
;     pevent1->OSEventName[1]         = OS_ASCII_NUL;
; #endif
;     OSEventFreeList                 = &OSEventTbl[0];
	ldi R24,<_OSEventTbl
	ldi R25,>_OSEventTbl
	sts _OSEventFreeList+1,R25
	sts _OSEventFreeList,R24
	.dbline -2
L75:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r pevent2 20 pS[os_event]
	.dbsym r i 22 i
	.dbsym r pevent1 10 pS[os_event]
	.dbend
	.dbfunc s OS_InitMisc _OS_InitMisc fV
	.even
_OS_InitMisc:
	xcall push_gset2
	.dbline -1
	.dbline 869
; #else
;     OSEventFreeList                 = &OSEventTbl[0];       /* Only have ONE event control block       */
;     OSEventFreeList->OSEventType    = OS_EVENT_TYPE_UNUSED;
;     OSEventFreeList->OSEventPtr     = (OS_EVENT *)0;
; #if OS_EVENT_NAME_SIZE > 1
;     OSEventFreeList->OSEventName[0] = '?';                  /* Unknown name                            */
;     OSEventFreeList->OSEventName[1] = OS_ASCII_NUL;
; #endif
; #endif
; #endif
; }
; /*$PAGE*/
; /*
; *********************************************************************************************************
; *                                             INITIALIZATION
; *                                    INITIALIZE MISCELLANEOUS VARIABLES
; *
; * Description: This function is called by OSInit() to initialize miscellaneous variables.
; *
; * Arguments  : none
; *
; * Returns    : none
; *********************************************************************************************************
; */
; 
; static  void  OS_InitMisc (void)
; {
	.dbline 874
; #if OS_TIME_GET_SET_EN > 0
;     OSTime        = 0L;                                    /* Clear the 32-bit system clock            */
; #endif
; 
;     OSIntNesting  = 0;                                     /* Clear the interrupt nesting counter      */
	clr R2
	sts _OSIntNesting,R2
	.dbline 875
;     OSLockNesting = 0;                                     /* Clear the scheduling lock counter        */
	sts _OSLockNesting,R2
	.dbline 877
; 
;     OSTaskCtr     = 0;                                     /* Clear the number of tasks                */
	sts _OSTaskCtr,R2
	.dbline 879
; 
;     OSRunning     = FALSE;                                 /* Indicate that multitasking not started   */
	sts _OSRunning,R2
	.dbline 881
; 
;     OSCtxSwCtr    = 0;                                     /* Clear the context switch counter         */
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	sts _OSCtxSwCtr+1,R21
	sts _OSCtxSwCtr,R20
	sts _OSCtxSwCtr+2+1,R23
	sts _OSCtxSwCtr+2,R22
	.dbline 882
;     OSIdleCtr     = 0L;                                    /* Clear the 32-bit idle counter            */
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	sts _OSIdleCtr+1,R21
	sts _OSIdleCtr,R20
	sts _OSIdleCtr+2+1,R23
	sts _OSIdleCtr+2,R22
	.dbline -2
L81:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc s OS_InitRdyList _OS_InitRdyList fV
;        prdytbl -> R16,R17
;              i -> R18
	.even
_OS_InitRdyList:
	.dbline -1
	.dbline 905
; 
; #if OS_TASK_STAT_EN > 0
;     OSIdleCtrRun  = 0L;
;     OSIdleCtrMax  = 0L;
;     OSStatRdy     = FALSE;                                 /* Statistic task is not ready              */
; #endif
; }
; /*$PAGE*/
; /*
; *********************************************************************************************************
; *                                             INITIALIZATION
; *                                       INITIALIZE THE READY LIST
; *
; * Description: This function is called by OSInit() to initialize the Ready List.
; *
; * Arguments  : none
; *
; * Returns    : none
; *********************************************************************************************************
; */
; 
; static  void  OS_InitRdyList (void)
; {
	.dbline 914
;     INT8U    i;
; #if OS_LOWEST_PRIO <= 63
;     INT8U   *prdytbl;
; #else
;     INT16U  *prdytbl;
; #endif
; 
; 
;     OSRdyGrp      = 0;                                     /* Clear the ready list                     */
	clr R2
	sts _OSRdyGrp,R2
	.dbline 915
;     prdytbl       = &OSRdyTbl[0];
	ldi R16,<_OSRdyTbl
	ldi R17,>_OSRdyTbl
	.dbline 916
	clr R18
	xjmp L86
L83:
	.dbline 916
	.dbline 917
	clr R2
	movw R30,R16
	st Z+,R2
	movw R16,R30
	.dbline 918
L84:
	.dbline 916
	inc R18
L86:
	.dbline 916
;     for (i = 0; i < OS_RDY_TBL_SIZE; i++) {
	cpi R18,2
	brlo L83
	.dbline 920
;         *prdytbl++ = 0;
;     }
; 
;     OSPrioCur     = 0;
	clr R2
	sts _OSPrioCur,R2
	.dbline 921
;     OSPrioHighRdy = 0;
	sts _OSPrioHighRdy,R2
	.dbline 923
; 
;     OSTCBHighRdy  = (OS_TCB *)0;
	clr R3
	sts _OSTCBHighRdy+1,R3
	sts _OSTCBHighRdy,R2
	.dbline 924
;     OSTCBCur      = (OS_TCB *)0;
	sts _OSTCBCur+1,R3
	sts _OSTCBCur,R2
	.dbline -2
L82:
	.dbline 0 ; func end
	ret
	.dbsym r prdytbl 16 pc
	.dbsym r i 18 c
	.dbend
	.dbfunc s OS_InitTaskIdle _OS_InitTaskIdle fV
	.even
_OS_InitTaskIdle:
	sbiw R28,3
	.dbline -1
	.dbline 942
; }
; 
; /*$PAGE*/
; /*
; *********************************************************************************************************
; *                                             INITIALIZATION
; *                                         CREATING THE IDLE TASK
; *
; * Description: This function creates the Idle Task.
; *
; * Arguments  : none
; *
; * Returns    : none
; *********************************************************************************************************
; */
; 
; static  void  OS_InitTaskIdle (void)
; {
	.dbline 972
; #if OS_TASK_NAME_SIZE > 14
;     INT8U  err;
; #endif
; 
; 
; #if OS_TASK_CREATE_EXT_EN > 0
;     #if OS_STK_GROWTH == 1
;     (void)OSTaskCreateExt(OS_TaskIdle,
;                           (void *)0,                                 /* No arguments passed to OS_TaskIdle() */
;                           &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1], /* Set Top-Of-Stack                     */
;                           OS_IDLE_PRIO,                              /* Lowest priority level                */
;                           OS_TASK_IDLE_ID,
;                           &OSTaskIdleStk[0],                         /* Set Bottom-Of-Stack                  */
;                           OS_TASK_IDLE_STK_SIZE,
;                           (void *)0,                                 /* No TCB extension                     */
;                           OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/* Enable stack checking + clear stack  */
;     #else
;     (void)OSTaskCreateExt(OS_TaskIdle,
;                           (void *)0,                                 /* No arguments passed to OS_TaskIdle() */
;                           &OSTaskIdleStk[0],                         /* Set Top-Of-Stack                     */
;                           OS_IDLE_PRIO,                              /* Lowest priority level                */
;                           OS_TASK_IDLE_ID,
;                           &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1], /* Set Bottom-Of-Stack                  */
;                           OS_TASK_IDLE_STK_SIZE,
;                           (void *)0,                                 /* No TCB extension                     */
;                           OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/* Enable stack checking + clear stack  */
;     #endif
; #else
;     #if OS_STK_GROWTH == 1
;     (void)OSTaskCreate(OS_TaskIdle,
	ldi R24,8
	std y+2,R24
	ldi R24,<_OSTaskIdleStk+255
	ldi R25,>_OSTaskIdleStk+255
	std y+1,R25
	std y+0,R24
	clr R18
	clr R19
	ldi R16,<PL_OS_TaskIdle
	ldi R17,>PL_OS_TaskIdle
	xcall _OSTaskCreate
	.dbline -2
L87:
	adiw R28,3
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc s OS_InitTCBList _OS_InitTCBList fV
;          ptcb2 -> R20,R21
;              i -> R22
;          ptcb1 -> R10,R11
	.even
_OS_InitTCBList:
	xcall push_gset3
	.dbline -1
	.dbline 1066
;                        (void *)0,
;                        &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1],
;                        OS_IDLE_PRIO);
;     #else
;     (void)OSTaskCreate(OS_TaskIdle,
;                        (void *)0,
;                        &OSTaskIdleStk[0],
;                        OS_IDLE_PRIO);
;     #endif
; #endif
; 
; #if OS_TASK_NAME_SIZE > 14
;     OSTaskNameSet(OS_IDLE_PRIO, (INT8U *)"uC/OS-II Idle", &err);
; #endif
; }
; /*$PAGE*/
; /*
; *********************************************************************************************************
; *                                             INITIALIZATION
; *                                      CREATING THE STATISTIC TASK
; *
; * Description: This function creates the Statistic Task.
; *
; * Arguments  : none
; *
; * Returns    : none
; *********************************************************************************************************
; */
; 
; #if OS_TASK_STAT_EN > 0
; static  void  OS_InitTaskStat (void)
; {
; #if OS_TASK_NAME_SIZE > 14
;     INT8U  err;
; #endif
; 
; 
; #if OS_TASK_CREATE_EXT_EN > 0
;     #if OS_STK_GROWTH == 1
;     (void)OSTaskCreateExt(OS_TaskStat,
;                           (void *)0,                                   /* No args passed to OS_TaskStat()*/
;                           &OSTaskStatStk[OS_TASK_STAT_STK_SIZE - 1],   /* Set Top-Of-Stack               */
;                           OS_STAT_PRIO,                                /* One higher than the idle task  */
;                           OS_TASK_STAT_ID,
;                           &OSTaskStatStk[0],                           /* Set Bottom-Of-Stack            */
;                           OS_TASK_STAT_STK_SIZE,
;                           (void *)0,                                   /* No TCB extension               */
;                           OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);  /* Enable stack checking + clear  */
;     #else
;     (void)OSTaskCreateExt(OS_TaskStat,
;                           (void *)0,                                   /* No args passed to OS_TaskStat()*/
;                           &OSTaskStatStk[0],                           /* Set Top-Of-Stack               */
;                           OS_STAT_PRIO,                                /* One higher than the idle task  */
;                           OS_TASK_STAT_ID,
;                           &OSTaskStatStk[OS_TASK_STAT_STK_SIZE - 1],   /* Set Bottom-Of-Stack            */
;                           OS_TASK_STAT_STK_SIZE,
;                           (void *)0,                                   /* No TCB extension               */
;                           OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);  /* Enable stack checking + clear  */
;     #endif
; #else
;     #if OS_STK_GROWTH == 1
;     (void)OSTaskCreate(OS_TaskStat,
;                        (void *)0,                                      /* No args passed to OS_TaskStat()*/
;                        &OSTaskStatStk[OS_TASK_STAT_STK_SIZE - 1],      /* Set Top-Of-Stack               */
;                        OS_STAT_PRIO);                                  /* One higher than the idle task  */
;     #else
;     (void)OSTaskCreate(OS_TaskStat,
;                        (void *)0,                                      /* No args passed to OS_TaskStat()*/
;                        &OSTaskStatStk[0],                   

⌨️ 快捷键说明

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