📄 os_core.txt
字号:
;;;1473 OS_TASK_STAT_PRIO); /* One higher than the idle task */
;;;1474 #endif
;;;1475 #endif
;;;1476
;;;1477 #if OS_TASK_NAME_SIZE > 14
;;;1478 OSTaskNameSet(OS_TASK_STAT_PRIO, (INT8U *)"uC/OS-II Stat", &err);
000420 aa06 ADD r2,sp,#0x18
000422 e007 B |L1.1076|
|L1.1060|
000424 00000000 DCD ||.data||
|L1.1064|
000428 00000000 DCD ||.constdata||
|L1.1068|
00042c 00000540 DCD ||.bss||+0x540
|L1.1072|
000430 00000140 DCD ||.bss||+0x140
|L1.1076|
000434 a1fe ADR r1,|L1.2096|
000436 201e MOVS r0,#0x1e
000438 f7fff7ff BL OSTaskNameSet
|L1.1084|
;;;1479 #else
;;;1480 #if OS_TASK_NAME_SIZE > 7
;;;1481 OSTaskNameSet(OS_TASK_STAT_PRIO, (INT8U *)"OS-Stat", &err);
;;;1482 #endif
;;;1483 #endif
;;;1484 }
00043c b007 ADD sp,sp,#0x1c
00043e bd00 POP {pc}
;;;1485 #endif
ENDP
OS_TaskIdle PROC
;;;1763 void OS_TaskIdle (void *p_arg)
;;;1764 {
000440 b510 PUSH {r4,lr}
000442 4cff LDR r4,|L1.2112|
|L1.1092|
;;;1765 #if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
;;;1766 OS_CPU_SR cpu_sr = 0;
;;;1767 #endif
;;;1768
;;;1769
;;;1770
;;;1771 (void)p_arg; /* Prevent compiler warning for not using 'p_arg' */
;;;1772 for (;;) {
;;;1773 OS_ENTER_CRITICAL();
000444 f7fff7ff BL OS_CPU_SR_Save
;;;1774 OSIdleCtr++;
000448 6a21 LDR r1,[r4,#0x20] ; OSIdleCtr
00044a 1c49 ADDS r1,r1,#1
00044c 6221 STR r1,[r4,#0x20] ; OSIdleCtr
;;;1775 OS_EXIT_CRITICAL();
00044e f7fff7ff BL OS_CPU_SR_Restore
;;;1776 OSTaskIdleHook(); /* Call user definable HOOK */
000452 f7fff7ff BL OSTaskIdleHook
000456 e7f5 B |L1.1092|
;;;1777 }
;;;1778 }
;;;1779 /*$PAGE*/
ENDP
OS_InitTaskIdle PROC
;;;1368 static void OS_InitTaskIdle (void)
;;;1369 {
000458 b500 PUSH {lr}
00045a b087 SUB sp,sp,#0x1c
;;;1370 #if OS_TASK_NAME_SIZE > 7
;;;1371 INT8U err;
;;;1372 #endif
;;;1373
;;;1374
;;;1375 #if OS_TASK_CREATE_EXT_EN > 0
;;;1376 #if OS_STK_GROWTH == 1
;;;1377 (void)OSTaskCreateExt(OS_TaskIdle,
00045c 2303 MOVS r3,#3
00045e 2200 MOVS r2,#0
000460 e9cde9cd STRD r2,r3,[sp,#0xc]
000464 48f7 LDR r0,|L1.2116|
000466 2180 MOVS r1,#0x80
000468 e9cde9cd STRD r0,r1,[sp,#4]
00046c f64ff64f MOV r3,#0xffff
000470 9300 STR r3,[sp,#0]
000472 231f MOVS r3,#0x1f
000474 f500f500 ADD r2,r0,#0x1fc
000478 2100 MOVS r1,#0
00047a f2aff2af ADR r0,OS_TaskIdle + 1
00047e f7fff7ff BL OSTaskCreateExt
;;;1378 (void *)0, /* No arguments passed to OS_TaskIdle() */
;;;1379 &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1], /* Set Top-Of-Stack */
;;;1380 OS_TASK_IDLE_PRIO, /* Lowest priority level */
;;;1381 OS_TASK_IDLE_ID,
;;;1382 &OSTaskIdleStk[0], /* Set Bottom-Of-Stack */
;;;1383 OS_TASK_IDLE_STK_SIZE,
;;;1384 (void *)0, /* No TCB extension */
;;;1385 OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/* Enable stack checking + clear stack */
;;;1386 #else
;;;1387 (void)OSTaskCreateExt(OS_TaskIdle,
;;;1388 (void *)0, /* No arguments passed to OS_TaskIdle() */
;;;1389 &OSTaskIdleStk[0], /* Set Top-Of-Stack */
;;;1390 OS_TASK_IDLE_PRIO, /* Lowest priority level */
;;;1391 OS_TASK_IDLE_ID,
;;;1392 &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1], /* Set Bottom-Of-Stack */
;;;1393 OS_TASK_IDLE_STK_SIZE,
;;;1394 (void *)0, /* No TCB extension */
;;;1395 OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/* Enable stack checking + clear stack */
;;;1396 #endif
;;;1397 #else
;;;1398 #if OS_STK_GROWTH == 1
;;;1399 (void)OSTaskCreate(OS_TaskIdle,
;;;1400 (void *)0,
;;;1401 &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1],
;;;1402 OS_TASK_IDLE_PRIO);
;;;1403 #else
;;;1404 (void)OSTaskCreate(OS_TaskIdle,
;;;1405 (void *)0,
;;;1406 &OSTaskIdleStk[0],
;;;1407 OS_TASK_IDLE_PRIO);
;;;1408 #endif
;;;1409 #endif
;;;1410
;;;1411 #if OS_TASK_NAME_SIZE > 14
;;;1412 OSTaskNameSet(OS_TASK_IDLE_PRIO, (INT8U *)"uC/OS-II Idle", &err);
000482 aa06 ADD r2,sp,#0x18
000484 a1f0 ADR r1,|L1.2120|
000486 201f MOVS r0,#0x1f
000488 f7fff7ff BL OSTaskNameSet
;;;1413 #else
;;;1414 #if OS_TASK_NAME_SIZE > 7
;;;1415 OSTaskNameSet(OS_TASK_IDLE_PRIO, (INT8U *)"OS-Idle", &err);
;;;1416 #endif
;;;1417 #endif
;;;1418 }
00048c e7d6 B |L1.1084|
;;;1419 /*$PAGE*/
ENDP
OS_MemClr PROC
;;;1549 void OS_MemClr (INT8U *pdest, INT16U size)
;;;1550 {
00048e 2200 MOVS r2,#0
000490 e003 B |L1.1178|
|L1.1170|
;;;1551 while (size > 0) {
;;;1552 *pdest++ = (INT8U)0;
000492 f800f800 STRB r2,[r0],#1
;;;1553 size--;
000496 1e49 SUBS r1,r1,#1
000498 b289 UXTH r1,r1
|L1.1178|
00049a 2900 CMP r1,#0 ;1551
00049c d1f9 BNE |L1.1170|
;;;1554 }
;;;1555 }
00049e 4770 BX lr
;;;1556 /*$PAGE*/
ENDP
OS_InitEventList PROC
;;;1241 static void OS_InitEventList (void)
;;;1242 {
0004a0 b510 PUSH {r4,lr}
;;;1243 #if (OS_EVENT_EN) && (OS_MAX_EVENTS > 0)
;;;1244 #if (OS_MAX_EVENTS > 1)
;;;1245 INT16U i;
;;;1246 OS_EVENT *pevent1;
;;;1247 OS_EVENT *pevent2;
;;;1248
;;;1249
;;;1250 OS_MemClr((INT8U *)&OSEventTbl[0], sizeof(OSEventTbl)); /* Clear the event table */
0004a2 f44ff44f MOV r1,#0x140
0004a6 48ec LDR r0,|L1.2136|
0004a8 f7fff7ff BL OS_MemClr
;;;1251 pevent1 = &OSEventTbl[0];
0004ac 48ea LDR r0,|L1.2136|
;;;1252 pevent2 = &OSEventTbl[1];
0004ae f100f100 ADD r2,r0,#0x20
;;;1253 for (i = 0; i < (OS_MAX_EVENTS - 1); i++) { /* Init. list of free EVENT control blocks */
0004b2 2100 MOVS r1,#0
0004b4 2300 MOVS r3,#0
0004b6 243f MOVS r4,#0x3f
|L1.1208|
;;;1254 pevent1->OSEventType = OS_EVENT_TYPE_UNUSED;
0004b8 7003 STRB r3,[r0,#0]
;;;1255 pevent1->OSEventPtr = pevent2;
0004ba 6042 STR r2,[r0,#4]
;;;1256 #if OS_EVENT_NAME_SIZE > 1
;;;1257 pevent1->OSEventName[0] = '?'; /* Unknown name */
0004bc 73c4 STRB r4,[r0,#0xf]
;;;1258 pevent1->OSEventName[1] = OS_ASCII_NUL;
0004be 7403 STRB r3,[r0,#0x10]
;;;1259 #endif
;;;1260 pevent1++;
0004c0 3020 ADDS r0,r0,#0x20
;;;1261 pevent2++;
0004c2 3220 ADDS r2,r2,#0x20
0004c4 1c49 ADDS r1,r1,#1 ;1253
0004c6 b289 UXTH r1,r1 ;1253
0004c8 2909 CMP r1,#9 ;1253
0004ca d3f5 BCC |L1.1208|
;;;1262 }
;;;1263 pevent1->OSEventType = OS_EVENT_TYPE_UNUSED;
0004cc 7003 STRB r3,[r0,#0]
;;;1264 pevent1->OSEventPtr = (OS_EVENT *)0;
0004ce 6043 STR r3,[r0,#4]
;;;1265 #if OS_EVENT_NAME_SIZE > 1
;;;1266 pevent1->OSEventName[0] = '?';
0004d0 73c4 STRB r4,[r0,#0xf]
;;;1267 pevent1->OSEventName[1] = OS_ASCII_NUL;
0004d2 7403 STRB r3,[r0,#0x10]
;;;1268 #endif
;;;1269 OSEventFreeList = &OSEventTbl[0];
0004d4 49da LDR r1,|L1.2112|
0004d6 48e0 LDR r0,|L1.2136|
0004d8 6108 STR r0,[r1,#0x10] ; OSEventFreeList
;;;1270 #else
;;;1271 OSEventFreeList = &OSEventTbl[0]; /* Only have ONE event control block */
;;;1272 OSEventFreeList->OSEventType = OS_EVENT_TYPE_UNUSED;
;;;1273 OSEventFreeList->OSEventPtr = (OS_EVENT *)0;
;;;1274 #if OS_EVENT_NAME_SIZE > 1
;;;1275 OSEventFreeList->OSEventName[0] = '?'; /* Unknown name */
;;;1276 OSEventFreeList->OSEventName[1] = OS_ASCII_NUL;
;;;1277 #endif
;;;1278 #endif
;;;1279 #endif
;;;1280 }
0004da bd10 POP {r4,pc}
;;;1281 /*$PAGE*/
ENDP
OS_InitTCBList PROC
;;;1500 static void OS_InitTCBList (void)
;;;1501 {
0004dc b510 PUSH {r4,lr}
;;;1502 INT8U i;
;;;1503 OS_TCB *ptcb1;
;;;1504 OS_TCB *ptcb2;
;;;1505
;;;1506
;;;1507 OS_MemClr((INT8U *)&OSTCBTbl[0], sizeof(OSTCBTbl)); /* Clear all the TCBs */
0004de f44ff44f MOV r1,#0x7e8
0004e2 48de LDR r0,|L1.2140|
0004e4 f7fff7ff BL OS_MemClr
;;;1508 OS_MemClr((INT8U *)&OSTCBPrioTbl[0], sizeof(OSTCBPrioTbl)); /* Clear the priority table */
0004e8 48dc LDR r0,|L1.2140|
0004ea 2180 MOVS r1,#0x80
0004ec 3880 SUBS r0,r0,#0x80
0004ee f7fff7ff BL OS_MemClr
;;;1509 ptcb1 = &OSTCBTbl[0];
0004f2 48da LDR r0,|L1.2140|
;;;1510 ptcb2 = &OSTCBTbl[1];
0004f4 f100f100 ADD r2,r0,#0x5c
;;;1511 for (i = 0; i < (OS_MAX_TASKS + OS_N_SYS_TASKS - 1); i++) { /* Init. list of free TCBs */
0004f8 2100 MOVS r1,#0
0004fa 2400 MOVS r4,#0
0004fc 233f MOVS r3,#0x3f
|L1.1278|
;;;1512 ptcb1->OSTCBNext = ptcb2;
0004fe 6142 STR r2,[r0,#0x14]
;;;1513 #if OS_TASK_NAME_SIZE > 1
;;;1514 ptcb1->OSTCBTaskName[0] = '?'; /* Unknown name */
000500 f880f880 STRB r3,[r0,#0x4c]
;;;1515 ptcb1->OSTCBTask
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -