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

📄 os_probe.txt

📁 ucos2.86版本结合STM板极支持包
💻 TXT
📖 第 1 页 / 共 2 页
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 914] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o.\rvmdk\os_probe.o --depend=.\rvmdk\os_probe.d --device=DARMSTM -O1 -Otime -I. -I..\BSP -I..\..\..\..\..\uCOS-II\Ports\arm-cortex-m3\Generic\RealView -I..\..\..\..\..\uCOS-II\Source -I..\..\..\..\..\CPU\ST\STM32\inc -I..\..\..\..\..\uC-CPU -I..\..\..\..\..\uC-CPU\Arm-Cortex-M3\RealView -I..\..\..\..\..\uC-LIB -I..\..\..\..\..\uC-Probe\Target\Plugins\uCOS-II -I..\..\..\..\..\uC-Probe\Target\Communication\Generic\Source -I..\..\..\..\..\uC-Probe\Target\Communication\Generic\RS-232\Ports\ST\STM32 -I..\..\..\..\..\uC-Probe\Target\Communication\Generic\RS-232\Source -ID:\Keil\ARM\INC\ST\STM32F10x ..\..\..\..\..\uC-Probe\Target\Plugins\uCOS-II\os_probe.c]
                          THUMB

                          AREA ||.text||, CODE, READONLY, ALIGN=2

                  OSProbe_Task PROC
