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

📄 os_task.lst

📁 称植到lpc2124上的UCOS2.85版 是本人初学移植和ARM的成果 可能已有人上传类似的了
💻 LST
📖 第 1 页 / 共 5 页
字号:
 177:../OSsrc/os_task.c **** *
 178:../OSsrc/os_task.c **** * Returns    : OS_ERR_NONE             if the function was successful.
 179:../OSsrc/os_task.c **** *              OS_PRIO_EXIT            if the task priority already exist
 180:../OSsrc/os_task.c **** *                                      (each task MUST have a unique priority).
 181:../OSsrc/os_task.c **** *              OS_ERR_PRIO_INVALID     if the priority you specify is higher that the maximum allow
 182:../OSsrc/os_task.c **** *                                      (i.e. >= OS_LOWEST_PRIO)
 183:../OSsrc/os_task.c **** *              OS_ERR_TASK_CREATE_ISR  if you tried to create a task from an ISR.
 184:../OSsrc/os_task.c **** ***************************************************************************************************
 185:../OSsrc/os_task.c **** */
 186:../OSsrc/os_task.c **** 
 187:../OSsrc/os_task.c **** #if OS_TASK_CREATE_EN > 0
 188:../OSsrc/os_task.c **** INT8U  OSTaskCreate (void (*task)(void *p_arg), void *p_arg, OS_STK *ptos, INT8U prio)
 189:../OSsrc/os_task.c **** {
 115               	.LM1:
 116               	/* prologue: frame size=0 */
 117 0000 9F92      		push r9
 118 0002 AF92      		push r10
 119 0004 BF92      		push r11
 120 0006 CF92      		push r12
 121 0008 DF92      		push r13
 122 000a EF92      		push r14
 123 000c FF92      		push r15
 124 000e 0F93      		push r16
 125 0010 1F93      		push r17
 126 0012 CF93      		push r28
 127 0014 DF93      		push r29
 128               	/* prologue end (size=11) */
 129 0016 DC01      		movw r26,r24
 130 0018 922E      		mov r9,r18
 190:../OSsrc/os_task.c ****     OS_STK    *psp;
 191:../OSsrc/os_task.c ****     INT8U      err;
 192:../OSsrc/os_task.c **** #if OS_CRITICAL_METHOD == 3                  /* Allocate storage for CPU status register           
 193:../OSsrc/os_task.c ****     OS_CPU_SR  cpu_sr = 0;
 194:../OSsrc/os_task.c **** #endif
 195:../OSsrc/os_task.c **** 
 196:../OSsrc/os_task.c **** 
 197:../OSsrc/os_task.c **** 
 198:../OSsrc/os_task.c **** #if OS_ARG_CHK_EN > 0
 199:../OSsrc/os_task.c ****     if (prio > OS_LOWEST_PRIO) {             /* Make sure priority is within allowable range       
 132               	.LM2:
 133 001a 8FE3      		ldi r24,lo8(63)
 134 001c 8217      		cp r24,r18
 135 001e 18F4      		brsh .L2
 200:../OSsrc/os_task.c ****         return (OS_ERR_PRIO_INVALID);
 137               	.LM3:
 138 0020 8AE2      		ldi r24,lo8(42)
 139 0022 90E0      		ldi r25,hi8(42)
 140 0024 42C0      		rjmp .L1
 141               	.L2:
 201:../OSsrc/os_task.c ****     }
 202:../OSsrc/os_task.c **** #endif
 203:../OSsrc/os_task.c ****     OS_ENTER_CRITICAL();
 143               	.LM4:
 144               	/* #APP */
 145 0026 F894      		cli
 204:../OSsrc/os_task.c ****     if (OSIntNesting > 0) {                  /* Make sure we don't create the task from within an I
 147               	.LM5:
 148               	/* #NOAPP */
 149 0028 8091 0000 		lds r24,OSIntNesting
 150 002c 8823      		tst r24
 151 002e 21F0      		breq .L3
 205:../OSsrc/os_task.c ****         OS_EXIT_CRITICAL();
 153               	.LM6:
 154               	/* #APP */
 155 0030 7894      		sei
 206:../OSsrc/os_task.c ****         return (OS_ERR_TASK_CREATE_ISR);
 157               	.LM7:
 158               	/* #NOAPP */
 159 0032 8CE3      		ldi r24,lo8(60)
 160 0034 90E0      		ldi r25,hi8(60)
 161 0036 39C0      		rjmp .L1
 162               	.L3:
 207:../OSsrc/os_task.c ****     }
 208:../OSsrc/os_task.c ****     if (OSTCBPrioTbl[prio] == (OS_TCB *)0) { /* Make sure task doesn't already exist at this priori
 164               	.LM8:
 165 0038 C22F      		mov r28,r18
 166 003a DD27      		clr r29
 167 003c FE01      		movw r30,r28
 168 003e EC0F      		add r30,r28
 169 0040 FD1F      		adc r31,r29
 170 0042 E050      		subi r30,lo8(-(OSTCBPrioTbl))
 171 0044 F040      		sbci r31,hi8(-(OSTCBPrioTbl))
 172 0046 8081      		ld r24,Z
 173 0048 9181      		ldd r25,Z+1
 174 004a 892B      		or r24,r25
 175 004c 59F5      		brne .L4
 209:../OSsrc/os_task.c ****         OSTCBPrioTbl[prio] = OS_TCB_RESERVED;/* Reserve the priority to prevent others from doing .
 177               	.LM9:
 178 004e 81E0      		ldi r24,lo8(1)
 179 0050 90E0      		ldi r25,hi8(1)
 180 0052 9183      		std Z+1,r25
 181 0054 8083      		st Z,r24
 210:../OSsrc/os_task.c ****                                              /* ... the same thing until task is created.          
 211:../OSsrc/os_task.c ****         OS_EXIT_CRITICAL();
 183               	.LM10:
 184               	/* #APP */
 185 0056 7894      		sei
 212:../OSsrc/os_task.c ****         psp = OSTaskStkInit(task, p_arg, ptos, 0);              /* Initialize the task's stack     
 187               	.LM11:
 188               	/* #NOAPP */
 189 0058 20E0      		ldi r18,lo8(0)
 190 005a 30E0      		ldi r19,hi8(0)
 191 005c CD01      		movw r24,r26
 192 005e 0E94 0000 		call OSTaskStkInit
 213:../OSsrc/os_task.c ****         err = OS_TCBInit(prio, psp, (OS_STK *)0, 0, 0, (void *)0, 0);
 194               	.LM12:
 195 0062 AA24      		clr r10
 196 0064 BB24      		clr r11
 197 0066 6501      		movw r12,r10
 198 0068 EE24      		clr r14
 199 006a FF24      		clr r15
 200 006c 8701      		movw r16,r14
 201 006e 9501      		movw r18,r10
 202 0070 A501      		movw r20,r10
 203 0072 BC01      		movw r22,r24
 204 0074 892D      		mov r24,r9
 205 0076 0E94 0000 		call OS_TCBInit
 206 007a 182F      		mov r17,r24
 214:../OSsrc/os_task.c ****         if (err == OS_ERR_NONE) {
 208               	.LM13:
 209 007c 8823      		tst r24
 210 007e 39F4      		brne .L5
 215:../OSsrc/os_task.c ****             if (OSRunning == OS_TRUE) {      /* Find highest priority task if multitasking has star
 212               	.LM14:
 213 0080 8091 0000 		lds r24,OSRunning
 214 0084 8130      		cpi r24,lo8(1)
 215 0086 59F4      		brne .L7
 216:../OSsrc/os_task.c ****                 OS_Sched();
 217               	.LM15:
 218 0088 0E94 0000 		call OS_Sched
 219 008c 08C0      		rjmp .L7
 220               	.L5:
 217:../OSsrc/os_task.c ****             }
 218:../OSsrc/os_task.c ****         } else {
 219:../OSsrc/os_task.c ****             OS_ENTER_CRITICAL();
 222               	.LM16:
 223               	/* #APP */
 224 008e F894      		cli
 220:../OSsrc/os_task.c ****             OSTCBPrioTbl[prio] = (OS_TCB *)0;/* Make this priority available to others             
 226               	.LM17:
 227               	/* #NOAPP */
 228 0090 CC0F      		add r28,r28
 229 0092 DD1F      		adc r29,r29
 230 0094 C050      		subi r28,lo8(-(OSTCBPrioTbl))
 231 0096 D040      		sbci r29,hi8(-(OSTCBPrioTbl))
 232 0098 1982      		std Y+1,__zero_reg__
 233 009a 1882      		st Y,__zero_reg__
 221:../OSsrc/os_task.c ****             OS_EXIT_CRITICAL();
 235               	.LM18:
 236               	/* #APP */
 237 009c 7894      		sei
 238               	/* #NOAPP */
 239               	.L7:
 222:../OSsrc/os_task.c ****         }
 223:../OSsrc/os_task.c ****         return (err);
 241               	.LM19:
 242 009e 812F      		mov r24,r17
 243 00a0 9927      		clr r25
 244 00a2 03C0      		rjmp .L1
 245               	.L4:
 224:../OSsrc/os_task.c ****     }
 225:../OSsrc/os_task.c ****     OS_EXIT_CRITICAL();
 247               	.LM20:
 248               	/* #APP */
 249 00a4 7894      		sei
 226:../OSsrc/os_task.c ****     return (OS_ERR_PRIO_EXIST);
 251               	.LM21:
 252               	/* #NOAPP */
 253 00a6 88E2      		ldi r24,lo8(40)
 254 00a8 90E0      		ldi r25,hi8(40)
 255               	.L1:
 256               	/* epilogue: frame size=0 */
 257 00aa DF91      		pop r29
 258 00ac CF91      		pop r28
 259 00ae 1F91      		pop r17
 260 00b0 0F91      		pop r16
 261 00b2 FF90      		pop r15
 262 00b4 EF90      		pop r14
 263 00b6 DF90      		pop r13
 264 00b8 CF90      		pop r12
 265 00ba BF90      		pop r11
 266 00bc AF90      		pop r10
 267 00be 9F90      		pop r9
 268 00c0 0895      		ret
 269               	/* epilogue end (size=12) */
 270               	/* function OSTaskCreate size 103 (80) */
 276               	.Lscope0:
 281               	.global	OS_TaskStkClr
 283               	OS_TaskStkClr:

⌨️ 快捷键说明

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