📄 os_core.lst
字号:
\ 02CC 1C425008 MOV &OSTCBCur,R12
\ 02D0 8C431200 MOV #0,18(R12)
542 }
\ 02D4 3041 RET
\ 02D6 OS_EventWaitListInit:
543 #endif
544 /*$PAGE*/
545 /*
546 *********************************************************************************************************
547 * INITIALIZE EVENT CONTROL BLOCK'S WAIT LIST
548 *
549 * Description: This function is called by other uC/OS-II services to initialize the event wait list.
550 *
551 * Arguments : pevent is a pointer to the event control block allocated to the event.
552 *
553 * Returns : none
554 *
555 * Note : This function is INTERNAL to uC/OS-II and your application should not call it.
556 *********************************************************************************************************
557 */
558 #if ((OS_Q_EN > 0) && (OS_MAX_QS > 0)) || (OS_MBOX_EN > 0) || (OS_SEM_EN > 0) || (OS_MUTEX_EN > 0)
559 void OS_EventWaitListInit (OS_EVENT *pevent)
560 {
561 INT8U *ptbl;
562
563
564 pevent->OSEventGrp = 0x00; /* No task waiting on event */
\ 02D6 CC430100 MOV.B #0,1(R12)
565 ptbl = &pevent->OSEventTbl[0];
\ 02DA 3C500600 ADD #6,R12
566
567 #if OS_EVENT_TBL_SIZE > 0
568 *ptbl++ = 0x00;
\ 02DE CC430000 MOV.B #0,0(R12)
\ 02E2 1C53 ADD #1,R12
569 #endif
570
571 #if OS_EVENT_TBL_SIZE > 1
572 *ptbl++ = 0x00;
\ 02E4 CC430000 MOV.B #0,0(R12)
573 #endif
574
575 #if OS_EVENT_TBL_SIZE > 2
576 *ptbl++ = 0x00;
577 #endif
578
579 #if OS_EVENT_TBL_SIZE > 3
580 *ptbl++ = 0x00;
581 #endif
582
583 #if OS_EVENT_TBL_SIZE > 4
584 *ptbl++ = 0x00;
585 #endif
586
587 #if OS_EVENT_TBL_SIZE > 5
588 *ptbl++ = 0x00;
589 #endif
590
591 #if OS_EVENT_TBL_SIZE > 6
592 *ptbl++ = 0x00;
593 #endif
594
595 #if OS_EVENT_TBL_SIZE > 7
596 *ptbl = 0x00;
597 #endif
598 }
\ 02E8 3041 RET
\ 02EA OS_InitEventList:
599 #endif
600 /*$PAGE*/
601 /*
602 *********************************************************************************************************
603 * INITIALIZATION
604 * INITIALIZE THE FREE LIST OF EVENT CONTROL BLOCKS
605 *
606 * Description: This function is called by OSInit() to initialize the free list of event control blocks.
607 *
608 * Arguments : none
609 *
610 * Returns : none
611 *********************************************************************************************************
612 */
613
614 static void OS_InitEventList (void)
615 {
616 #if (OS_EVENT_EN > 0) && (OS_MAX_EVENTS > 0)
617 #if (OS_MAX_EVENTS > 1)
618 INT16U i;
619 OS_EVENT *pevent1;
620 OS_EVENT *pevent2;
621
622
623 pevent1 = &OSEventTbl[0];
\ 02EA 3E400600 MOV #OSEventTbl,R14
624 pevent2 = &OSEventTbl[1];
\ 02EE 3D400000 MOV #(OSEventTbl+8),R13
625 for (i = 0; i < (OS_MAX_EVENTS - 1); i++) { /* Init. list of free EVENT control blocks */
\ 02F2 0C43 MOV #0,R12
\ 02F4 ?0139:
\ 02F4 1C93 CMP #1,R12
\ 02F6 CE430000 MOV.B #0,0(R14)
\ 02FA 062C JC (?0138)
626 pevent1->OSEventType = OS_EVENT_TYPE_UNUSED;
627 pevent1->OSEventPtr = pevent2;
\ 02FC 8E4D0400 MOV R13,4(R14)
628 pevent1++;
\ 0300 3E52 ADD #8,R14
629 pevent2++;
\ 0302 3D52 ADD #8,R13
\ 0304 1C53 ADD #1,R12
\ 0306 F63F JMP (?0139)
\ 0308 ?0138:
630 }
631 pevent1->OSEventType = OS_EVENT_TYPE_UNUSED;
632 pevent1->OSEventPtr = (OS_EVENT *)0;
\ 0308 8E430400 MOV #0,4(R14)
633 OSEventFreeList = &OSEventTbl[0];
\ 030C B2400600 MOV #OSEventTbl,&OSEventFreeList
\ 0310 0400
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 }
\ 0312 3041 RET
\ 0314 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 */
\ 0314 8243B60A MOV #0,&OSTime
\ 0318 8243B80A MOV #0,&(OSTime+2)
659 #endif
660
661 OSIntNesting = 0; /* Clear the interrupt nesting counter */
\ 031C C2434204 MOV.B #0,&OSIntNesting
662 OSLockNesting = 0; /* Clear the scheduling lock counter */
\ 0320 C2434404 MOV.B #0,&OSLockNesting
663
664 OSTaskCtr = 0; /* Clear the number of tasks */
\ 0324 C2434B04 MOV.B #0,&OSTaskCtr
665
666 OSRunning = FALSE; /* Indicate that multitasking not started */
\ 0328 C2434A04 MOV.B #0,&OSRunning
667
668 OSCtxSwCtr = 0; /* Clear the context switch counter */
\ 032C 82430000 MOV #0,&OSCtxSwCtr
\ 0330 82430200 MOV #0,&(OSCtxSwCtr+2)
669 OSIdleCtr = 0L; /* Clear the 32-bit idle counter */
\ 0334 82434C04 MOV #0,&OSIdleCtr
\ 0338 82434E04 MOV #0,&(OSIdleCtr+2)
670
671 #if (OS_TASK_STAT_EN > 0) && (OS_TASK_CREATE_EXT_EN > 0)
672 OSIdleCtrRun = 0L;
\ 033C 82433C00 MOV #0,&OSIdleCtrRun
\ 0340 82433E00 MOV #0,&(OSIdleCtrRun+2)
673 OSIdleCtrMax = 0L;
\ 0344 82433800 MOV #0,&OSIdleCtrMax
\ 0348 82433A00 MOV #0,&(OSIdleCtrMax+2)
674 OSStatRdy = FALSE; /* Statistic task is not ready */
\ 034C C2434000 MOV.B #0,&OSStatRdy
675 #endif
676 }
\ 0350 3041 RET
\ 0352 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 */
\ 0352 C2434704 MOV.B #0,&OSRdyGrp
698 prdytbl = &OSRdyTbl[0];
\ 0356 3D404804 MOV #OSRdyTbl,R13
699 for (i = 0; i < OS_RDY_TBL_SIZE; i++) {
\ 035A 0C43 MOV #0,R12
\ 035C ?0145:
\ 035C 2C93 CMP #2,R12
\ 035E 052C JC (?0144)
700 *prdytbl++ = 0x00;
\ 0360 CD430000 MOV.B #0,0(R13)
\ 0364 1D53 ADD #1,R13
\ 0366 1C53 ADD #1,R12
\ 0368 F93F JMP (?0145)
\ 036A ?0144:
701 }
702
703 OSPrioCur = 0;
\ 036A C2434504 MOV.B #0,&OSPrioCur
704 OSPrioHighRdy = 0;
\ 036E C2434604 MOV.B #0,&OSPrioHighRdy
705
706 OSTCBHighRdy = (OS_TCB *)0;
\ 0372 82435408 MOV #0,&OSTCBHighRdy
707 OSTCBCur = (OS_TCB *)0;
\ 0376 82435008 MOV #0,&OSTCBCur
708 }
\ 037A 3041
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -