📄 os_probe.lst
字号:
\ 00000034 BBF80030 LDRH R3,[R11, #+0]
\ 00000038 4246 MOV R2,R8
\ 0000003A 1146 MOV R1,R2
\ 0000003C 0846 MOV R0,R1
\ 0000003E ........ _BLF OSTimeDlyHMSM,??OSTimeDlyHMSM??rT
459 if (OSProbe_CallbackFnct != (void (*)(void))0) {
\ 00000042 DBF80400 LDR R0,[R11, #+4]
\ 00000046 0100 MOVS R1,R0
\ 00000048 00D0 BEQ.N ??OSProbe_Task_4
460 OSProbe_CallbackFnct();
\ 0000004A 8047 BLX R0
461 }
462
463 /* Update task CPU usage */
464 i = 0;
\ ??OSProbe_Task_4:
\ 0000004C 4646 MOV R6,R8
465 cycles_tot = 0;
\ 0000004E 4446 MOV R4,R8
466 ptcb = &OSTCBTbl[0]; /* ... Get pointer to first TCB ... */
\ 00000050 2A4F LDR.N R7,??OSProbe_Task_0+0x8 ;; OSTCBTbl
\ 00000052 15E0 B.N ??OSProbe_Task_5
467
468 while ((i < OS_MAX_TASKS) &&
469 (ptcb != (OS_TCB *)0) &&
470 (ptcb != (OS_TCB *)1)) {
471 /* ... Calculate new CyclesDif, the number of cycles */
472 /* ... used by the task since the last reading. Half */
473 /* ... the previous value is added to provide some */
474 /* ... hysteresis, thereby reducing the natural */
475 /* ... "jitter" in the data. */
476 cycles_dif[i] = (ptcb->OSTCBCyclesTot - cycles_tot_last[i]) / 2 + (cycles_dif[i] / 2);
477 cycles_tot_last[i] = ptcb->OSTCBCyclesTot;
478 cycles_tot += cycles_dif[i];
479
480 if (ptcb->OSTCBStkSize == 0) {
481 OSProbe_TaskStkUsage[i] = 0;
482 } else {
483 #if (OS_PROBE_USE_FP > 0)
484 #if (OS_STK_GROWTH == 1)
485 OSProbe_TaskStkUsage[i] = (FP32)(((INT32U)(ptcb->OSTCBStkBase) - (INT32U)(ptcb->OSTCBStkPtr)) * 100)
486 / ((ptcb->OSTCBStkSize) * sizeof (OS_STK));
\ ??OSProbe_Task_6:
\ 00000054 02B4 PUSH {R1}
\ 00000056 786C LDR R0,[R7, #+68]
\ 00000058 3968 LDR R1,[R7, #+0]
\ 0000005A 401A SUBS R0,R0,R1
\ 0000005C 6421 MOVS R1,#+100
\ 0000005E 4843 MULS R0,R1,R0
\ 00000060 ........ _BLF __ulongToFloat,??__ulongToFloat??rT
\ 00000064 0500 MOVS R5,R0
\ 00000066 F868 LDR R0,[R7, #+12]
\ 00000068 8000 LSLS R0,R0,#+2
\ 0000006A ........ _BLF __ulongToFloat,??__ulongToFloat??rT
\ 0000006E 0100 MOVS R1,R0
\ 00000070 2800 MOVS R0,R5
\ 00000072 ........ _BLF __fDiv,??__fDiv??rT
\ 00000076 02BC POP {R1}
\ 00000078 0860 STR R0,[R1, #+0]
487 #else
488 OSProbe_TaskStkUsage[i] = (FP32)(((INT32U)(ptcb->OSTCBStkPtr) - (INT32U)(ptcb->OSTCBStkBase)) * 100)
489 / ((ptcb->OSTCBStkSize) * sizeof (OS_STK));
490 #endif
491 #else
492 max = ((ptcb->OSTCBStkSize) * sizeof (OS_STK)) / 100L;
493
494 #if (OS_STK_GROWTH == 1)
495 OSProbe_TaskStkUsage[i] = (INT16U)(((INT32U)(ptcb->OSTCBStkBase) - (INT32U)(ptcb->OSTCBStkPtr)) / max);
496 #else
497 OSProbe_TaskStkUsage[i] = (INT16U)(((INT32U)(ptcb->OSTCBStkPtr) - (INT32U)(ptcb->OSTCBStkBase)) / max);
498 #endif
499 #endif
500 }
501
502 ptcb = ptcb->OSTCBPrev;
\ ??OSProbe_Task_7:
\ 0000007A BF69 LDR R7,[R7, #+24]
503
504 i++;
\ 0000007C 761C ADDS R6,R6,#+1
\ 0000007E B6B2 UXTH R6,R6
\ ??OSProbe_Task_5:
\ 00000080 1F4D LDR.N R5,??OSProbe_Task_0+0xC ;; ??cycles_dif
\ 00000082 3000 MOVS R0,R6
\ 00000084 1428 CMP R0,#+20
\ 00000086 1BD2 BCS.N ??OSProbe_Task_8
\ 00000088 002F CMP R7,#+0
\ 0000008A 19D0 BEQ.N ??OSProbe_Task_8
\ 0000008C 012F CMP R7,#+1
\ 0000008E 17D0 BEQ.N ??OSProbe_Task_8
\ 00000090 15EB8001 ADDS R1,R5,R0, LSL #+2
\ 00000094 19EB8002 ADDS R2,R9,R0, LSL #+2
\ 00000098 FB6B LDR R3,[R7, #+60]
\ 0000009A 1568 LDR R5,[R2, #+0]
\ 0000009C 5B1B SUBS R3,R3,R5
\ 0000009E 0D68 LDR R5,[R1, #+0]
\ 000000A0 6D08 LSRS R5,R5,#+1
\ 000000A2 15EB5303 ADDS R3,R5,R3, LSR #+1
\ 000000A6 0B60 STR R3,[R1, #+0]
\ 000000A8 F96B LDR R1,[R7, #+60]
\ 000000AA 1160 STR R1,[R2, #+0]
\ 000000AC E418 ADDS R4,R4,R3
\ 000000AE 1149 LDR.N R1,??OSProbe_Task_0 ;; OSProbe_TaskStkUsage
\ 000000B0 11EB8001 ADDS R1,R1,R0, LSL #+2
\ 000000B4 F868 LDR R0,[R7, #+12]
\ 000000B6 0028 CMP R0,#+0
\ 000000B8 CCD1 BNE.N ??OSProbe_Task_6
\ 000000BA C1F800A0 STR R10,[R1, #+0]
\ 000000BE DCE7 B.N ??OSProbe_Task_7
505 }
506
507 #if (OS_PROBE_USE_FP == 0)
508 max = cycles_tot / 100L;
509 #endif
510 /* ... For each task, calculate percent CPU usage. */
511 for (i = 0; i < OS_MAX_TASKS; i++) {
\ ??OSProbe_Task_8:
\ 000000C0 4646 MOV R6,R8
\ ??OSProbe_Task_9:
\ 000000C2 3000 MOVS R0,R6
\ 000000C4 1428 CMP R0,#+20
\ 000000C6 B5D2 BCS.N ??OSProbe_Task_3
512 #if (OS_PROBE_USE_FP > 0)
513 OSProbe_TaskCPUUsage[i] = (FP32)(cycles_dif[i] * 100) / cycles_tot;
\ 000000C8 1BEB8001 ADDS R1,R11,R0, LSL #+2
\ 000000CC 02B4 PUSH {R1}
\ 000000CE 55F82000 LDR R0,[R5, R0, LSL #+2]
\ 000000D2 6421 MOVS R1,#+100
\ 000000D4 4843 MULS R0,R1,R0
\ 000000D6 ........ _BLF __ulongToFloat,??__ulongToFloat??rT
\ 000000DA 0700 MOVS R7,R0
\ 000000DC 2000 MOVS R0,R4
\ 000000DE ........ _BLF __ulongToFloat,??__ulongToFloat??rT
\ 000000E2 0100 MOVS R1,R0
\ 000000E4 3800 MOVS R0,R7
\ 000000E6 ........ _BLF __fDiv,??__fDiv??rT
\ 000000EA 02BC POP {R1}
\ 000000EC 8860 STR R0,[R1, #+8]
514 #else
515 OSProbe_TaskCPUUsage[i] = (INT16U)(cycles_dif[i] / max);
516 #endif
517 }
\ 000000EE 761C ADDS R6,R6,#+1
\ 000000F0 B6B2 UXTH R6,R6
\ 000000F2 E6E7 B.N ??OSProbe_Task_9
\ ??OSProbe_Task_0:
\ 000000F4 ........ DC32 OSProbe_TaskStkUsage
\ 000000F8 ........ DC32 ??cycles_tot_last
\ 000000FC ........ DC32 OSTCBTbl
\ 00000100 ........ DC32 ??cycles_dif
518 }
519 }
\ In segment DATA_Z, align 4, align-sorted
\ ??cycles_dif:
\ 00000000 DS8 80
\ In segment DATA_Z, align 4, align-sorted
\ ??cycles_tot_last:
\ 00000000 DS8 80
\ In segment CODE, align 4, keep-with-next
\ ??DataTable2:
\ 00000000 ........ DC32 OSProbe_TmrCntsPrev
\ In segment CODE, align 4, keep-with-next
\ ??DataTable3:
\ 00000000 ........ DC32 OSProbe_Delay
\ In segment DATA_C, align 4, align-sorted
\ `?<Constant "Probe OS PlugIn">`:
\ 00000000 50726F626520 DC8 "Probe OS PlugIn"
\ 4F5320506C75
\ 67496E00
520 #endif
Maximum stack usage in bytes:
Function CSTACK
-------- ------
OSProbe_Init 4
OSProbe_InitOS 28
OSProbe_SetCallback 0
OSProbe_SetDelay 0
OSProbe_Task 40
OSProbe_TaskCreateHook 8
OSProbe_TaskSwHook 4
OSProbe_TickHook 4
OSProbe_TimeGetCycles 12
Segment part sizes:
Function/Label Bytes
-------------- -----
OSProbe_Delay 88
OSProbe_TaskStkUsage 80
OSProbe_TmrCntsPrev 8
OSProbe_TaskStk 512
OSProbe_Init 32
OSProbe_SetCallback 12
OSProbe_SetDelay 6
OSProbe_TimeGetCycles 42
OSProbe_TaskCreateHook 16
OSProbe_TaskSwHook 36
OSProbe_TickHook 8
OSProbe_InitOS 60
OSProbe_Task 260
cycles_dif 80
cycles_tot_last 80
??DataTable2 4
??DataTable3 4
?<Constant "Probe OS PlugIn"> 16
Others 100
568 bytes in segment CODE
16 bytes in segment DATA_C
848 bytes in segment DATA_Z
12 bytes in segment INITTAB
480 bytes of CODE memory (+ 100 bytes shared)
16 bytes of CONST memory
848 bytes of DATA memory
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -