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

📄 os_probe.lst

📁 编译环境是 iar EWARM ,STM32 下的UCOSII
💻 LST
📖 第 1 页 / 共 4 页
字号:
   \   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 + -