📄 ucos.lst
字号:
__text_start:
__start:
00FC EFCF LDI R28,0xFF
00FD E1D0 LDI R29,0x10
00FE BFCD OUT 0x3D,R28
00FF BFDE OUT 0x3E,R29
0100 51C0 SUBI R28,0x10
0101 40D0 SBCI R29,0
0102 EA0A LDI R16,0xAA
0103 8308 STD Y+0,R16
0104 2400 CLR R0
0105 E0E0 LDI R30,0
0106 E0F1 LDI R31,1
0107 E014 LDI R17,4
0108 31E6 CPI R30,0x16
0109 07F1 CPC R31,R17
010A F011 BEQ 0x010D
010B 9201 ST R0,Z+
010C CFFB RJMP 0x0108
010D 8300 STD Z+0,R16
010E EFE8 LDI R30,0xF8
010F E0F1 LDI R31,1
0110 E0A0 LDI R26,0
0111 E0B1 LDI R27,1
0112 E011 LDI R17,1
0113 3FE8 CPI R30,0xF8
0114 07F1 CPC R31,R17
0115 F021 BEQ 0x011A
0116 95C8 LPM
0117 9631 ADIW R30,1
0118 920D ST R0,X+
0119 CFF9 RJMP 0x0113
011A 940E0900 CALL _main
_exit:
011C CFFF RJMP _exit
_TaskS:
011D 940E09D3 CALL push_gset1
011F 01A8 MOVW R20,R16
0120 9723 SBIW R28,3
0121 D05F RCALL _OSTickISR_Init
0122 D049 RCALL _io_init
0123 E081 LDI R24,1
0124 838A STD Y+2,R24
0125 EF8F LDI R24,0xFF
0126 E091 LDI R25,1
0127 8399 STD Y+1,R25
0128 8388 STD Y+0,R24
0129 2722 CLR R18
012A 2733 CLR R19
012B E80E LDI R16,0x8E
012C E010 LDI R17,0
012D 940E0525 CALL _OSTaskCreate
012F E082 LDI R24,2
0130 838A STD Y+2,R24
_AppTaskStart:
p_arg --> R20
0131 E78F LDI R24,0x7F
0132 E091 LDI R25,1
0133 8399 STD Y+1,R25
0134 8388 STD Y+0,R24
0135 2722 CLR R18
0136 2733 CLR R19
0137 E80C LDI R16,0x8C
0138 E010 LDI R17,0
0139 940E0525 CALL _OSTaskCreate
013B C00B RJMP 0x0147
013C E880 LDI R24,0x80
013D E090 LDI R25,0
013E B228 IN R2,0x18
013F 2433 CLR R3
0140 2628 EOR R2,R24
0141 2639 EOR R3,R25
_AppTaskCreate:
0142 BA28 OUT 0x18,R2
0143 E00A LDI R16,0xA
0144 E010 LDI R17,0
0145 940E059D CALL _OSTimeDly
0147 CFF4 RJMP 0x013C
0148 9623 ADIW R28,3
0149 940E09D6 CALL pop_gset1
014B 9508 RET
_Task1:
014C 940E09D3 CALL push_gset1
014E 01A8 MOVW R20,R16
014F C008 RJMP 0x0158
0150 E081 LDI R24,1
0151 B228 IN R2,0x18
0152 2628 EOR R2,R24
0153 BA28 OUT 0x18,R2
0154 E104 LDI R16,0x14
0155 E010 LDI R17,0
0156 940E059D CALL _OSTimeDly
0158 CFF7 RJMP 0x0150
0159 940E09D6 CALL pop_gset1
015B 9508 RET
_Task2:
015C 940E09D3 CALL push_gset1
015E 01A8 MOVW R20,R16
015F C008 RJMP 0x0168
0160 E082 LDI R24,2
0161 B228 IN R2,0x18
0162 2628 EOR R2,R24
0163 BA28 OUT 0x18,R2
0164 E10E LDI R16,0x1E
0165 E010 LDI R17,0
0166 940E059D CALL _OSTimeDly
0168 CFF7 RJMP 0x0160
0169 940E09D6 CALL pop_gset1
016B 9508 RET
_io_init:
016C 2422 CLR R2
016D BA2A OUT 0x1A,R2
016E EF8F LDI R24,0xFF
016F BB8B OUT 0x1B,R24
0170 BB87 OUT 0x17,R24
0171 BB88 OUT 0x18,R24
0172 BA24 OUT 0x14,R2
0173 BB85 OUT 0x15,R24
0174 BA21 OUT 0x11,R2
0175 BB82 OUT 0x12,R24
0176 B822 OUT 0x02,R2
0177 B983 OUT 0x03,R24
0178 92200061 STS 0x61,R2
017A 93800062 STS 0x62,R24
017C 92200064 STS 0x64,R2
017E 93800065 STS 0x65,R24
0180 9508 RET
_OSTickISR_Init:
_AppTask1:
p_arg --> R20
0181 E087 LDI R24,7
0182 BF83 OUT 0x33,R24
0183 E081 LDI R24,1
0184 BF87 OUT 0x37,R24
0185 9508 RET
_OSTickISR_Handler:
0186 ED8C LDI R24,0xDC
0187 BF82 OUT 0x32,R24
0188 940E02AD CALL _OSTimeTick
018A 9508 RET
_OSInit:
018B 940E0806 CALL _OSInitHookBegin
018D D17F RCALL 0x030D
018E D1A4 RCALL 0x0333
_AppTask2:
p_arg --> R20
018F D1CE RCALL 0x035E
0190 D17B RCALL 0x030C
0191 D1BE RCALL 0x0350
0192 940E0807 CALL _OSInitHookEnd
0194 D4E4 RCALL _OSDebugInit
0195 9508 RET
_OSIntEnter:
0196 91800406 LDS R24,OSRunning
0198 3081 CPI R24,1
0199 F439 BNE 0x01A1
019A 9180040D LDS R24,OSIntNesting
019C 3F8F CPI R24,0xFF
_AppIOInit:
019D F418 BCC 0x01A1
019E 5F8F SUBI R24,0xFF
019F 9380040D STS OSIntNesting,R24
01A1 9508 RET
_OSIntExit:
y --> R12
cpu_sr --> R10
01A2 940E09CD CALL push_gset4
01A4 24AA CLR R10
01A5 91800406 LDS R24,OSRunning
01A7 3081 CPI R24,1
01A8 F009 BEQ 0x01AA
01A9 C07B RJMP 0x0225
01AA 940E06D4 CALL _OS_CPU_SR_Save
01AC 2EA0 MOV R10,R16
01AD 2422 CLR R2
01AE 9030040D LDS R3,OSIntNesting
01B0 1423 CP R2,R3
01B1 F420 BCC 0x01B6
01B2 2D83 MOV R24,R3
01B3 5081 SUBI R24,1
01B4 9380040D STS OSIntNesting,R24
01B6 9020040D LDS R2,OSIntNesting
01B8 2022 TST R2
01B9 F009 BEQ 0x01BB
01BA C067 RJMP 0x0222
01BB 9020040C LDS R2,OSLockNesting
01BD 2022 TST R2
01BE F009 BEQ 0x01C0
01BF C062 RJMP 0x0222
01C0 E98C LDI R24,0x9C
01C1 E090 LDI R25,0
01C2 91E00409 LDS R30,OSRdyGrp
01C4 27FF CLR R31
01C5 0FE8 ADD R30,R24
01C6 1FF9 ADC R31,R25
01C7 90C4 LPM R12,0(Z)
01C8 E087 LDI R24,7
01C9 E094 LDI R25,4
01CA 2DEC MOV R30,R12
01CB 27FF CLR R31
01CC 0FE8 ADD R30,R24
01CD 1FF9 ADC R31,R25
01CE 81E0 LDD R30,Z+0
01CF 27FF CLR R31
01D0 E98C LDI R24,0x9C
01D1 E090 LDI R25,0
01D2 0FE8 ADD R30,R24
01D3 1FF9 ADC R31,R25
01D4 9024 LPM R2,0(Z)
01D5 2433 CLR R3
01D6 2C4C MOV R4,R12
01D7 2455 CLR R5
01D8 0C44 LSL R4
01D9 1C55 ROL R5
01DA 0C44 LSL R4
01DB 1C55 ROL R5
01DC 0C44 LSL R4
01DD 1C55 ROL R5
01DE 0C42 ADD R4,R2
FILE: ucosii\os_core.c
(0001) /*
(0002) *********************************************************************************************************
(0003) * uC/OS-II
(0004) * The Real-Time Kernel
(0005) * CORE FUNCTIONS
(0006) *
(0007) * (c) Copyright 1992-2003, Jean J. Labrosse, Weston, FL
(0008) * All Rights Reserved
(0009) *
(0010) * File : OS_CORE.C
(0011) * By : Jean J. Labrosse
(0012) * Version : V2.76
(0013) *********************************************************************************************************
(0014) */
(0015)
(0016) #ifndef OS_MASTER_FILE
(0017) #define OS_GLOBALS
(0018) #include <ucos_ii.h>
(0019) #endif
(0020)
(0021) /*
(0022) *********************************************************************************************************
(0023) * MAPPING TABLE TO MAP BIT POSITION TO BIT MASK
(0024) *
(0025) * Note: Index into table is desired bit position, 0..7
(0026) * Indexed value corresponds to bit mask
(0027) *********************************************************************************************************
(0028) */
(0029)
(0030) INT8U const OSMapTbl[8] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
(0031)
(0032) /*
(0033) *********************************************************************************************************
(0034) * PRIORITY RESOLUTION TABLE
(0035) *
(0036) * Note: Index into table is bit pattern to resolve highest priority
(0037) * Indexed value corresponds to highest priority bit position (i.e. 0..7)
(0038) *********************************************************************************************************
(0039) */
(0040)
(0041) INT8U const OSUnMapTbl[256] = {
(0042) 0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x00 to 0x0F */
(0043) 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x10 to 0x1F */
(0044) 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x20 to 0x2F */
(0045) 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x30 to 0x3F */
(0046) 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x40 to 0x4F */
(0047) 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x50 to 0x5F */
(0048) 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x60 to 0x6F */
(0049) 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x70 to 0x7F */
(0050) 7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x80 to 0x8F */
(0051) 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x90 to 0x9F */
(0052) 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0xA0 to 0xAF */
(0053) 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0xB0 to 0xBF */
(0054) 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0xC0 to 0xCF */
(0055) 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0xD0 to 0xDF */
(0056) 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0xE0 to 0xEF */
(0057) 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0 /* 0xF0 to 0xFF */
(0058) };
(0059)
(0060) /*$PAGE*/
(0061) /*
(0062) *********************************************************************************************************
(0063) * FUNCTION PROTOTYPES
(0064) *********************************************************************************************************
(0065) */
(0066) static void OS_InitEventList(void);
(0067) static void OS_InitMisc(void);
(0068) static void OS_InitRdyList(void);
(0069) static void OS_InitTaskIdle(void);
(0070) #if OS_TASK_STAT_EN > 0
(0071) static void OS_InitTaskStat(void);
(0072) #endif
(0073) static void OS_InitTCBList(void);
(0074)
(0075) /*$PAGE*/
(0076) /*
(0077) *********************************************************************************************************
(0078) * GET THE NAME OF A SEMAPHORE, MUTEX, MAILBOX or QUEUE
(0079) *
(0080) * Description: This function is used to obtain the name assigned to a semaphore, mutex, mailbox or queue.
(0081) *
(0082) * Arguments : pevent is a pointer to the event group. 'pevent' can point either to a semaphore,
(0083) * a mutex, a mailbox or a queue. Where this function is concerned, the actual
(0084) * type is irrelevant.
(0085) *
(0086) * pname is a pointer to an ASCII string that will receive the name of the semaphore,
(0087) * mutex, mailbox or queue. The string must be able to hold at least
(0088) * OS_EVENT_NAME_SIZE characters.
(0089) *
(0090) * err is a pointer to an error code that can contain one of the following values:
(0091) *
(0092) * OS_NO_ERR if the name was copied to 'pname'
(0093) * OS_ERR_EVENT_TYPE if 'pevent' is not pointing to the proper event
(0094) * control block type.
(0095) * OS_ERR_PNAME_NULL You passed a NULL pointer for 'pname'
(0096) * OS_ERR_PEVENT_NULL if you passed a NULL pointer for 'pevent'
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -