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

📄 os_probe.lst

📁 编译环境是 iar EWARM ,STM32 下的UCOSII
💻 LST
📖 第 1 页 / 共 4 页
字号:
   \   00000000   00B5               PUSH     {LR}
    306              INT32U  cycles;
    307          
    308          
    309              cycles                         = OSProbe_TimeGetCycles();   /* This task is done.                                   */
   \   00000002   ........           BL       OSProbe_TimeGetCycles
    310              OSTCBCur->OSTCBCyclesTot      += cycles - OSTCBCur->OSTCBCyclesStart;
   \   00000006   0549               LDR.N    R1,??OSProbe_TaskSwHook_0  ;; OSTCBCur
   \   00000008   0968               LDR      R1,[R1, #+0]
   \   0000000A   CA6B               LDR      R2,[R1, #+60]
   \   0000000C   1218               ADDS     R2,R2,R0
   \   0000000E   0B6C               LDR      R3,[R1, #+64]
   \   00000010   D21A               SUBS     R2,R2,R3
   \   00000012   CA63               STR      R2,[R1, #+60]
    311              OSTCBHighRdy->OSTCBCyclesStart = cycles;                    /* Save absolute #cycles at task activation.            */
   \   00000014   0249               LDR.N    R1,??OSProbe_TaskSwHook_0+0x4  ;; OSTCBHighRdy
   \   00000016   0968               LDR      R1,[R1, #+0]
   \   00000018   0864               STR      R0,[R1, #+64]
    312          }
   \   0000001A   00BD               POP      {PC}             ;; return
   \                     ??OSProbe_TaskSwHook_0:
   \   0000001C   ........           DC32     OSTCBCur
   \   00000020   ........           DC32     OSTCBHighRdy
    313          #endif
    314          
    315          
    316          /*
    317          *********************************************************************************************************
    318          *                                           OSProbe_TickHook()
    319          *
    320          * Description : This function is called every tick.
    321          *
    322          * Argument(s) : none.
    323          *
    324          * Return(s)   : none.
    325          *
    326          * Caller(s)   : App_TimeTickHook().
    327          *
    328          * Note(s)     : (1) Interrupts may or may not be ENABLED during this call.
    329          *
    330          *               (2) This MUST be called from user's time tick hook function App_TimeTickHook().
    331          *********************************************************************************************************
    332          */
    333          
    334          #if (OS_PROBE_HOOKS_EN > 0)

   \                                 In segment CODE, align 4, keep-with-next
    335          void  OSProbe_TickHook (void)
    336          {
   \                     OSProbe_TickHook:
   \   00000000   00B5               PUSH     {LR}
    337              (void)OSProbe_TimeGetCycles();
   \   00000002   ........           BL       OSProbe_TimeGetCycles
    338          }
   \   00000006   00BD               POP      {PC}             ;; return
    339          #endif
    340          
    341          
    342          /*
    343          *********************************************************************************************************
    344          *********************************************************************************************************
    345          *                                             LOCAL FUNCTIONS
    346          *********************************************************************************************************
    347          *********************************************************************************************************
    348          */
    349          
    350          
    351          /*
    352          *********************************************************************************************************
    353          *                                            OSProbe_InitOS()
    354          *
    355          * Description : Create the task for the Probe Plug-In for uC/OS-II.
    356          *
    357          * Argument(s) : none.
    358          *
    359          * Return(s)   : none.
    360          *
    361          * Caller(s)   : OSProbe_Init().
    362          *
    363          * Note(s)     : none.
    364          *********************************************************************************************************
    365          */
    366          
    367          #if (OS_PROBE_TASK > 0)

   \                                 In segment CODE, align 4, keep-with-next
    368          static  void  OSProbe_InitOS (void)
    369          {
   \                     OSProbe_InitOS:
   \   00000000   01B5               PUSH     {R0,LR}
    370              INT8U  err;
    371          
    372          
    373          #if (OS_TASK_CREATE_EXT_EN > 0)
    374              #if (OS_STK_GROWTH == 1)
    375              err = OSTaskCreateExt((void (*)(void *)) OSProbe_Task,
    376                                    (void          * ) 0,
    377                                    (OS_STK        * )&OSProbe_TaskStk[OS_PROBE_TASK_STK_SIZE - 1],
    378                                    (INT8U           ) OS_PROBE_TASK_PRIO,
    379                                    (INT16U          ) OS_PROBE_TASK_PRIO,
    380                                    (OS_STK        * )&OSProbe_TaskStk[0],
    381                                    (INT32U          ) OS_PROBE_TASK_STK_SIZE,
    382                                    (void          * ) 0,
    383                                    (INT16U          )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR));
   \   00000002   0B48               LDR.N    R0,??OSProbe_InitOS_0  ;; OSProbe_TaskStk
   \   00000004   0323               MOVS     R3,#+3
   \   00000006   0022               MOVS     R2,#+0
   \   00000008   8021               MOVS     R1,#+128
   \   0000000A   0FB4               PUSH     {R0-R3}
   \   0000000C   1C21               MOVS     R1,#+28
   \   0000000E   02B4               PUSH     {R1}
   \   00000010   0B46               MOV      R3,R1
   \   00000012   00F2FC12           ADDW     R2,R0,#+508
   \   00000016   0021               MOVS     R1,#+0
   \   00000018   0648               LDR.N    R0,??OSProbe_InitOS_0+0x4  ;; OSProbe_Task
   \   0000001A   ........           _BLF     OSTaskCreateExt,??OSTaskCreateExt??rT
   \   0000001E   8DF81400           STRB     R0,[SP, #+20]
    384              #else
    385              err = OSTaskCreateExt((void (*)(void *)) OSProbe_Task,
    386                                    (void          * ) 0,
    387                                    (OS_STK        * )&OSProbe_TaskStk[0],
    388                                    (INT8U           ) OS_PROBE_TASK_PRIO,
    389                                    (INT16U          ) OS_PROBE_TASK_PRIO,
    390                                    (OS_STK        * )&OSProbe_TaskStk[OS_PROBE_TASK_STK_SIZE - 1],
    391                                    (INT32U          ) OS_PROBE_TASK_STK_SIZE,
    392                                    (void          * ) 0,
    393                                    (INT16U          )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR));
    394              #endif
    395          #else
    396              #if (OS_STK_GROWTH == 1)
    397              err = OSTaskCreate((void (*)(void *)) OSProbe_Task,
    398                                 (void          * ) 0,
    399                                 (OS_STK        * )&OSProbe_TaskStk[OS_PROBE_TASK_STK_SIZE - 1],
    400                                 (INT8U           ) OS_PROBE_TASK_PRIO);
    401              #else
    402              err = OSTaskCreate((void (*)(void *)) OSProbe_Task,
    403                                 (void          * ) 0,
    404                                 (OS_STK        * )&OSProbe_TaskStk[0],
    405                                 (INT8U           ) OS_PROBE_TASK_PRIO);
    406              #endif
    407          #endif
    408          
    409          #if (OS_TASK_NAME_SIZE > 15)
    410              OSTaskNameSet(OS_PROBE_TASK_PRIO, (INT8U *)"Probe OS PlugIn", &err);
   \   00000022   05AA               ADD      R2,SP,#+20
   \   00000024   0449               LDR.N    R1,??OSProbe_InitOS_0+0x8  ;; `?<Constant "Probe OS PlugIn">`
   \   00000026   1C20               MOVS     R0,#+28
   \   00000028   ........           _BLF     OSTaskNameSet,??OSTaskNameSet??rT
    411          #endif
    412          
    413              (void)&err;
    414          }
   \   0000002C   06B0               ADD      SP,SP,#+24
   \   0000002E   00BD               POP      {PC}             ;; return
   \                     ??OSProbe_InitOS_0:
   \   00000030   ........           DC32     OSProbe_TaskStk
   \   00000034   ........           DC32     OSProbe_Task
   \   00000038   ........           DC32     `?<Constant "Probe OS PlugIn">`
    415          #endif
    416          
    417          
    418          /*
    419          *********************************************************************************************************
    420          *                                             OSProbe_Task()
    421          *
    422          * Description : Updates task CPU usage and task stack usage statistics and calls a user-specified
    423          *               callback functions, if the user sets this function.
    424          *
    425          * Argument(s) : p_arg       Argument passed to OSProbe_Task() by 'OSTaskCreate()'.
    426          *
    427          * Return(s)   : none.
    428          *
    429          * Caller(s)   : This is a task.
    430          *
    431          * Note(s)     : none.
    432          *********************************************************************************************************
    433          */
    434          
    435          #if (OS_PROBE_TASK > 0)

   \                                 In segment CODE, align 4, keep-with-next
    436          static  void  OSProbe_Task (void *p_arg)
    437          {
   \                     OSProbe_Task:
   \   00000000   2DE9F04F           PUSH     {R4-R11,LR}
    438                      OS_TCB  *ptcb;
    439                      INT16U   i;
    440                      INT32U   cycles_tot;
    441              static  INT32U   cycles_dif[OS_MAX_TASKS];
    442              static  INT32U   cycles_tot_last[OS_MAX_TASKS];
    443          #if (OS_PROBE_USE_FP == 0)
    444                      INT32U   max;
    445          #endif
    446          
    447          
    448              (void)p_arg;
    449          
    450                                                                          /* Initialize stored CyclesTot values.                  */
    451              for (i = 0; i < OS_MAX_TASKS; i++) {
   \   00000004   0020               MOVS     R0,#+0
   \   00000006   8046               MOV      R8,R0
   \   00000008   4646               MOV      R6,R8
   \   0000000A   3A49               LDR.N    R1,??OSProbe_Task_0  ;; OSProbe_TaskStkUsage
   \   0000000C   09E0               B.N      ??OSProbe_Task_1
    452                  cycles_tot_last[i]      = 0;
   \                     ??OSProbe_Task_2:
   \   0000000E   49F82080           STR      R8,[R9, R0, LSL #+2]
    453                  OSProbe_TaskStkUsage[i] = 0;
   \   00000012   41F820A0           STR      R10,[R1, R0, LSL #+2]
    454                  OSProbe_TaskCPUUsage[i] = 0;
   \   00000016   1BEB8000           ADDS     R0,R11,R0, LSL #+2
   \   0000001A   C0F808A0           STR      R10,[R0, #+8]
    455              }
   \   0000001E   761C               ADDS     R6,R6,#+1
   \   00000020   B6B2               UXTH     R6,R6
   \                     ??OSProbe_Task_1:
   \   00000022   4046               MOV      R0,R8
   \   00000024   8246               MOV      R10,R0
   \   00000026   3448               LDR.N    R0,??OSProbe_Task_0+0x4  ;; ??cycles_tot_last
   \   00000028   8146               MOV      R9,R0
   \   0000002A   ....               LDR.N    R0,??DataTable3  ;; OSProbe_Delay
   \   0000002C   8346               MOV      R11,R0
   \   0000002E   3000               MOVS     R0,R6
   \   00000030   1428               CMP      R0,#+20
   \   00000032   ECD3               BCC.N    ??OSProbe_Task_2
    456          
    457              while (1) {
    458                  OSTimeDlyHMSM(0, 0, 0, OSProbe_Delay);
   \                     ??OSProbe_Task_3:

⌨️ 快捷键说明

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