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

📄 os_core.lst

📁 AVR平台下的ucos版本
💻 LST
📖 第 1 页 / 共 5 页
字号:
 787 0228 3A95      		dec r19
 788 022a E1F7      		brne 1b
 789 022c 280F      		add r18,r24
 790 022e 2093 0000 		sts OSPrioHighRdy,r18
 422:os/source/os_core.c ****         OSPrioCur     = OSPrioHighRdy;
 792               	.LM59:
 793 0232 2093 0000 		sts OSPrioCur,r18
 423:os/source/os_core.c ****         OSTCBHighRdy  = OSTCBPrioTbl[OSPrioHighRdy]; /* Point to highest priority task ready to run
 795               	.LM60:
 796 0236 E22F      		mov r30,r18
 797 0238 FF27      		clr r31
 798 023a EE0F      		add r30,r30
 799 023c FF1F      		adc r31,r31
 800 023e E050      		subi r30,lo8(-(OSTCBPrioTbl))
 801 0240 F040      		sbci r31,hi8(-(OSTCBPrioTbl))
 802 0242 8081      		ld r24,Z
 803 0244 9181      		ldd r25,Z+1
 804 0246 9093 0000 		sts (OSTCBHighRdy)+1,r25
 805 024a 8093 0000 		sts OSTCBHighRdy,r24
 424:os/source/os_core.c ****         OSTCBCur      = OSTCBHighRdy;
 807               	.LM61:
 808 024e 9093 0000 		sts (OSTCBCur)+1,r25
 809 0252 8093 0000 		sts OSTCBCur,r24
 425:os/source/os_core.c ****         OSStartHighRdy();                            /* Execute target specific code to start task 
 811               	.LM62:
 812 0256 0E94 0000 		call OSStartHighRdy
 813               	.L40:
 814 025a 0895      		ret
 815               	/* epilogue: frame size=0 */
 816               	/* epilogue: noreturn */
 817               	/* epilogue end (size=0) */
 818               	/* function OSStart size 50 (50) */
 823               	.Lscope3:
 825               	.global	OSTimeTick
 827               	OSTimeTick:
 426:os/source/os_core.c ****     }
 427:os/source/os_core.c **** }
 428:os/source/os_core.c **** /*$PAGE*/
 429:os/source/os_core.c **** /*
 430:os/source/os_core.c **** ***************************************************************************************************
 431:os/source/os_core.c **** *                                        STATISTICS INITIALIZATION
 432:os/source/os_core.c **** *
 433:os/source/os_core.c **** * Description: This function is called by your application to establish CPU usage by first determin
 434:os/source/os_core.c **** *              how high a 32-bit counter would count to in 1 second if no other tasks were to execu
 435:os/source/os_core.c **** *              during that time.  CPU usage is then determined by a low priority task which keeps t
 436:os/source/os_core.c **** *              of this 32-bit counter every second but this time, with other tasks running.  CPU us
 437:os/source/os_core.c **** *              determined by:
 438:os/source/os_core.c **** *
 439:os/source/os_core.c **** *                                             OSIdleCtr
 440:os/source/os_core.c **** *                 CPU Usage (%) = 100 * (1 - ------------)
 441:os/source/os_core.c **** *                                            OSIdleCtrMax
 442:os/source/os_core.c **** *
 443:os/source/os_core.c **** * Arguments  : none
 444:os/source/os_core.c **** *
 445:os/source/os_core.c **** * Returns    : none
 446:os/source/os_core.c **** ***************************************************************************************************
 447:os/source/os_core.c **** */
 448:os/source/os_core.c **** 
 449:os/source/os_core.c **** #if OS_TASK_STAT_EN > 0
 450:os/source/os_core.c **** void  OSStatInit (void)
 451:os/source/os_core.c **** {
 452:os/source/os_core.c **** #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register       
 453:os/source/os_core.c ****     OS_CPU_SR  cpu_sr;
 454:os/source/os_core.c **** #endif    
 455:os/source/os_core.c ****     
 456:os/source/os_core.c ****     
 457:os/source/os_core.c ****     OSTimeDly(2);                                /* Synchronize with clock tick                    
 458:os/source/os_core.c ****     OS_ENTER_CRITICAL();
 459:os/source/os_core.c ****     OSIdleCtr    = 0L;                           /* Clear idle counter                             
 460:os/source/os_core.c ****     OS_EXIT_CRITICAL();
 461:os/source/os_core.c ****     OSTimeDly(OS_TICKS_PER_SEC);                 /* Determine MAX. idle counter value for 1 second 
 462:os/source/os_core.c ****     OS_ENTER_CRITICAL();
 463:os/source/os_core.c ****     OSIdleCtrMax = OSIdleCtr;                    /* Store maximum idle counter count in 1 second   
 464:os/source/os_core.c ****     OSStatRdy    = TRUE;
 465:os/source/os_core.c ****     OS_EXIT_CRITICAL();
 466:os/source/os_core.c **** }
 467:os/source/os_core.c **** #endif
 468:os/source/os_core.c **** /*$PAGE*/
 469:os/source/os_core.c **** /*
 470:os/source/os_core.c **** ***************************************************************************************************
 471:os/source/os_core.c **** *                                         PROCESS SYSTEM TICK
 472:os/source/os_core.c **** *
 473:os/source/os_core.c **** * Description: This function is used to signal to uC/OS-II the occurrence of a 'system tick' (also 
 474:os/source/os_core.c **** *              as a 'clock tick').  This function should be called by the ticker ISR but, can also 
 475:os/source/os_core.c **** *              called by a high priority task.
 476:os/source/os_core.c **** *
 477:os/source/os_core.c **** * Arguments  : none
 478:os/source/os_core.c **** *
 479:os/source/os_core.c **** * Returns    : none
 480:os/source/os_core.c **** ***************************************************************************************************
 481:os/source/os_core.c **** */
 482:os/source/os_core.c **** 
 483:os/source/os_core.c **** void  OSTimeTick (void)
 484:os/source/os_core.c **** {
 829               	.LM63:
 830               	/* prologue: frame size=0 */
 831 025c CF93      		push r28
 832 025e DF93      		push r29
 833               	/* prologue end (size=2) */
 485:os/source/os_core.c **** #if OS_CRITICAL_METHOD == 3                                /* Allocate storage for CPU status regis
 486:os/source/os_core.c ****     OS_CPU_SR  cpu_sr;
 487:os/source/os_core.c **** #endif    
 488:os/source/os_core.c ****     OS_TCB    *ptcb;
 489:os/source/os_core.c **** 
 490:os/source/os_core.c **** 
 491:os/source/os_core.c ****     OSTimeTickHook();                                      /* Call user definable hook             
 835               	.LM64:
 836 0260 0E94 0000 		call OSTimeTickHook
 492:os/source/os_core.c **** #if OS_TIME_GET_SET_EN > 0   
 493:os/source/os_core.c ****     OS_ENTER_CRITICAL();                                   /* Update the 32-bit tick counter       
 494:os/source/os_core.c ****     OSTime++;
 495:os/source/os_core.c ****     OS_EXIT_CRITICAL();
 496:os/source/os_core.c **** #endif    
 497:os/source/os_core.c ****     ptcb = OSTCBList;                                      /* Point at first TCB in TCB list       
 838               	.LM65:
 839 0264 A091 0000 		lds r26,OSTCBList
 840 0268 B091 0000 		lds r27,(OSTCBList)+1
 498:os/source/os_core.c ****     while (ptcb->OSTCBPrio != OS_IDLE_PRIO) {              /* Go through all TCBs in TCB list      
 499:os/source/os_core.c ****         OS_ENTER_CRITICAL();
 500:os/source/os_core.c ****         if (ptcb->OSTCBDly != 0) {                         /* Delayed or waiting for event with TO 
 501:os/source/os_core.c ****             if (--ptcb->OSTCBDly == 0) {                   /* Decrement nbr of ticks to end of dela
 502:os/source/os_core.c ****                 if ((ptcb->OSTCBStat & OS_STAT_SUSPEND) == 0x00) {   /* Is task suspended?         
 503:os/source/os_core.c ****                     OSRdyGrp               |= ptcb->OSTCBBitY; /* No,  Make task Rdy to Run (timed 
 504:os/source/os_core.c ****                     OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
 505:os/source/os_core.c ****                 } else {                                       /* Yes, Leave 1 tick to prevent ... 
 506:os/source/os_core.c ****                     ptcb->OSTCBDly = 1;                        /* ... loosing the task when the ...
 507:os/source/os_core.c ****                 }                                              /* ... suspension is removed.       
 508:os/source/os_core.c ****             }
 509:os/source/os_core.c ****         }
 510:os/source/os_core.c ****         ptcb = ptcb->OSTCBNext;                                /* Point at next TCB in TCB list    
 511:os/source/os_core.c ****         OS_EXIT_CRITICAL();
 842               	.LM66:
 843 026c ED01      		movw r28,r26
 844 026e 898D      		ldd r24,Y+25
 845 0270 8A30      		cpi r24,lo8(10)
 846 0272 61F1      		breq .L51
 847               	.L49:
 849               	.LM67:
 850               	/* #APP */
 851 0274 F894      		cli
 853               	.LM68:
 854               	/* #NOAPP */
 855 0276 FD01      		movw r30,r26
 856 0278 8689      		ldd r24,Z+22
 857 027a 9789      		ldd r25,Z+23
 858 027c 0097      		sbiw r24,0
 859 027e F1F0      		breq .L45
 861               	.LM69:
 862 0280 0197      		sbiw r24,1
 863 0282 978B      		std Z+23,r25
 864 0284 868B      		std Z+22,r24
 865 0286 892B      		or r24,r25
 866 0288 C9F4      		brne .L45
 868               	.LM70:
 869 028a 808D      		ldd r24,Z+24
 870 028c 83FD      		sbrc r24,3
 871 028e 11C0      		rjmp .L47
 873               	.LM71:
 874 0290 8091 0000 		lds r24,OSRdyGrp
 875 0294 958D      		ldd r25,Z+29
 876 0296 892B      		or r24,r25
 877 0298 8093 0000 		sts OSRdyGrp,r24
 879               	.LM72:
 880 029c 838D      		ldd r24,Z+27
 881 029e E82F      		mov r30,r24
 882 02a0 FF27      		clr r31
 883 02a2 E050      		subi r30,lo8(-(OSRdyTbl))
 884 02a4 F040      		sbci r31,hi8(-(OSRdyTbl))
 885 02a6 8081      		ld r24,Z
 886 02a8 ED01      		movw r28,r26
 887 02aa 9C8D      		ldd r25,Y+28
 888 02ac 892B      		or r24,r25
 889 02ae 8083      		st Z,r24
 890 02b0 05C0      		rjmp .L45
 891               	.L47:
 893               	.LM73:
 894 02b2 81E0      		ldi r24,lo8(1)
 895 02b4 90E0      		ldi r25,hi8(1)
 896 02b6 FD01      		movw r30,r26
 897 02b8 978B      		std Z+23,r25
 898 02ba 868B      		std Z+22,r24
 899               	.L45:
 901               	.LM74:
 902 02bc ED01      		movw r28,r26
 903 02be AE85      		ldd r26,Y+14
 904 02c0 BF85      		ldd r27,Y+15
 906               	.LM75:
 907               	/* #APP */
 908 02c2 7894      		sei
 909               	/* #NOAPP */
 910 02c4 FD01      		movw r30,r26
 911 02c6 818D      		ldd r24,Z+25
 912 02c8 8A30      		cpi r24,lo8(10)
 913 02ca A1F6      		brne .L49
 914               	.L51:
 915               	/* epilogue: frame size=0 */
 916 02cc DF91      		pop r29
 917 02ce CF91      		pop r28
 918 02d0 0895      		ret
 919               	/* epilogue end (size=3) */
 920               	/* function OSTimeTick size 61 (56) */
 925               	.Lscope4:
 927               	.global	OSVersion
 929               	OSVersion:
 512:os/source/os_core.c ****     }
 513:os/source/os_core.c **** }
 514:os/source/os_core.c **** /*$PAGE*/
 515:os/source/os_core.c **** /*
 516:os/source/os_core.c **** ***************************************************************************************************
 517:os/source/os_core.c **** *                                             GET VERSION
 518:os/source/os_core.c **** *
 519:os/source/os_core.c **** * Description: This function is used to return the version number of uC/OS-II.  The returned value
 520:os/source/os_core.c **** *              corresponds to uC/OS-II's version number multiplied by 100.  In other words, version
 521:os/source/os_core.c **** *              would be returned as 200.
 522:os/source/os_core.c **** *
 523:os/source/os_core.c **** * Arguments  : none
 524:os/source/os_core.c **** *
 525:os/source/os_core.c **** * Returns    : the version number of uC/OS-II multiplied by 100.
 526:os/source/os_core.c **** ***************************************************************************************************
 527:os/source/os_core.c **** */
 528:os/source/os_core.c **** 
 529:os/source/os_core.c **** INT16U  OSVersion (void)
 530:os/source/os_core.c **** {
 931               	.LM76:
 932               	/* prologue: frame size=0 */
 933               	/* prologue end (size=0) */
 531:os/source/os_core.c ****     return (OS_VERSION);
 532:os/source/os_core.c **** }
 935               	.LM77:
 936 02d2 8BEF      		ldi r24,lo8(251)
 937 02d4 90E0      		ldi r25,hi8(251)
 938               	/* epilogue: frame size=0 */
 939 02d6 0895      		ret
 940               	/* epilogue end (size=1) */
 941               	/* function OSVersion size 3 (2) */
 943               	.Lscope5:
 948               	.global	OS_EventTaskRdy
 950               	OS_EventTaskRdy:
 533:os/source/os_core.c **** 
 534:os/source/os_core.c **** /*$PAGE*/
 535:os/source/os_core.c **** /*
 536:os/source/os_core.c **** ***************************************************************************************************
 537:os/source/os_core.c **** *                                            DUMMY FUNCTION
 538:os/source/os_core.c **** *
 539:os/source/os_core.c **** * Description: This function doesn't do anything.  It is called by OSTaskDel().
 540:os/source/os_core.c **** *
 541:os/source/os_core.c **** * Arguments  : none
 542:os/source/os_core.c **** *
 543:os/source/os_core.c **** * Returns    : none
 544:os/source/os_core.c **** ******************************************************************

⌨️ 快捷键说明

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