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

📄 os_core.txt

📁 uc/os在lpc2100系列的KEIL模板 uc/os在lpc2100系列的real view模板 uc/os在lpc210X系列的real view模板
💻 TXT
📖 第 1 页 / 共 5 页
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 934] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o.\rvmdk\os_core.o --depend=.\rvmdk\os_core.d --device=DARMP --apcs=interwork -O1 -I. -I..\BSP -I..\..\..\..\uCOS-II\Ports\ARM\Generic\RealView -I..\..\..\..\uCOS-II\Source -I..\..\..\..\uC-CPU -I..\..\..\..\uC-CPU\ARM\RealView -I..\..\..\..\uC-LIB -I..\..\..\..\uC-TCPIP\IF -I..\..\..\..\uC-TCPIP\IF\Ether -I..\..\..\..\uC-TCPIP\NIC\ETHER\LPC2378 -I..\..\..\..\uC-TCPIP\NIC\ETHER\PHY -I..\..\..\..\uC-TCPIP\NIC\ETHER\PHY\DP83848 -I..\..\..\..\uC-TCPIP\OS\uCOS-II -I..\..\..\..\uC-TCPIP\Source -I..\..\..\..\uC-LCD\Source -I..\..\..\..\uC-Probe\Target\Communication\Generic\Source -I..\..\..\..\uC-Probe\Target\Communication\Generic\RS-232\Source -I..\..\..\..\uC-Probe\Target\Communication\Generic\TCPIP\Source -I..\..\..\..\uC-Probe\Target\Plugins\uCOS-II -Ie:\Keil_ARM\ARM\INC\Philips -D__IN_CHIP --omf_browse=.\rvmdk\os_core.crf ..\Source\OS_CORE.C]
                          ARM

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

                  OS_TaskStat PROC
