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

📄 os_core.lst

📁 AVR平台下的ucos版本
💻 LST
📖 第 1 页 / 共 5 页
字号:
 132:os/source/os_core.c ****     pevent1 = &OSEventTbl[0];
 133:os/source/os_core.c ****     pevent2 = &OSEventTbl[1];
 525               	.LM26:
 526 00b6 80E0      		ldi r24,lo8(OSEventTbl+8)
 527 00b8 90E0      		ldi r25,hi8(OSEventTbl+8)
 134:os/source/os_core.c ****     for (i = 0; i < (OS_MAX_EVENTS - 1); i++) {                  /* Init. list of free EVENT contro
 135:os/source/os_core.c ****         pevent1->OSEventType = OS_EVENT_TYPE_UNUSED;
 529               	.LM27:
 530 00ba 1092 0000 		sts OSEventTbl,__zero_reg__
 136:os/source/os_core.c ****         pevent1->OSEventPtr  = pevent2;
 532               	.LM28:
 533 00be 9093 0000 		sts (OSEventTbl+4)+1,r25
 534 00c2 8093 0000 		sts OSEventTbl+4,r24
 535 00c6 0896      		adiw r24,8
 537               	.LM29:
 538 00c8 1092 0000 		sts OSEventTbl+8,__zero_reg__
 540               	.LM30:
 541 00cc 9093 0000 		sts (OSEventTbl+12)+1,r25
 542 00d0 8093 0000 		sts OSEventTbl+12,r24
 543 00d4 4097      		sbiw r24,16
 137:os/source/os_core.c ****         pevent1++;
 138:os/source/os_core.c ****         pevent2++;
 139:os/source/os_core.c ****     }
 140:os/source/os_core.c ****     pevent1->OSEventType = OS_EVENT_TYPE_UNUSED;
 545               	.LM31:
 546 00d6 1092 0000 		sts OSEventTbl+16,__zero_reg__
 141:os/source/os_core.c ****     pevent1->OSEventPtr  = (OS_EVENT *)0;
 548               	.LM32:
 549 00da 1092 0000 		sts (OSEventTbl+20)+1,__zero_reg__
 550 00de 1092 0000 		sts OSEventTbl+20,__zero_reg__
 142:os/source/os_core.c ****     OSEventFreeList      = &OSEventTbl[0];
 552               	.LM33:
 553 00e2 9093 0000 		sts (OSEventFreeList)+1,r25
 554 00e6 8093 0000 		sts OSEventFreeList,r24
 143:os/source/os_core.c ****     #endif
 144:os/source/os_core.c **** #endif
 145:os/source/os_core.c **** 
 146:os/source/os_core.c **** #if (OS_VERSION >= 251) && (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0)
 147:os/source/os_core.c ****     OS_FlagInit();                                               /* Initialize the event flag struc
 148:os/source/os_core.c **** #endif
 149:os/source/os_core.c **** 
 150:os/source/os_core.c **** #if (OS_Q_EN > 0) && (OS_MAX_QS > 0)
 151:os/source/os_core.c ****     OS_QInit();                                                  /* Initialize the message queue st
 556               	.LM34:
 557 00ea 0E94 0000 		call OS_QInit
 152:os/source/os_core.c **** #endif
 153:os/source/os_core.c **** 
 154:os/source/os_core.c **** #if (OS_MEM_EN > 0) && (OS_MAX_MEM_PART > 0)
 155:os/source/os_core.c ****     OS_MemInit();                                                /* Initialize the memory manager  
 156:os/source/os_core.c **** #endif
 157:os/source/os_core.c **** 
 158:os/source/os_core.c ****     /* ------------------------------------- CREATION OF 'IDLE' TASK ------------------------------
 159:os/source/os_core.c **** #if OS_TASK_CREATE_EXT_EN > 0
 160:os/source/os_core.c ****     #if OS_STK_GROWTH == 1
 161:os/source/os_core.c ****     (void)OSTaskCreateExt(OS_TaskIdle,
 559               	.LM35:
 560 00ee 83E0      		ldi r24,lo8(3)
 561 00f0 90E0      		ldi r25,hi8(3)
 562 00f2 9F93      		push r25
 563 00f4 8F93      		push r24
 564 00f6 8824      		clr r8
 565 00f8 9924      		clr r9
 566 00fa 9EE1      		ldi r25,lo8(30)
 567 00fc A92E      		mov r10,r25
 568 00fe B12C      		mov r11,__zero_reg__
 569 0100 C12C      		mov r12,__zero_reg__
 570 0102 D12C      		mov r13,__zero_reg__
 571 0104 80E0      		ldi r24,lo8(OSTaskIdleStk)
 572 0106 E82E      		mov r14,r24
 573 0108 80E0      		ldi r24,hi8(OSTaskIdleStk)
 574 010a F82E      		mov r15,r24
 575 010c 0FEF      		ldi r16,lo8(-1)
 576 010e 1FEF      		ldi r17,hi8(-1)
 577 0110 2AE0      		ldi r18,lo8(10)
 578 0112 40E0      		ldi r20,lo8(OSTaskIdleStk+29)
 579 0114 50E0      		ldi r21,hi8(OSTaskIdleStk+29)
 580 0116 B401      		movw r22,r8
 581 0118 80E0      		ldi r24,lo8(pm(OS_TaskIdle))
 582 011a 90E0      		ldi r25,hi8(pm(OS_TaskIdle))
 583 011c 0E94 0000 		call OSTaskCreateExt
 162:os/source/os_core.c ****                           (void *)0,                                 /* No arguments passed to OS_T
 163:os/source/os_core.c ****                           &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1], /* Set Top-Of-Stack           
 164:os/source/os_core.c ****                           OS_IDLE_PRIO,                              /* Lowest priority level      
 165:os/source/os_core.c ****                           OS_TASK_IDLE_ID,
 166:os/source/os_core.c ****                           &OSTaskIdleStk[0],                         /* Set Bottom-Of-Stack        
 167:os/source/os_core.c ****                           OS_TASK_IDLE_STK_SIZE,
 168:os/source/os_core.c ****                           (void *)0,                                 /* No TCB extension           
 169:os/source/os_core.c ****                           OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/* Enable stack checking + cle
 170:os/source/os_core.c ****     #else
 171:os/source/os_core.c ****     (void)OSTaskCreateExt(OS_TaskIdle,
 172:os/source/os_core.c ****                           (void *)0,                                 /* No arguments passed to OS_T
 173:os/source/os_core.c ****                           &OSTaskIdleStk[0],                         /* Set Top-Of-Stack           
 174:os/source/os_core.c ****                           OS_IDLE_PRIO,                              /* Lowest priority level      
 175:os/source/os_core.c ****                           OS_TASK_IDLE_ID,
 176:os/source/os_core.c ****                           &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1], /* Set Bottom-Of-Stack        
 177:os/source/os_core.c ****                           OS_TASK_IDLE_STK_SIZE,
 178:os/source/os_core.c ****                           (void *)0,                                 /* No TCB extension           
 179:os/source/os_core.c ****                           OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/* Enable stack checking + cle
 180:os/source/os_core.c ****     #endif
 181:os/source/os_core.c **** #else
 182:os/source/os_core.c ****     #if OS_STK_GROWTH == 1
 183:os/source/os_core.c ****     (void)OSTaskCreate(OS_TaskIdle,
 184:os/source/os_core.c ****                        (void *)0,
 185:os/source/os_core.c ****                        &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1],
 186:os/source/os_core.c ****                        OS_IDLE_PRIO);
 187:os/source/os_core.c ****     #else
 188:os/source/os_core.c ****     (void)OSTaskCreate(OS_TaskIdle,
 189:os/source/os_core.c ****                        (void *)0,
 190:os/source/os_core.c ****                        &OSTaskIdleStk[0],
 191:os/source/os_core.c ****                        OS_IDLE_PRIO);
 192:os/source/os_core.c ****     #endif
 193:os/source/os_core.c **** #endif
 194:os/source/os_core.c **** 
 195:os/source/os_core.c ****     /* ------------------------------- CREATION OF 'STATISTIC' TASK -------------------------------
 196:os/source/os_core.c **** #if OS_TASK_STAT_EN > 0
 197:os/source/os_core.c ****     #if OS_TASK_CREATE_EXT_EN > 0
 198:os/source/os_core.c ****         #if OS_STK_GROWTH == 1
 199:os/source/os_core.c ****         (void)OSTaskCreateExt(OS_TaskStat,
 200:os/source/os_core.c ****                               (void *)0,                                   /* No args passed to OS_
 201:os/source/os_core.c ****                               &OSTaskStatStk[OS_TASK_STAT_STK_SIZE - 1],   /* Set Top-Of-Stack     
 202:os/source/os_core.c ****                               OS_STAT_PRIO,                                /* One higher than the i
 203:os/source/os_core.c ****                               OS_TASK_STAT_ID,
 204:os/source/os_core.c ****                               &OSTaskStatStk[0],                           /* Set Bottom-Of-Stack  
 205:os/source/os_core.c ****                               OS_TASK_STAT_STK_SIZE,
 206:os/source/os_core.c ****                               (void *)0,                                   /* No TCB extension     
 207:os/source/os_core.c ****                               OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);  /* Enable stack checking
 208:os/source/os_core.c ****         #else
 209:os/source/os_core.c ****         (void)OSTaskCreateExt(OS_TaskStat,
 210:os/source/os_core.c ****                               (void *)0,                                   /* No args passed to OS_
 211:os/source/os_core.c ****                               &OSTaskStatStk[0],                           /* Set Top-Of-Stack     
 212:os/source/os_core.c ****                               OS_STAT_PRIO,                                /* One higher than the i
 213:os/source/os_core.c ****                               OS_TASK_STAT_ID,
 214:os/source/os_core.c ****                               &OSTaskStatStk[OS_TASK_STAT_STK_SIZE - 1],   /* Set Bottom-Of-Stack  
 215:os/source/os_core.c ****                               OS_TASK_STAT_STK_SIZE,
 216:os/source/os_core.c ****                               (void *)0,                                   /* No TCB extension     
 217:os/source/os_core.c ****                               OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);  /* Enable stack checking
 218:os/source/os_core.c ****         #endif
 219:os/source/os_core.c ****     #else
 220:os/source/os_core.c ****         #if OS_STK_GROWTH == 1
 221:os/source/os_core.c ****         (void)OSTaskCreate(OS_TaskStat,
 222:os/source/os_core.c ****                            (void *)0,                                      /* No args passed to OS_
 223:os/source/os_core.c ****                            &OSTaskStatStk[OS_TASK_STAT_STK_SIZE - 1],      /* Set Top-Of-Stack     
 224:os/source/os_core.c ****                            OS_STAT_PRIO);                                  /* One higher than the i
 225:os/source/os_core.c ****         #else
 226:os/source/os_core.c ****         (void)OSTaskCreate(OS_TaskStat,
 227:os/source/os_core.c ****                            (void *)0,                                      /* No args passed to OS_
 228:os/source/os_core.c ****                            &OSTaskStatStk[0],                              /* Set Top-Of-Stack     
 229:os/source/os_core.c ****                            OS_STAT_PRIO);                                  /* One higher than the i
 230:os/source/os_core.c ****         #endif
 231:os/source/os_core.c ****     #endif
 232:os/source/os_core.c **** #endif
 233:os/source/os_core.c **** 
 234:os/source/os_core.c **** #if OS_VERSION >= 204
 235:os/source/os_core.c ****     OSInitHookEnd();                                                       /* Call port specific in
 585               	.LM36:
 586 0120 0E94 0000 		call OSInitHookEnd
 587 0124 0F90      		pop __tmp_reg__
 588 0126 0F90      		pop __tmp_reg__
 589               	/* epilogue: frame size=0 */
 590 0128 1F91      		pop r17
 591 012a 0F91      		pop r16
 592 012c FF90      		pop r15
 593 012e EF90      		pop r14
 594 0130 DF90      		pop r13
 595 0132 CF90      		pop r12
 596 0134 BF90      		pop r11
 597 0136 AF90      		pop r10
 598 0138 9F90      		pop r9
 599 013a 8F90      		pop r8
 600 013c 0895      		ret
 601               	/* epilogue end (size=11) */
 602               	/* function OSInit size 159 (138) */
 609               	.Lscope0:
 611               	.global	OSIntEnter
 613               	OSIntEnter:
 236:os/source/os_core.c **** #endif
 237:os/source/os_core.c **** }
 238:os/source/os_core.c **** /*$PAGE*/
 239:os/source/os_core.c **** /*
 240:os/source/os_core.c **** ***************************************************************************************************
 241:os/source/os_core.c **** *                                              ENTER ISR
 242:os/source/os_core.c **** *
 243:os/source/os_core.c **** * Description: This function is used to notify uC/OS-II that you are about to service an interrupt
 244:os/source/os_core.c **** *              service routine (ISR).  This allows uC/OS-II to keep track of interrupt nesting and 
 245:os/source/os_core.c **** *              only perform rescheduling at the last nested ISR.
 246:os/source/os_core.c **** *
 247:os/source/os_core.c **** * Arguments  : none
 248:os/source/os_core.c **** *
 249:os/source/os_core.c **** * Returns    : none
 250:os/source/os_core.c **** *
 251:os/source/os_core.c **** * Notes      : 1) Your ISR can directly increment OSIntNesting without calling this function becaus
 252:os/source/os_core.c **** *                 OSIntNesting has been declared 'global'.  You MUST, however, be sure that the inc
 253:os/source/os_core.c **** *                 is performed 'indivisibly' by your processor to ensure proper access to this crit
 254:os/source/os_core.c **** *                 resource.
 255:os/source/os_core.c **** *              2) You MUST still call OSIntExit() even though you increment OSIntNesting directly.
 256:os/source/os_core.c **** *              3) You MUST invoke OSIntEnter() and OSIntExit() in pair.  In other words, for every 
 257:os/source/os_core.c **** *                 to OSIntEnter() at the beginning of the ISR you MUST have a call to OSIntExit() a
 258:os/source/os_core.c **** *                 end of the ISR.
 259:os/source/os_core.c **** ***************************************************************************************************
 260:os/source/os_core.c **** */
 261:os/source/os_core.c **** 
 262:os/source/os_core.c **** void  OSIntEnter (void)
 263:os/source/os_core.c **** {
 615               	.LM37:
 616               	/* prologue: frame size=0 */
 617               	/* prologue end (size=0) */
 264:os/source/os_core.c **** #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register       
 265:os/source/os_core.c ****     OS_CPU_SR  cpu_sr;
 266:os/source/os_core.c **** #endif    
 267:os/source/os_core.c ****     
 268:os/source/os_core.c ****     
 269:os/source/os_core.c ****     OS_ENTER_CRITICAL();
 619               	.LM38:
 620               	/* #APP */
 621 013e F894      		cli
 270:os/source/os_core.c ****     if (OSIntNesting < 255) {
 623               	.LM39:
 624               	/* #NOAPP */
 625 0140 8091 0000 		lds r24,OSIntNesting
 626 0144 8F3F      		cpi r24,lo8(-1)
 627 0146 19F0      		breq .L35
 271:os/source/os_core.c ****         OSIntNesting++;                          /* Increment ISR nesting level                    
 629               	.LM40:
 630 0148 8F5F      		subi r24,lo8(-(1))
 631 014a 8093 0000 		sts OSIntNesting,r24
 632               	.L35:
 272:os/source/os_core.c ****     }
 273:os/source/os_core.c ****     OS_EXIT_CRITICAL();
 634               	.LM41:
 635               	/* #APP */
 636 014e 7894      		sei
 637               	/* #NOAPP */
 638               	/* epilogue: frame size=0 */
 639 0150 0895      		ret
 640               	/* epilogue end (size=1) */
 641               	/* function OSIntEnter size 12 (11) */
 643               	.Lscope1:
 645               	.global	OSIntExit
 647               	OSIntExit:
 274:os/source/os_core.c **** }
 275:os/source/os_core.c **** /*$PAGE*/
 276:os/source/os_core.c **** /*
 277:os/source/os_core.c **** ***************************************************************************************************
 278:os/source/os_core.c **** *                                               EXIT ISR
 279:os/source/os_core.c **** *
 280:os/source/os_core.c **** * Description: This function is used to notify uC/OS-II that you have completed serviving an ISR.  
 281:os/source/os_core.c **** *              the last nested ISR has completed, uC/OS-II will call the scheduler to determine whe
 282:os/source/os_core.c **** *              a new, high-priority task, is ready to run.
 283:os/source/os_core.c **** *
 284:os/source/os_core.c **** * Arguments  : none
 285:os/source/os_core.c **** *
 286:os/source/os_core.c **** * Returns    : none
 287:os/source/os_core.c **** *

⌨️ 快捷键说明

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