📄 os_core.lst
字号:
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 + -