;;;371    static  void  OSProbe_Task (void *p_arg)
;;;372    {
000000  e92de92d          PUSH     {r3-r11,lr}
;;;373                OS_TCB  *ptcb;
;;;374                INT16U   i;
;;;375                INT32U   cycles_tot;
;;;376        static  INT32U   cycles_dif[OS_MAX_TASKS];
;;;377        static  INT32U   cycles_tot_last[OS_MAX_TASKS];
;;;378    
;;;379    
;;;380    
;;;381        (void)p_arg;
;;;382    
;;;383                                                                        /* Initialize stored CyclesTot values                   */
;;;384        for (i = 0; i < OS_MAX_TASKS; i++) {
000004  2000              MOVS     r0,#0
000006  4f62              LDR      r7,|L1.400|
000008  f8dff8df          LDR      r10,|L1.396|
00000c  f04ff04f          MOV      r11,#0
000010  f1a7f1a7          SUB      r1,r7,#0x40
                  |L1.20|
000014  f84af84a          STR      r11,[r10,r0,LSL #2]
000018  f847f847          STR      r11,[r7,r0,LSL #2]
00001c  f841f841          STR      r11,[r1,r0,LSL #2]
000020  1c40              ADDS     r0,r0,#1
000022  b280              UXTH     r0,r0
000024  2810              CMP      r0,#0x10
000026  d3f5              BCC      |L1.20|
;;;385            cycles_tot_last[i]      = 0;
;;;386            OSProbe_TaskStkUsage[i] = 0;
;;;387            OSProbe_TaskCPUUsage[i] = 0;
;;;388        }
;;;389    
;;;390        while (1) {
000028  f8dff8df          LDR      r8,|L1.404|
00002c  f04ff04f          MOV      r9,#0x64
000030  e045              B        |L1.190|
                  |L1.50|
;;;391            OSTimeDlyHMSM(0, 0, 0, OSProbe_Delay);
;;;392            if ((INT32U)OSProbe_CallbackFnct != 0) {
;;;393                OSProbe_CallbackFnct();
000032  4780              BLX      r0
                  |L1.52|
;;;394            }
;;;395    
;;;396                                                                        /* Update task CPU usage                                */
;;;397            i          = 0;
000034  2500              MOVS     r5,#0
;;;398            cycles_tot = 0;
000036  2600              MOVS     r6,#0
;;;399            ptcb       = &OSTCBTbl[0];                                  /*  ... Get pointer to first TCB ...                    */
000038  4c57              LDR      r4,|L1.408|
                  |L1.58|
;;;400            while (i < OS_MAX_TASKS) {
;;;401                if (ptcb == (OS_TCB *)0 || ptcb == (OS_TCB *)1) {
00003a  2c00              CMP      r4,#0
00003c  d02a              BEQ      |L1.148|
00003e  2c01              CMP      r4,#1
000040  d028              BEQ      |L1.148|
;;;402                    break;                                              /*  ... If ptcb is NULL, then last TCB reached ...      */
;;;403                }
;;;404    
;;;405                                                                        /*  ... Calculate new CyclesDif, the number of cycles   */
;;;406                                                                        /*  ... used by the task since the last reading.  Half  */
;;;407                                                                        /*  ... the previous value is added to provide some     */
;;;408                                                                        /*  ... hysteresis, thereby reducing the natural        */
;;;409                                                                        /*  ... "jitter" in the data.                           */
;;;410                cycles_dif[i]       = (ptcb->OSTCBCyclesTot - cycles_tot_last[i]) / 2 + (cycles_dif[i] / 2);
000042  f85af85a          LDR      r1,[r10,r5,LSL #2]
000046  6ba0              LDR      r0,[r4,#0x38]
000048  1a40              SUBS     r0,r0,r1
00004a  f858f858          LDR      r1,[r8,r5,LSL #2]
00004e  0840              LSRS     r0,r0,#1
000050  eb00eb00          ADD      r0,r0,r1,LSR #1
000054  f848f848          STR      r0,[r8,r5,LSL #2]
;;;411                cycles_tot_last[i]  = ptcb->OSTCBCyclesTot;
000058  6ba1              LDR      r1,[r4,#0x38]
00005a  f84af84a          STR      r1,[r10,r5,LSL #2]
;;;412                cycles_tot         += cycles_dif[i];
00005e  4406              ADD      r6,r6,r0
;;;413    
;;;414                if (ptcb->OSTCBStkSize == 0) {
000060  68e0              LDR      r0,[r4,#0xc]
000062  b910              CBNZ     r0,|L1.106|
;;;415                    OSProbe_TaskStkUsage[i] = 0;
000064  f847f847          STR      r11,[r7,r5,LSL #2]
000068  e00f              B        |L1.138|
                  |L1.106|
;;;416                } else {
;;;417    #if OS_STK_GROWTH == 1
;;;418                    OSProbe_TaskStkUsage[i] = (FP32)(((INT32U)(ptcb->OSTCBStkBase) - (INT32U)(ptcb->OSTCBStkPtr)) * 100)
00006a  0080              LSLS     r0,r0,#2
00006c  f7fff7ff          BL       __aeabi_ui2f
000070  9000              STR      r0,[sp,#0]
000072  6821              LDR      r1,[r4,#0]
000074  6c20              LDR      r0,[r4,#0x40]
000076  1a40              SUBS     r0,r0,r1
000078  fb00fb00          MUL      r0,r0,r9
00007c  f7fff7ff          BL       __aeabi_ui2f
000080  9900              LDR      r1,[sp,#0]
000082  f7fff7ff          BL       __aeabi_fdiv
000086  f847f847          STR      r0,[r7,r5,LSL #2]
                  |L1.138|
;;;419                                            / ((ptcb->OSTCBStkSize) * sizeof (OS_STK));
;;;420    #else
;;;421                    OSProbe_TaskStkUsage[i] = (FP32)(((INT32U)(ptcb->OSTCBStkPtr) - (INT32U)(ptcb->OSTCBStkBase)) * 100)
;;;422                                            / ((ptcb->OSTCBStkSize) * sizeof (OS_STK));
;;;423    #endif
;;;424                }
;;;425    
;;;426                ptcb = ptcb->OSTCBPrev;
00008a  69a4              LDR      r4,[r4,#0x18]
00008c  1c68              ADDS     r0,r5,#1
;;;427    
;;;428                i++;
00008e  b285              UXTH     r5,r0
000090  2d10              CMP      r5,#0x10
000092  d3d2              BCC      |L1.58|
                  |L1.148|
000094  2400              MOVS     r4,#0
000096  4d41              LDR      r5,|L1.412|
000098  4630              MOV      r0,r6
00009a  f7fff7ff          BL       __aeabi_ui2f
;;;429            }
;;;430                                                                        /*  ... For each task, calculate percent CPU usage.     */
;;;431            for (i = 0; i < OS_MAX_TASKS; i++) {
00009e  4606              MOV      r6,r0
                  |L1.160|
0000a0  f858f858          LDR      r0,[r8,r4,LSL #2]
0000a4  fb00fb00          MUL      r0,r0,r9
0000a8  f7fff7ff          BL       __aeabi_ui2f
0000ac  4631              MOV      r1,r6
0000ae  f7fff7ff          BL       __aeabi_fdiv
0000b2  f845f845          STR      r0,[r5,r4,LSL #2]
0000b6  1c60              ADDS     r0,r4,#1
0000b8  b284              UXTH     r4,r0
0000ba  2c10              CMP      r4,#0x10
0000bc  d3f0              BCC      |L1.160|
                  |L1.190|
0000be  4c38              LDR      r4,|L1.416|
0000c0  2200              MOVS     r2,#0
0000c2  8823              LDRH     r3,[r4,#0]  ; OSProbe_Delay
0000c4  4611              MOV      r1,r2
0000c6  4610              MOV      r0,r2
0000c8  f7fff7ff          BL       OSTimeDlyHMSM
0000cc  6860              LDR      r0,[r4,#4]  ; OSProbe_CallbackFnct
0000ce  2800              CMP      r0,#0
0000d0  d0b0              BEQ      |L1.52|
0000d2  e7ae              B        |L1.50|
;;;432                OSProbe_TaskCPUUsage[i] = (FP32)(cycles_dif[i] * 100) / cycles_tot;
;;;433            }
;;;434        }
;;;435    }
;;;436    #endif
                          ENDP

                  OSProbe_InitOS PROC
;;;143    static  void  OSProbe_InitOS (void)
;;;144    {
0000d4  b500              PUSH     {lr}
0000d6  b087              SUB      sp,sp,#0x1c
;;;145    #if OS_TASK_NAME_SIZE > 12
;;;146        INT8U  err;
;;;147    #endif
;;;148    
;;;149    
;;;150    #if OS_TASK_CREATE_EXT_EN > 0
;;;151        #if OS_STK_GROWTH == 1
;;;152        (void)OSTaskCreateExt(OSProbe_Task,
0000d8  2303              MOVS     r3,#3
0000da  2200              MOVS     r2,#0
0000dc  e9cde9cd          STRD     r2,r3,[sp,#0xc]
0000e0  f44ff44f          MOV      r1,#0x100
0000e4  482f              LDR      r0,|L1.420|
0000e6  9102              STR      r1,[sp,#8]
0000e8  2308              MOVS     r3,#8
0000ea  9001              STR      r0,[sp,#4]
0000ec  f500f500          ADD      r2,r0,#0x3fc
0000f0  2100              MOVS     r1,#0
0000f2  f2aff2af          ADR      r0,OSProbe_Task + 1
0000f6  9300              STR      r3,[sp,#0]
0000f8  f7fff7ff          BL       OSTaskCreateExt
;;;153                              (void *)0,                                    /* No arguments passed to OSProbe_Task()            */
;;;154                              &OSProbe_TaskStk[OS_PROBE_TASK_STK_SIZE - 1], /* Set Top-Of-Stack                                 */
;;;155                              OS_PROBE_TASK_PRIO,                           /* Lowest priority level                            */
;;;156                              OS_PROBE_TASK_ID,
;;;157                              &OSProbe_TaskStk[0],                          /* Set Bottom-Of-Stack                              */
;;;158                              OS_PROBE_TASK_STK_SIZE,
;;;159                              (void *)0,                                    /* No TCB extension                                 */
;;;160                              OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);   /* Enable stack checking + clear stack              */
;;;161        #else
;;;162        (void)OSTaskCreateExt(OSProbe_Task,
;;;163                              (void *)0,                                    /* No arguments passed to OSProbe_Task()            */
;;;164                              &OSProbe_TaskStk[0],                          /* Set Top-Of-Stack                                 */
;;;165                              OS_PROBE_TASK_PRIO,                           /* Lowest priority level                            */
;;;166                              OS_PROBE_TASK_ID,
;;;167                              &OSProbe_TaskStk[OS_PROBE_TASK_STK_SIZE - 1], /* Set Bottom-Of-Stack                              */
;;;168                              OS_PROBE_TASK_STK_SIZE,
;;;169                              (void *)0,                                    /* No TCB extension                                 */
;;;170                              OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);   /* Enable stack checking + clear stack              */
;;;171        #endif
;;;172    #else
;;;173        #if OS_STK_GROWTH == 1
;;;174        (void)OSTaskCreate(OSProbe_Task,
;;;175                           (void *)0,
;;;176                           &OSProbe_TaskStk[OS_PROBE_TASK_STK_SIZE - 1],
;;;177                           OS_PROBE_TASK_PRIO);
;;;178        #else
;;;179        (void)OSTaskCreate(OSProbe_Task,
;;;180                           (void *)0,
;;;181                           &OSProbe_TaskStk[0],
;;;182                           OS_PROBE_TASK_PRIO);
;;;183        #endif
;;;184    #endif
;;;185    

⌨️ 快捷键说明

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