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

📄 os_core.lst

📁 AVR平台下的ucos版本
💻 LST
📖 第 1 页 / 共 5 页
字号:
 373 00ef 00        		.byte	0
 374 00f0 04        		.byte	4
 375 00f1 00        		.byte	0
 376 00f2 01        		.byte	1
 377 00f3 00        		.byte	0
 378 00f4 02        		.byte	2
 379 00f5 00        		.byte	0
 380 00f6 01        		.byte	1
 381 00f7 00        		.byte	0
 382 00f8 03        		.byte	3
 383 00f9 00        		.byte	0
 384 00fa 01        		.byte	1
 385 00fb 00        		.byte	0
 386 00fc 02        		.byte	2
 387 00fd 00        		.byte	0
 388 00fe 01        		.byte	1
 389 00ff 00        		.byte	0
 390               	.global	OSMapTbl
 393               	OSMapTbl:
 394 0100 01        		.byte	1
 395 0101 02        		.byte	2
 396 0102 04        		.byte	4
 397 0103 08        		.byte	8
 398 0104 10        		.byte	16
 399 0105 20        		.byte	32
 400 0106 40        		.byte	64
 401 0107 80        		.byte	-128
 402               		.text
 404               	.global	OSInit
 406               	OSInit:
   1:os/source/os_core.c **** /*
   2:os/source/os_core.c **** ***************************************************************************************************
   3:os/source/os_core.c **** *                                                uC/OS-II
   4:os/source/os_core.c **** *                                          The Real-Time Kernel
   5:os/source/os_core.c **** *                                             CORE FUNCTIONS
   6:os/source/os_core.c **** *
   7:os/source/os_core.c **** *                          (c) Copyright 1992-2001, Jean J. Labrosse, Weston, FL
   8:os/source/os_core.c **** *                                           All Rights Reserved
   9:os/source/os_core.c **** *
  10:os/source/os_core.c **** * File : OS_CORE.C
  11:os/source/os_core.c **** * By   : Jean J. Labrosse
  12:os/source/os_core.c **** ***************************************************************************************************
  13:os/source/os_core.c **** */
  14:os/source/os_core.c **** 
  15:os/source/os_core.c **** #ifndef  OS_MASTER_FILE
  16:os/source/os_core.c **** #define  OS_GLOBALS
  17:os/source/os_core.c **** #include <include.h>
  18:os/source/os_core.c **** #endif
  19:os/source/os_core.c **** 
  20:os/source/os_core.c **** /*
  21:os/source/os_core.c **** ***************************************************************************************************
  22:os/source/os_core.c **** *                              MAPPING TABLE TO MAP BIT POSITION TO BIT MASK
  23:os/source/os_core.c **** *
  24:os/source/os_core.c **** * Note: Index into table is desired bit position, 0..7
  25:os/source/os_core.c **** *       Indexed value corresponds to bit mask
  26:os/source/os_core.c **** ***************************************************************************************************
  27:os/source/os_core.c **** */
  28:os/source/os_core.c **** 
  29:os/source/os_core.c **** INT8U  const  OSMapTbl[]   = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
  30:os/source/os_core.c **** 
  31:os/source/os_core.c **** /*
  32:os/source/os_core.c **** ***************************************************************************************************
  33:os/source/os_core.c **** *                                       PRIORITY RESOLUTION TABLE
  34:os/source/os_core.c **** *
  35:os/source/os_core.c **** * Note: Index into table is bit pattern to resolve highest priority
  36:os/source/os_core.c **** *       Indexed value corresponds to highest priority bit position (i.e. 0..7)
  37:os/source/os_core.c **** ***************************************************************************************************
  38:os/source/os_core.c **** */
  39:os/source/os_core.c **** 
  40:os/source/os_core.c **** INT8U  const  OSUnMapTbl[] = {
  41:os/source/os_core.c ****     0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  42:os/source/os_core.c ****     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  43:os/source/os_core.c ****     5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  44:os/source/os_core.c ****     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  45:os/source/os_core.c ****     6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  46:os/source/os_core.c ****     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  47:os/source/os_core.c ****     5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  48:os/source/os_core.c ****     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  49:os/source/os_core.c ****     7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  50:os/source/os_core.c ****     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  51:os/source/os_core.c ****     5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  52:os/source/os_core.c ****     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  53:os/source/os_core.c ****     6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  54:os/source/os_core.c ****     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  55:os/source/os_core.c ****     5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  56:os/source/os_core.c ****     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0
  57:os/source/os_core.c **** };
  58:os/source/os_core.c **** /*$PAGE*/
  59:os/source/os_core.c **** /*
  60:os/source/os_core.c **** ***************************************************************************************************
  61:os/source/os_core.c **** *                                             INITIALIZATION
  62:os/source/os_core.c **** *
  63:os/source/os_core.c **** * Description: This function is used to initialize the internals of uC/OS-II and MUST be called pri
  64:os/source/os_core.c **** *              creating any uC/OS-II object and, prior to calling OSStart().
  65:os/source/os_core.c **** *
  66:os/source/os_core.c **** * Arguments  : none
  67:os/source/os_core.c **** *
  68:os/source/os_core.c **** * Returns    : none
  69:os/source/os_core.c **** ***************************************************************************************************
  70:os/source/os_core.c **** */
  71:os/source/os_core.c **** 
  72:os/source/os_core.c **** void  OSInit (void)
  73:os/source/os_core.c **** {
 408               	.LM1:
 409               	/* prologue: frame size=0 */
 410 0000 8F92      		push r8
 411 0002 9F92      		push r9
 412 0004 AF92      		push r10
 413 0006 BF92      		push r11
 414 0008 CF92      		push r12
 415 000a DF92      		push r13
 416 000c EF92      		push r14
 417 000e FF92      		push r15
 418 0010 0F93      		push r16
 419 0012 1F93      		push r17
 420               	/* prologue end (size=10) */
  74:os/source/os_core.c ****     INT16U     i;
  75:os/source/os_core.c ****     INT8U     *prdytbl;
  76:os/source/os_core.c ****     OS_TCB    *ptcb1;
  77:os/source/os_core.c ****     OS_TCB    *ptcb2;
  78:os/source/os_core.c **** #if (OS_EVENT_EN > 0) && (OS_MAX_EVENTS > 1)
  79:os/source/os_core.c ****     OS_EVENT  *pevent1;
  80:os/source/os_core.c ****     OS_EVENT  *pevent2;
  81:os/source/os_core.c **** #endif
  82:os/source/os_core.c **** 
  83:os/source/os_core.c **** 
  84:os/source/os_core.c **** #if OS_VERSION >= 204
  85:os/source/os_core.c ****     OSInitHookBegin();                                           /* Call port specific initializati
 422               	.LM2:
 423 0014 0E94 0000 		call OSInitHookBegin
  86:os/source/os_core.c **** #endif
  87:os/source/os_core.c **** 
  88:os/source/os_core.c **** #if OS_TIME_GET_SET_EN > 0   
  89:os/source/os_core.c ****     OSTime        = 0L;                                          /* Clear the 32-bit system clock  
  90:os/source/os_core.c **** #endif
  91:os/source/os_core.c ****     OSIntNesting  = 0;                                           /* Clear the interrupt nesting cou
 425               	.LM3:
 426 0018 1092 0000 		sts OSIntNesting,__zero_reg__
  92:os/source/os_core.c ****     OSLockNesting = 0;                                           /* Clear the scheduling lock count
 428               	.LM4:
 429 001c 1092 0000 		sts OSLockNesting,__zero_reg__
  93:os/source/os_core.c ****     OSTaskCtr     = 0;                                           /* Clear the number of tasks      
 431               	.LM5:
 432 0020 1092 0000 		sts OSTaskCtr,__zero_reg__
  94:os/source/os_core.c ****     OSRunning     = FALSE;                                       /* Indicate that multitasking not 
 434               	.LM6:
 435 0024 1092 0000 		sts OSRunning,__zero_reg__
  95:os/source/os_core.c ****     OSIdleCtr     = 0L;                                          /* Clear the 32-bit idle counter  
 437               	.LM7:
 438 0028 1092 0000 		sts OSIdleCtr,__zero_reg__
 439 002c 1092 0000 		sts (OSIdleCtr)+1,__zero_reg__
 440 0030 1092 0000 		sts (OSIdleCtr)+2,__zero_reg__
 441 0034 1092 0000 		sts (OSIdleCtr)+3,__zero_reg__
  96:os/source/os_core.c **** #if (OS_TASK_STAT_EN > 0) && (OS_TASK_CREATE_EXT_EN > 0)
  97:os/source/os_core.c ****     OSIdleCtrRun  = 0L;
  98:os/source/os_core.c ****     OSIdleCtrMax  = 0L;
  99:os/source/os_core.c ****     OSStatRdy     = FALSE;                                       /* Statistic task is not ready    
 100:os/source/os_core.c **** #endif
 101:os/source/os_core.c ****     OSCtxSwCtr    = 0;                                           /* Clear the context switch counte
 443               	.LM8:
 444 0038 1092 0000 		sts OSCtxSwCtr,__zero_reg__
 445 003c 1092 0000 		sts (OSCtxSwCtr)+1,__zero_reg__
 446 0040 1092 0000 		sts (OSCtxSwCtr)+2,__zero_reg__
 447 0044 1092 0000 		sts (OSCtxSwCtr)+3,__zero_reg__
 102:os/source/os_core.c ****     OSRdyGrp      = 0x00;                                        /* Clear the ready list           
 449               	.LM9:
 450 0048 1092 0000 		sts OSRdyGrp,__zero_reg__
 103:os/source/os_core.c ****     prdytbl       = &OSRdyTbl[0];
 104:os/source/os_core.c ****     for (i = 0; i < OS_RDY_TBL_SIZE; i++) {
 105:os/source/os_core.c ****         *prdytbl++ = 0x00;
 452               	.LM10:
 453 004c 1092 0000 		sts OSRdyTbl,__zero_reg__
 454 0050 1092 0000 		sts OSRdyTbl+1,__zero_reg__
 106:os/source/os_core.c ****     }
 107:os/source/os_core.c **** 
 108:os/source/os_core.c ****     OSPrioCur     = 0;
 456               	.LM11:
 457 0054 1092 0000 		sts OSPrioCur,__zero_reg__
 109:os/source/os_core.c ****     OSPrioHighRdy = 0;
 459               	.LM12:
 460 0058 1092 0000 		sts OSPrioHighRdy,__zero_reg__
 110:os/source/os_core.c ****     OSTCBHighRdy  = (OS_TCB *)0;                                 /* TCB Initialization             
 462               	.LM13:
 463 005c 1092 0000 		sts (OSTCBHighRdy)+1,__zero_reg__
 464 0060 1092 0000 		sts OSTCBHighRdy,__zero_reg__
 111:os/source/os_core.c ****     OSTCBCur      = (OS_TCB *)0;
 466               	.LM14:
 467 0064 1092 0000 		sts (OSTCBCur)+1,__zero_reg__
 468 0068 1092 0000 		sts OSTCBCur,__zero_reg__
 112:os/source/os_core.c ****     OSTCBList     = (OS_TCB *)0;
 470               	.LM15:
 471 006c 1092 0000 		sts (OSTCBList)+1,__zero_reg__
 472 0070 1092 0000 		sts OSTCBList,__zero_reg__
 473 0074 E0E0      		ldi r30,lo8(OSTCBPrioTbl)
 474 0076 F0E0      		ldi r31,hi8(OSTCBPrioTbl)
 475               	.L9:
 113:os/source/os_core.c ****     for (i = 0; i < (OS_LOWEST_PRIO + 1); i++) {                 /* Clear the priority table       
 114:os/source/os_core.c ****         OSTCBPrioTbl[i] = (OS_TCB *)0;
 477               	.LM16:
 478 0078 1192      		st Z+,__zero_reg__
 479 007a 1192      		st Z+,__zero_reg__
 481               	.LM17:
 482 007c 80E0      		ldi r24,hi8(OSTCBPrioTbl+20)
 483 007e E030      		cpi r30,lo8(OSTCBPrioTbl+20)
 484 0080 F807      		cpc r31,r24
 485 0082 D1F3      		breq .L9
 486 0084 C8F3      		brlo .L9
 115:os/source/os_core.c ****     }
 116:os/source/os_core.c ****     ptcb1 = &OSTCBTbl[0];
 488               	.LM18:
 489 0086 40E0      		ldi r20,lo8(OSTCBTbl)
 490 0088 50E0      		ldi r21,hi8(OSTCBTbl)
 491 008a FA01      		movw r30,r20
 117:os/source/os_core.c ****     ptcb2 = &OSTCBTbl[1];
 493               	.LM19:
 494 008c 9A01      		movw r18,r20
 495 008e 225E      		subi r18,lo8(-(30))
 496 0090 3F4F      		sbci r19,hi8(-(30))
 497 0092 84E0      		ldi r24,lo8(4)
 498 0094 90E0      		ldi r25,hi8(4)
 499               	.L13:
 118:os/source/os_core.c ****     for (i = 0; i < (OS_MAX_TASKS + OS_N_SYS_TASKS - 1); i++) {  /* Init. list of free TCBs        
 119:os/source/os_core.c ****         ptcb1->OSTCBNext = ptcb2;
 501               	.LM20:
 502 0096 3787      		std Z+15,r19
 503 0098 2687      		std Z+14,r18
 120:os/source/os_core.c ****         ptcb1++;
 505               	.LM21:
 506 009a 7E96      		adiw r30,30
 121:os/source/os_core.c ****         ptcb2++;
 508               	.LM22:
 509 009c 225E      		subi r18,lo8(-(30))
 510 009e 3F4F      		sbci r19,hi8(-(30))
 512               	.LM23:
 513 00a0 0197      		sbiw r24,1
 514 00a2 97FF      		sbrs r25,7
 515 00a4 F8CF      		rjmp .L13
 122:os/source/os_core.c ****     }
 123:os/source/os_core.c ****     ptcb1->OSTCBNext = (OS_TCB *)0;                              /* Last OS_TCB                    
 517               	.LM24:
 518 00a6 1092 0000 		sts (OSTCBTbl+164)+1,__zero_reg__
 519 00aa 1092 0000 		sts OSTCBTbl+164,__zero_reg__
 124:os/source/os_core.c ****     OSTCBFreeList    = &OSTCBTbl[0];
 521               	.LM25:
 522 00ae 5093 0000 		sts (OSTCBFreeList)+1,r21
 523 00b2 4093 0000 		sts OSTCBFreeList,r20
 125:os/source/os_core.c **** 
 126:os/source/os_core.c **** #if (OS_EVENT_EN > 0) && (OS_MAX_EVENTS > 0)
 127:os/source/os_core.c ****     #if OS_MAX_EVENTS == 1                                       
 128:os/source/os_core.c ****     OSEventFreeList              = &OSEventTbl[0];               /* Only have ONE event control blo
 129:os/source/os_core.c ****     OSEventFreeList->OSEventType = OS_EVENT_TYPE_UNUSED;
 130:os/source/os_core.c ****     OSEventFreeList->OSEventPtr  = (OS_EVENT *)0;
 131:os/source/os_core.c ****     #else

⌨️ 快捷键说明

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