;;;954    void  OS_TaskStat (void *pdata)
;;;955    {
000000  e92d41f0          PUSH     {r4-r8,lr}
000004  e59f4850          LDR      r4,|L1.2140|
;;;956    #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
;;;957        OS_CPU_SR  cpu_sr;
;;;958    #endif    
;;;959        INT32U     run;
;;;960        INT32U     max;
;;;961        INT8S      usage;
;;;962    
;;;963    
;;;964        pdata = pdata;                               /* Prevent compiler warning for not using 'pdata'     */
;;;965        while (OSStatRdy == FALSE) {
000008  ea000001          B        |L1.20|
                  |L1.12|
;;;966            OSTimeDly(2 * OS_TICKS_PER_SEC);         /* Wait until statistic task is ready                 */
00000c  e3a00e19          MOV      r0,#0x190
000010  ebfffffe          BL       OSTimeDly
                  |L1.20|
000014  e5d40001          LDRB     r0,[r4,#1]            ;965  ; OSStatRdy
000018  e3500000          CMP      r0,#0                 ;965
00001c  0afffffa          BEQ      |L1.12|
;;;967        }
;;;968        max = OSIdleCtrMax / 100L;
000020  e5940014          LDR      r0,[r4,#0x14]  ; OSIdleCtrMax
000024  e3a01064          MOV      r1,#0x64
000028  ebfffffe          BL       __aeabi_uidivmod
00002c  e1a06000          MOV      r6,r0
;;;969        for (;;) {
000030  e3a05000          MOV      r5,#0
                  |L1.52|
;;;970            OS_ENTER_CRITICAL();
000034  ef000002          SVC      #0x2
;;;971            OSIdleCtrRun = OSIdleCtr;                /* Obtain the of the idle counter for the past second */
000038  e594001c          LDR      r0,[r4,#0x1c]  ; OSIdleCtr
00003c  e5840018          STR      r0,[r4,#0x18]  ; OSIdleCtrRun
;;;972            run          = OSIdleCtr;
000040  e594701c          LDR      r7,[r4,#0x1c]  ; OSIdleCtr
;;;973            OSIdleCtr    = 0L;                       /* Reset the idle counter for the next second         */
000044  e584501c          STR      r5,[r4,#0x1c]  ; OSIdleCtr
;;;974            OS_EXIT_CRITICAL();
000048  ef000003          SVC      #0x3
;;;975            if (max > 0L) {
00004c  e3560000          CMP      r6,#0
000050  0a00000b          BEQ      |L1.132|
;;;976                usage = (INT8S)(100L - run / max);
000054  e1a01006          MOV      r1,r6
000058  e1a00007          MOV      r0,r7
00005c  ebfffffe          BL       __aeabi_uidivmod
000060  e2600064          RSB      r0,r0,#0x64
000064  e1a01c00          LSL      r1,r0,#24
000068  e1a01c41          ASR      r1,r1,#24
;;;977                if (usage >= 0) {                    /* Make sure we don't have a negative percentage      */
00006c  e3510000          CMP      r1,#0
000070  ba000001          BLT      |L1.124|
;;;978                    OSCPUUsage = usage;
000074  e5c41000          STRB     r1,[r4,#0]  ; OSCPUUsage
000078  ea000006          B        |L1.152|
                  |L1.124|
;;;979                } else {
;;;980                    OSCPUUsage = 0;
00007c  e5c45000          STRB     r5,[r4,#0]  ; OSCPUUsage
000080  ea000004          B        |L1.152|
                  |L1.132|
;;;981                }
;;;982            } else {
;;;983                OSCPUUsage = 0;
000084  e5c45000          STRB     r5,[r4,#0]  ; OSCPUUsage
;;;984                max        = OSIdleCtrMax / 100L;
000088  e5940014          LDR      r0,[r4,#0x14]  ; OSIdleCtrMax
00008c  e3a01064          MOV      r1,#0x64
000090  ebfffffe          BL       __aeabi_uidivmod
000094  e1a06000          MOV      r6,r0
                  |L1.152|
;;;985            }
;;;986            OSTaskStatHook();                        /* Invoke user definable hook                         */
000098  ebfffffe          BL       OSTaskStatHook
;;;987            OSTimeDly(OS_TICKS_PER_SEC);             /* Accumulate OSIdleCtr for the next second           */
00009c  e3a000c8          MOV      r0,#0xc8
0000a0  ebfffffe          BL       OSTimeDly
0000a4  eaffffe2          B        |L1.52|
;;;988        }
;;;989    }
;;;990    #endif
                          ENDP

                  OS_InitTaskStat PROC
;;;777    static  void  OS_InitTaskStat (void)
;;;778    {
0000a8  e52de004          PUSH     {lr}
0000ac  e24dd014          SUB      sp,sp,#0x14
;;;779    #if OS_TASK_CREATE_EXT_EN > 0
;;;780        #if OS_STK_GROWTH == 1
;;;781        (void)OSTaskCreateExt(OS_TaskStat,
0000b0  e59f07a8          LDR      r0,|L1.2144|
0000b4  e3a03003          MOV      r3,#3
0000b8  e3a02000          MOV      r2,#0
0000bc  e3a01c02          MOV      r1,#0x200
0000c0  e98d000f          STMIB    sp,{r0-r3}
0000c4  e59f3798          LDR      r3,|L1.2148|
0000c8  e59f2798          LDR      r2,|L1.2152|
0000cc  e58d3000          STR      r3,[sp,#0]
0000d0  e3a0300b          MOV      r3,#0xb
0000d4  e3a01000          MOV      r1,#0
0000d8  e24f00e0          ADR      r0,OS_TaskStat
0000dc  ebfffffe          BL       OSTaskCreateExt
;;;782                              (void *)0,                                   /* No args passed to OS_TaskStat()*/
;;;783                              &OSTaskStatStk[OS_TASK_STAT_STK_SIZE - 1],   /* Set Top-Of-Stack               */
;;;784                              OS_STAT_PRIO,                                /* One higher than the idle task  */
;;;785                              OS_TASK_STAT_ID,
;;;786                              &OSTaskStatStk[0],                           /* Set Bottom-Of-Stack            */
;;;787                              OS_TASK_STAT_STK_SIZE,
;;;788                              (void *)0,                                   /* No TCB extension               */
;;;789                              OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);  /* Enable stack checking + clear  */
;;;790        #else
;;;791        (void)OSTaskCreateExt(OS_TaskStat,
;;;792                              (void *)0,                                   /* No args passed to OS_TaskStat()*/
;;;793                              &OSTaskStatStk[0],                           /* Set Top-Of-Stack               */
;;;794                              OS_STAT_PRIO,                                /* One higher than the idle task  */
;;;795                              OS_TASK_STAT_ID,
;;;796                              &OSTaskStatStk[OS_TASK_STAT_STK_SIZE - 1],   /* Set Bottom-Of-Stack            */
;;;797                              OS_TASK_STAT_STK_SIZE,
;;;798                              (void *)0,                                   /* No TCB extension               */
;;;799                              OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);  /* Enable stack checking + clear  */
;;;800        #endif
;;;801    #else
;;;802        #if OS_STK_GROWTH == 1
;;;803        (void)OSTaskCreate(OS_TaskStat,
;;;804                           (void *)0,                                      /* No args passed to OS_TaskStat()*/
;;;805                           &OSTaskStatStk[OS_TASK_STAT_STK_SIZE - 1],      /* Set Top-Of-Stack               */
;;;806                           OS_STAT_PRIO);                                  /* One higher than the idle task  */
;;;807        #else
;;;808        (void)OSTaskCreate(OS_TaskStat,
;;;809                           (void *)0,                                      /* No args passed to OS_TaskStat()*/
;;;810                           &OSTaskStatStk[0],                              /* Set Top-Of-Stack               */
;;;811                           OS_STAT_PRIO);                                  /* One higher than the idle task  */
;;;812        #endif
;;;813    #endif
;;;814    }
0000e0  e28dd014          ADD      sp,sp,#0x14
0000e4  e49de004          POP      {lr}
0000e8  e12fff1e          BX       lr
;;;815    #endif
                          ENDP

                  OS_TaskIdle PROC
;;;911    void  OS_TaskIdle (void *pdata)
;;;912    {
0000ec  e92d4010          PUSH     {r4,lr}
;;;913    #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
;;;914        OS_CPU_SR  cpu_sr;
;;;915    #endif    
;;;916        
;;;917        
;;;918        pdata = pdata;                               /* Prevent compiler warning for not using 'pdata'     */
;;;919        for (;;) {
0000f0  e59f4764          LDR      r4,|L1.2140|
                  |L1.244|
;;;920            OS_ENTER_CRITICAL();
0000f4  ef000002          SVC      #0x2
;;;921            OSIdleCtr++;
0000f8  e594001c          LDR      r0,[r4,#0x1c]  ; OSIdleCtr
0000fc  e2800001          ADD      r0,r0,#1
000100  e584001c          STR      r0,[r4,#0x1c]  ; OSIdleCtr
;;;922            OS_EXIT_CRITICAL();
000104  ef000003          SVC      #0x3
;;;923            OSTaskIdleHook();                        /* Call user definable HOOK                           */
000108  ebfffffe          BL       OSTaskIdleHook
00010c  eafffff8          B        |L1.244|
;;;924        }
;;;925    }
;;;926    /*$PAGE*/
                          ENDP

                  OS_InitTaskIdle PROC
;;;724    static  void  OS_InitTaskIdle (void)
;;;725    {
000110  e52de004          PUSH     {lr}
000114  e24dd014          SUB      sp,sp,#0x14
;;;726    #if OS_TASK_CREATE_EXT_EN > 0
;;;727        #if OS_STK_GROWTH == 1
;;;728        (void)OSTaskCreateExt(OS_TaskIdle,
000118  e59f074c          LDR      r0,|L1.2156|
00011c  e3a03003          MOV      r3,#3
000120  e3a02000          MOV      r2,#0
000124  e3a01c02          MOV      r1,#0x200
000128  e98d000f          STMIB    sp,{r0-r3}
00012c  e59f373c          LDR      r3,|L1.2160|
000130  e59f273c          LDR      r2,|L1.2164|
000134  e58d3000          STR      r3,[sp,#0]
000138  e3a0300c          MOV      r3,#0xc
00013c  e3a01000          MOV      r1,#0
000140  e24f005c          ADR      r0,OS_TaskIdle
000144  ebfffffe          BL       OSTaskCreateExt
;;;729                              (void *)0,                                 /* No arguments passed to OS_TaskIdle() */
;;;730                              &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1], /* Set Top-Of-Stack                     */
;;;731                              OS_IDLE_PRIO,                              /* Lowest priority level                */
;;;732                              OS_TASK_IDLE_ID,
;;;733                              &OSTaskIdleStk[0],                         /* Set Bottom-Of-Stack                  */
;;;734                              OS_TASK_IDLE_STK_SIZE,
;;;735                              (void *)0,                                 /* No TCB extension                     */
;;;736                              OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/* Enable stack checking + clear stack  */
;;;737        #else
;;;738        (void)OSTaskCreateExt(OS_TaskIdle,
;;;739                              (void *)0,                                 /* No arguments passed to OS_TaskIdle() */
;;;740                              &OSTaskIdleStk[0],                         /* Set Top-Of-Stack                     */
;;;741                              OS_IDLE_PRIO,                              /* Lowest priority level                */
;;;742                              OS_TASK_IDLE_ID,
;;;743                              &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1], /* Set Bottom-Of-Stack                  */
;;;744                              OS_TASK_IDLE_STK_SIZE,
;;;745                              (void *)0,                                 /* No TCB extension                     */
;;;746                              OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/* Enable stack checking + clear stack  */
;;;747        #endif
;;;748    #else
;;;749        #if OS_STK_GROWTH == 1
;;;750        (void)OSTaskCreate(OS_TaskIdle,
;;;751                           (void *)0,
;;;752                           &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1],
;;;753                           OS_IDLE_PRIO);
;;;754        #else
;;;755        (void)OSTaskCreate(OS_TaskIdle,
;;;756                           (void *)0,
;;;757                           &OSTaskIdleStk[0],
;;;758                           OS_IDLE_PRIO);
;;;759        #endif
;;;760    #endif
;;;761    }
000148  e28dd014          ADD      sp,sp,#0x14
00014c  e49de004          POP      {lr}
000150  e12fff1e          BX       lr
;;;762    /*$PAGE*/
                          ENDP

                  OS_InitEventList PROC
;;;622    
;;;623        pevent1 = &OSEventTbl[0];
000154  e59f071c          LDR      r0,|L1.2168|
;;;624        pevent2 = &OSEventTbl[1];
000158  e280c000          ADD      r12,r0,#0
00015c  e28c100c          ADD      r1,r12,#0xc
;;;625        for (i = 0; i < (OS_MAX_EVENTS - 1); i++) {                  /* Init. list of free EVENT control blocks  */
000160  e3a02000          MOV      r2,#0
000164  e3a03000          MOV      r3,#0
                  |L1.360|
;;;626            pevent1->OSEventType = OS_EVENT_TYPE_UNUSED;
000168  e5c03000          STRB     r3,[r0,#0]
;;;627            pevent1->OSEventPtr  = pevent2;
00016c  e5801004          STR      r1,[r0,#4]
;;;628            pevent1++;
000170  e280000c          ADD      r0,r0,#0xc
;;;629            pevent2++;
000174  e281100c          ADD      r1,r1,#0xc
000178  e2822001          ADD      r2,r2,#1              ;625
00017c  e3c22801          BIC      r2,r2,#0x10000        ;625
000180  e3520000          CMP      r2,#0                 ;625
000184  0afffff7          BEQ      |L1.360|
;;;630        }

⌨️ 快捷键说明

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