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

📄 os_core.txt

📁 ucos2 is a file system for embedded applications which can be used on any media, for which you can p
💻 TXT
📖 第 1 页 / 共 5 页
字号:
;;;1414       INT8S      usage;
;;;1415   #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
;;;1416       OS_CPU_SR  cpu_sr = 0;
;;;1417   #endif
;;;1418   
;;;1419   
;;;1420   
;;;1421       p_arg = p_arg;                               /* Prevent compiler warning for not using 'parg'      */
;;;1422       while (OSStatRdy == OS_FALSE) {
0001c8  ea000001          B        |L1.468|
                  |L1.460|
;;;1423           OSTimeDly(2 * OS_TICKS_PER_SEC / 10);    /* Wait until statistic task is ready                 */
0001cc  e3a00014          MOV      r0,#0x14
0001d0  ebfffffe          BL       OSTimeDly
                  |L1.468|
0001d4  e5d40001          LDRB     r0,[r4,#1]            ;1422  ; OSStatRdy
0001d8  e3500000          CMP      r0,#0                 ;1422
0001dc  0afffffa          BEQ      |L1.460|
;;;1424       }
;;;1425       max = OSIdleCtrMax / 100L;
0001e0  e5940014          LDR      r0,[r4,#0x14]  ; OSIdleCtrMax
0001e4  e3a01064          MOV      r1,#0x64
0001e8  ebfffffe          BL       __aeabi_uidivmod
0001ec  e1a06000          MOV      r6,r0
0001f0  e3a05000          MOV      r5,#0
                  |L1.500|
;;;1426       for (;;) {
;;;1427           OS_ENTER_CRITICAL();
0001f4  ebfffffe          BL       OS_CPU_SR_Save
;;;1428           OSIdleCtrRun = OSIdleCtr;                /* Obtain the of the idle counter for the past second */
0001f8  e5941020          LDR      r1,[r4,#0x20]  ; OSIdleCtr
;;;1429           run          = OSIdleCtr;
0001fc  e5841018          STR      r1,[r4,#0x18]  ; OSIdleCtrRun
000200  e5947020          LDR      r7,[r4,#0x20]  ; OSIdleCtr
;;;1430           OSIdleCtr    = 0L;                       /* Reset the idle counter for the next second         */
000204  e5845020          STR      r5,[r4,#0x20]  ; OSIdleCtr
;;;1431           OS_EXIT_CRITICAL();
000208  ebfffffe          BL       OS_CPU_SR_Restore
;;;1432           if (max > 0L) {
00020c  e3560000          CMP      r6,#0
000210  0a000008          BEQ      |L1.568|
;;;1433               usage = (INT8S)(100L - run / max);
000214  e1a01006          MOV      r1,r6
000218  e1a00007          MOV      r0,r7
00021c  ebfffffe          BL       __aeabi_uidivmod
000220  e2600064          RSB      r0,r0,#0x64
000224  e1a00c00          LSL      r0,r0,#24
000228  e1b00c40          ASRS     r0,r0,#24
;;;1434               if (usage >= 0) {                    /* Make sure we don't have a negative percentage      */
;;;1435                   OSCPUUsage = usage;
;;;1436               } else {
;;;1437                   OSCPUUsage = 0;
00022c  45c45000          STRBMI   r5,[r4,#0]  ; OSCPUUsage
000230  55c40000          STRBPL   r0,[r4,#0]            ;1435  ; OSCPUUsage
000234  ea000004          B        |L1.588|
                  |L1.568|
;;;1438               }
;;;1439           } else {
;;;1440               OSCPUUsage = 0;
000238  e5c45000          STRB     r5,[r4,#0]  ; OSCPUUsage
;;;1441               max        = OSIdleCtrMax / 100L;
00023c  e5940014          LDR      r0,[r4,#0x14]  ; OSIdleCtrMax
000240  e3a01064          MOV      r1,#0x64
000244  ebfffffe          BL       __aeabi_uidivmod
000248  e1a06000          MOV      r6,r0
                  |L1.588|
;;;1442           }
;;;1443           OSTaskStatHook();                        /* Invoke user definable hook                         */
00024c  ebfffffe          BL       OSTaskStatHook
;;;1444   #if (OS_TASK_STAT_STK_CHK_EN > 0) && (OS_TASK_CREATE_EXT_EN > 0)
;;;1445           OS_TaskStatStkChk();                     /* Check the stacks for each task                     */
000250  ebfffffe          BL       OS_TaskStatStkChk
;;;1446   #endif
;;;1447           OSTimeDly(OS_TICKS_PER_SEC / 10);        /* Accumulate OSIdleCtr for the next 1/10 second      */
000254  e3a0000a          MOV      r0,#0xa
000258  ebfffffe          BL       OSTimeDly
00025c  eaffffe4          B        |L1.500|
;;;1448       }
;;;1449   }
;;;1450   #endif
                          ENDP

                  OS_TaskIdle PROC
;;;1368   void  OS_TaskIdle (void *p_arg)
;;;1369   {
000260  e92d4010          PUSH     {r4,lr}
000264  e59f4364          LDR      r4,|L1.1488|
                  |L1.616|
;;;1370   #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
;;;1371       OS_CPU_SR  cpu_sr = 0;
;;;1372   #endif
;;;1373   
;;;1374   
;;;1375   
;;;1376       (void)p_arg;                                 /* Prevent compiler warning for not using 'parg'      */
;;;1377       for (;;) {
;;;1378           OS_ENTER_CRITICAL();
000268  ebfffffe          BL       OS_CPU_SR_Save
;;;1379           OSIdleCtr++;
00026c  e5941020          LDR      r1,[r4,#0x20]  ; OSIdleCtr
000270  e2811001          ADD      r1,r1,#1
000274  e5841020          STR      r1,[r4,#0x20]  ; OSIdleCtr
;;;1380           OS_EXIT_CRITICAL();
000278  ebfffffe          BL       OS_CPU_SR_Restore
;;;1381           OSTaskIdleHook();                        /* Call user definable HOOK                           */
00027c  ebfffffe          BL       OSTaskIdleHook
000280  eafffff8          B        |L1.616|
;;;1382       }
;;;1383   }
;;;1384   /*$PAGE*/
                          ENDP

                  OS_MemClr PROC
000284  e3a02000          MOV      r2,#0                 ;0
                  |L1.648|
000288  e3510000          CMP      r1,#0                 ;0
00028c  12411001          SUBNE    r1,r1,#1              ;0
000290  11a01801          LSLNE    r1,r1,#16             ;0
000294  11a01821          LSRNE    r1,r1,#16             ;0
000298  14c02001          STRBNE   r2,[r0],#1            ;0
00029c  1afffff9          BNE      |L1.648|
0002a0  e12fff1e          BX       lr                    ;0
                          ENDP

                  OSInit PROC
;;;246    void  OSInit (void)
;;;247    {
0002a4  e92d4010          PUSH     {r4,lr}
0002a8  e24dd018          SUB      sp,sp,#0x18
;;;248        OSInitHookBegin();                                           /* Call port specific initialization code   */
0002ac  ebfffffe          BL       OSInitHookBegin
0002b0  e59fc318          LDR      r12,|L1.1488|
0002b4  e3a03000          MOV      r3,#0
0002b8  e58c3034          STR      r3,[r12,#0x34]  ; OSTime
0002bc  e5cc3002          STRB     r3,[r12,#2]  ; OSIntNesting
0002c0  e5cc3003          STRB     r3,[r12,#3]  ; OSLockNesting
0002c4  e5cc3008          STRB     r3,[r12,#8]  ; OSTaskCtr
0002c8  e5cc3007          STRB     r3,[r12,#7]  ; OSRunning
0002cc  e58c300c          STR      r3,[r12,#0xc]  ; OSCtxSwCtr
0002d0  e58c3020          STR      r3,[r12,#0x20]  ; OSIdleCtr
0002d4  e58c3018          STR      r3,[r12,#0x18]  ; OSIdleCtrRun
0002d8  e58c3014          STR      r3,[r12,#0x14]  ; OSIdleCtrMax
0002dc  e5cc3001          STRB     r3,[r12,#1]  ; OSStatRdy
0002e0  e28c101c          ADD      r1,r12,#0x1c
0002e4  e1a00003          MOV      r0,r3
0002e8  e5cc3006          STRB     r3,[r12,#6]  ; OSRdyGrp
                  |L1.748|
0002ec  e2800001          ADD      r0,r0,#1
0002f0  e20000ff          AND      r0,r0,#0xff
0002f4  e3500004          CMP      r0,#4
0002f8  e4c13001          STRB     r3,[r1],#1
0002fc  3afffffa          BCC      |L1.748|
000300  e5cc3004          STRB     r3,[r12,#4]  ; OSPrioCur
000304  e5cc3005          STRB     r3,[r12,#5]  ; OSPrioHighRdy
000308  e58c302c          STR      r3,[r12,#0x2c]  ; OSTCBHighRdy
00030c  e59f02c4          LDR      r0,|L1.1496|
000310  e3a01e63          MOV      r1,#0x630
000314  e58c3024          STR      r3,[r12,#0x24]  ; OSTCBCur
000318  ebfffffe          BL       OS_MemClr
00031c  e59f02b0          LDR      r0,|L1.1492|
000320  e3a01080          MOV      r1,#0x80
000324  ebfffffe          BL       OS_MemClr
000328  e59f02a8          LDR      r0,|L1.1496|
00032c  e3a01000          MOV      r1,#0
000330  e280e000          ADD      lr,r0,#0
000334  e28e2058          ADD      r2,lr,#0x58
000338  e3a0403f          MOV      r4,#0x3f
                  |L1.828|
00033c  e5802014          STR      r2,[r0,#0x14]
000340  e2811001          ADD      r1,r1,#1
000344  e5c04048          STRB     r4,[r0,#0x48]
000348  e20110ff          AND      r1,r1,#0xff
00034c  e5c03049          STRB     r3,[r0,#0x49]
000350  e3510011          CMP      r1,#0x11
000354  e2800058          ADD      r0,r0,#0x58
000358  e2822058          ADD      r2,r2,#0x58
00035c  3afffff6          BCC      |L1.828|
000360  e5803014          STR      r3,[r0,#0x14]
000364  e5c04048          STRB     r4,[r0,#0x48]
000368  e5c03049          STRB     r3,[r0,#0x49]
00036c  e58c3030          STR      r3,[r12,#0x30]  ; OSTCBList, OSTCBFreeList
000370  e59f0264          LDR      r0,|L1.1500|
000374  e3a01d05          MOV      r1,#0x140
000378  e58ce028          STR      lr,[r12,#0x28]
00037c  ebfffffe          BL       OS_MemClr
000380  e59f0254          LDR      r0,|L1.1500|
000384  e3a02000          MOV      r2,#0
000388  e280e000          ADD      lr,r0,#0
00038c  e28e1020          ADD      r1,lr,#0x20
                  |L1.912|
000390  e5c03000          STRB     r3,[r0,#0]
000394  e5801004          STR      r1,[r0,#4]
000398  e2822001          ADD      r2,r2,#1
00039c  e5c0400f          STRB     r4,[r0,#0xf]
0003a0  e3c22801          BIC      r2,r2,#0x10000
0003a4  e5c03010          STRB     r3,[r0,#0x10]
0003a8  e3520009          CMP      r2,#9
0003ac  e2800020          ADD      r0,r0,#0x20
0003b0  e2811020          ADD      r1,r1,#0x20
0003b4  3afffff5          BCC      |L1.912|
0003b8  e5c03000          STRB     r3,[r0,#0]
0003bc  e5803004          STR      r3,[r0,#4]
0003c0  e5c0400f          STRB     r4,[r0,#0xf]
0003c4  e5c03010          STRB     r3,[r0,#0x10]
0003c8  e58ce010          STR      lr,[r12,#0x10]  ; OSEventFreeList
;;;249    
;;;250        OS_InitMisc();                                               /* Initialize miscellaneous variables       */
;;;251    
;;;252        OS_InitRdyList();                                            /* Initialize the Ready List                */
;;;253    
;;;254        OS_InitTCBList();                                            /* Initialize the free list of OS_TCBs      */
;;;255    
;;;256        OS_InitEventList();                                          /* Initialize the free list of OS_EVENTs    */
;;;257    
;;;258    #if (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0)
;;;259        OS_FlagInit();                                               /* Initialize the event flag structures     */
0003cc  ebfffffe          BL       OS_FlagInit
;;;260    #endif
;;;261    
;;;262    #if (OS_MEM_EN > 0) && (OS_MAX_MEM_PART > 0)
;;;263        OS_MemInit();                                                /* Initialize the memory manager            */
0003d0  ebfffffe          BL       OS_MemInit
;;;264    #endif
;;;265    
;;;266    #if (OS_Q_EN > 0) && (OS_MAX_QS > 0)
;;;267        OS_QInit();                                                  /* Initialize the message queue structures  */
0003d4  ebfffffe          BL       OS_QInit
0003d8  e59f0200          LDR      r0,|L1.1504|
0003dc  e3a03003          MOV      r3,#3
0003e0  e3a02000          MOV      r2,#0
0003e4  e3a01080          MOV      r1,#0x80
0003e8  e98d000f          STMIB    sp,{r0-r3}
0003ec  e59f31f0          LDR      r3,|L1.1508|
0003f0  e2802f7f          ADD      r2,r0,#0x1fc
0003f4  e58d3000          STR      r3,[sp,#0]
0003f8  e3a0301f          MOV      r3,#0x1f
0003fc  e3a01000          MOV      r1,#0
000400  e24f0f6a          ADR      r0,OS_TaskIdle
000404  ebfffffe          BL       OSTaskCreateExt
000408  e28d2014          ADD      r2,sp,#0x14
00040c  e28f1f75          ADR      r1,|L1.1512|
000410  e3a0001f          MOV      r0,#0x1f
000414  ebfffffe          BL       OSTaskNameSet
000418  e59f01d8          LDR      r0,|L1.1528|
00041c  e3a03003          MOV      r3,#3
000420  e3a02000          MOV      r2,#0
000424  e3a01080          MOV      r1,#0x80
000428  e98d000f          STMIB    sp,{r0-r3}
00042c  e59f31c8          LDR      r3,|L1.1532|
000430  e2802f7f          ADD      r2,r0,#0x1fc
000434  e58d3000          STR      r3,[sp,#0]
000438  e3a0301e          MOV      r3,#0x1e
00043c  e3a01000          MOV      r1,#0
000440  e24f0fa2          ADR      r0,OS_TaskStat
000444  ebfffffe          BL       OSTaskCreateExt
000448  e28d2014          ADD      r2,sp,#0x14
00044c  e28f1f6b          ADR      r1,|L1.1536|
000450  e3a0001e          MOV      r0,#0x1e
000454  ebfffffe          BL       OSTaskNameSet
;;;268    #endif
;;;269    
;;;270        OS_InitTaskIdle();                                           /* Create the Idle Task                     */
;;;271    #if OS_TASK_STAT_EN > 0
;;;272        OS_InitTaskStat();                                           /* Create the Statistic Task                */
;;;273    #endif
;;;274    
;;;275    #if OS_TMR_EN > 0
;;;276        OSTmr_Init();                                                /* Initialize the Timer Manager             */
000458  ebfffffe          BL       OSTmr_Init
;;;277    #endif

⌨️ 快捷键说明

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