?? os_core.txt
字號:
;;;1536 ptcb->OSTCBY = (INT8U)(prio >> 3); /* Pre-compute X, Y, BitX and BitY */
;;;1537 ptcb->OSTCBBitY = 1 << ptcb->OSTCBY;
000614 e3a01001 MOV r1,#1
000618 e1c401b2 STRH r0,[r4,#0x12] ;1522
00061c e1a001a6 LSR r0,r6,#3 ;1536
000620 e5c40022 STRB r0,[r4,#0x22] ;1536
000624 e1a00011 LSL r0,r1,r0
000628 e5c40024 STRB r0,[r4,#0x24]
;;;1538 ptcb->OSTCBX = (INT8U)(prio & 0x07);
00062c e2060007 AND r0,r6,#7
000630 e5c40021 STRB r0,[r4,#0x21]
;;;1539 ptcb->OSTCBBitX = 1 << ptcb->OSTCBX;
000634 e1a00011 LSL r0,r1,r0
000638 e5c40023 STRB r0,[r4,#0x23]
;;;1540 #else
;;;1541 ptcb->OSTCBY = (INT8U)((prio >> 4) & 0xFF);/* Pre-compute X, Y, BitX and BitY */
;;;1542 ptcb->OSTCBBitY = 1 << ptcb->OSTCBY;
;;;1543 ptcb->OSTCBX = (INT8U)(prio & 0x0F);
;;;1544 ptcb->OSTCBBitX = 1 << ptcb->OSTCBX;
;;;1545 #endif
;;;1546
;;;1547 #if OS_EVENT_EN
;;;1548 ptcb->OSTCBEventPtr = (OS_EVENT *)0; /* Task is not pending on an event */
;;;1549 #endif
;;;1550
;;;1551 #if (OS_VERSION >= 251) && (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0) && (OS_TASK_DEL_EN > 0)
;;;1552 ptcb->OSTCBFlagNode = (OS_FLAG_NODE *)0; /* Task is not pending on an event flag */
;;;1553 #endif
;;;1554
;;;1555 #if (OS_MBOX_EN > 0) || ((OS_Q_EN > 0) && (OS_MAX_QS > 0))
;;;1556 ptcb->OSTCBMsg = (void *)0; /* No message received */
;;;1557 #endif
;;;1558
;;;1559 #if OS_TASK_PROFILE_EN > 0
;;;1560 ptcb->OSTCBCtxSwCtr = 0L; /* Initialize profiling variables */
;;;1561 ptcb->OSTCBCyclesStart = 0L;
00063c e5845028 STR r5,[r4,#0x28]
;;;1562 ptcb->OSTCBCyclesTot = 0L;
000640 e5845030 STR r5,[r4,#0x30]
;;;1563 ptcb->OSTCBStkBase = (OS_STK *)0;
000644 e584502c STR r5,[r4,#0x2c]
;;;1564 ptcb->OSTCBStkUsed = 0L;
000648 e5845034 STR r5,[r4,#0x34]
;;;1565 #endif
;;;1566
;;;1567 #if OS_TASK_NAME_SIZE > 1
;;;1568 ptcb->OSTCBTaskName[0] = '?'; /* Unknown name at task creation */
00064c e3a0003f MOV r0,#0x3f
000650 e5845038 STR r5,[r4,#0x38]
000654 e5c4003c STRB r0,[r4,#0x3c]
;;;1569 ptcb->OSTCBTaskName[1] = OS_ASCII_NUL;
;;;1570 #endif
;;;1571
;;;1572 #if OS_VERSION >= 204
;;;1573 OSTCBInitHook(ptcb);
000658 e1a00004 MOV r0,r4
00065c e5c4503d STRB r5,[r4,#0x3d] ;1569
000660 ebfffffe BL OSTCBInitHook
;;;1574 #endif
;;;1575
;;;1576 OSTaskCreateHook(ptcb); /* Call user defined hook */
000664 e1a00004 MOV r0,r4
000668 ebfffffe BL OSTaskCreateHook
;;;1577
;;;1578 OS_ENTER_CRITICAL();
00066c ebfffffe BL OS_CPU_SR_Save
;;;1579 OSTCBPrioTbl[prio] = ptcb;
000670 e51f11f0 LDR r1,|L1.1160|
;;;1580 ptcb->OSTCBNext = OSTCBList; /* Link into TCB chain */
;;;1581 ptcb->OSTCBPrev = (OS_TCB *)0;
000674 e2842014 ADD r2,r4,#0x14
000678 e7814106 STR r4,[r1,r6,LSL #2] ;1579
00067c e5971028 LDR r1,[r7,#0x28] ;1580 ; OSTCBList
000680 e8820022 STM r2,{r1,r5}
;;;1582 if (OSTCBList != (OS_TCB *)0) {
000684 e3510000 CMP r1,#0
;;;1583 OSTCBList->OSTCBPrev = ptcb;
000688 15814018 STRNE r4,[r1,#0x18]
;;;1584 }
;;;1585 OSTCBList = ptcb;
00068c e5874028 STR r4,[r7,#0x28] ; OSTCBList
;;;1586 OSRdyGrp |= ptcb->OSTCBBitY; /* Make task ready to run */
000690 e5d41024 LDRB r1,[r4,#0x24]
000694 e5d72006 LDRB r2,[r7,#6] ; OSRdyGrp
000698 e1811002 ORR r1,r1,r2
00069c e5c71006 STRB r1,[r7,#6] ; OSRdyGrp
;;;1587 OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
0006a0 e5d41022 LDRB r1,[r4,#0x22]
0006a4 e51f21e8 LDR r2,|L1.1220|
0006a8 e5d4c023 LDRB r12,[r4,#0x23]
0006ac e7d23001 LDRB r3,[r2,r1]
0006b0 e183300c ORR r3,r3,r12
0006b4 e7c23001 STRB r3,[r2,r1]
;;;1588 OSTaskCtr++; /* Increment the #tasks counter */
0006b8 e5d71008 LDRB r1,[r7,#8] ; OSTaskCtr
0006bc e2811001 ADD r1,r1,#1
0006c0 e5c71008 STRB r1,[r7,#8] ; OSTaskCtr
;;;1589 OS_EXIT_CRITICAL();
0006c4 ebfffffe BL OS_CPU_SR_Restore
;;;1590 return (OS_NO_ERR);
0006c8 e3a00000 MOV r0,#0
|L1.1740|
0006cc e28dd010 ADD sp,sp,#0x10
0006d0 e8bd5ff0 POP {r4-r12,lr}
;;;1591 }
;;;1592 OS_EXIT_CRITICAL();
;;;1593 return (OS_NO_MORE_TCB);
;;;1594 }
0006d4 e12fff1e BX lr
|L1.1752|
0006d8 ebfffffe BL OS_CPU_SR_Restore ;1592
0006dc e3a00046 MOV r0,#0x46 ;1593
0006e0 eafffff9 B |L1.1740| ;1593
ENDP
OS_SchedNew PROC
;;;1218
;;;1219 y = OSUnMapTbl[OSRdyGrp];
0006e4 e51f1260 LDR r1,|L1.1164|
0006e8 e59f201c LDR r2,|L1.1804|
0006ec e5d10006 LDRB r0,[r1,#6] ; OSRdyGrp
;;;1220 OSPrioHighRdy = (INT8U)((y << 3) + OSUnMapTbl[OSRdyTbl[y]]);
0006f0 e2813009 ADD r3,r1,#9
0006f4 e7d20000 LDRB r0,[r2,r0] ;1219
0006f8 e7d33000 LDRB r3,[r3,r0]
0006fc e7d22003 LDRB r2,[r2,r3]
000700 e0820180 ADD r0,r2,r0,LSL #3
000704 e5c10005 STRB r0,[r1,#5] ; OSPrioHighRdy
;;;1221 #else /* We support up to 256 tasks */
;;;1222 INT8U y;
;;;1223 INT16U *ptbl;
;;;1224
;;;1225
;;;1226 if ((OSRdyGrp & 0xFF) != 0) {
;;;1227 y = OSUnMapTbl[OSRdyGrp & 0xFF];
;;;1228 } else {
;;;1229 y = OSUnMapTbl[(OSRdyGrp >> 8) & 0xFF] + 8;
;;;1230 }
;;;1231 ptbl = &OSRdyTbl[y];
;;;1232 if ((*ptbl & 0xFF) != 0) {
;;;1233 OSPrioHighRdy = (INT8U)((y << 4) + OSUnMapTbl[(*ptbl & 0xFF)]);
;;;1234 } else {
;;;1235 OSPrioHighRdy = (INT8U)((y << 4) + OSUnMapTbl[(*ptbl >> 8) & 0xFF] + 8);
;;;1236 }
;;;1237 #endif
;;;1238 }
000708 e12fff1e BX lr
|L1.1804|
00070c 00000000 DCD ||.constdata.1||
ENDP
AREA ||.data||, DATA, ALIGN=2
OSCPUUsage
DCB 0x00
OSStatRdy
DCB 0x00
OSIntNesting
DCB 0x00
OSLockNesting
DCB 0x00
OSPrioCur
DCB 0x00
OSPrioHighRdy
DCB 0x00
OSRdyGrp
DCB 0x00
OSRunning
DCB 0x00
OSTaskCtr
DCB 0x00
OSRdyTbl
DCB 0x00,0x00
DCB 0x00
OSCtxSwCtr
DCD 0x00000000
OSIdleCtrMax
DCD 0x00000000
OSIdleCtrRun
DCD 0x00000000
OSIdleCtr
DCD 0x00000000
OSTCBCur
DCD 0x00000000
OSTCBFreeList
DCD 0x00000000
OSTCBHighRdy
DCD 0x00000000
OSTCBList
DCD 0x00000000
AREA ||.constdata.1||, DATA, READONLY, ALIGN=0
OSUnMapTbl
DCB 0x00,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x03,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x04,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x03,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x05,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x03,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x04,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x03,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x06,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x03,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x04,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x03,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x05,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x03,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x04,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x03,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x07,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x03,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x04,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x03,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x05,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x03,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x04,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x03,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x06,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x03,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x04,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x03,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x05,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x03,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x04,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
DCB 0x03,0x00,0x01,0x00
DCB 0x02,0x00,0x01,0x00
AREA ||.bss.5||, NOINIT, ALIGN=2
OSTaskStatStk
% 512
OSTaskIdleStk
% 512
OSTCBPrioTbl
% 64
OSTCBTbl
% 912
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -