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

📄 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 页
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 919] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o.\rvmdk\os_core.o --depend=.\rvmdk\os_core.d --device=DARMP --apcs=interwork -I. -I..\BSP -I..\..\..\..\..\uCOS-II\Ports\ARM\Generic\RealView -I..\..\..\..\..\uCOS-II\Source -I..\..\..\..\..\uCOSView\Source -I..\..\..\..\..\uCOSView\Ports\ARM7\LPC2000\IAR -I..\..\..\..\..\uC-CPU -I..\..\..\..\..\uC-CPU\ARM\RealView -I..\..\..\..\..\uC-LIB -I..\..\..\..\..\uC-Probe\Target\Plugins\uCOS-II -IC:\Keil\ARM\INC\Philips --omf_browse=.\rvmdk\os_core.crf ..\..\..\..\..\uCOS-II\Source\os_core.c]
                          ARM

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

                  OS_StrCopy PROC
000000  e3a02000          MOV      r2,#0
                  |L1.4|
000004  e5d13000          LDRB     r3,[r1,#0]
000008  e3530000          CMP      r3,#0
00000c  12822001          ADDNE    r2,r2,#1
000010  12811001          ADDNE    r1,r1,#1
000014  120220ff          ANDNE    r2,r2,#0xff
000018  14c03001          STRBNE   r3,[r0],#1
00001c  1afffff8          BNE      |L1.4|
000020  e3a01000          MOV      r1,#0
000024  e5c01000          STRB     r1,[r0,#0]
000028  e1a00002          MOV      r0,r2
00002c  e12fff1e          BX       lr
                          ENDP

                  OSEventNameGet PROC
;;;108    INT8U  OSEventNameGet (OS_EVENT *pevent, INT8U *pname, INT8U *perr)
;;;109    {
000030  e92d4070          PUSH     {r4-r6,lr}
000034  e1a05000          MOV      r5,r0
;;;110        INT8U      len;
;;;111    #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
;;;112        OS_CPU_SR  cpu_sr = 0;
;;;113    #endif
;;;114    
;;;115    
;;;116    
;;;117    #if OS_ARG_CHK_EN > 0
;;;118        if (perr == (INT8U *)0) {                    /* Validate 'perr'                                    */
;;;119            return (0);
;;;120        }
;;;121        if (pevent == (OS_EVENT *)0) {               /* Is 'pevent' a NULL pointer?                        */
;;;122            *perr = OS_ERR_PEVENT_NULL;
;;;123            return (0);
;;;124        }
;;;125        if (pname == (INT8U *)0) {                   /* Is 'pname' a NULL pointer?                         */
;;;126            *perr = OS_ERR_PNAME_NULL;
;;;127            return (0);
;;;128        }
;;;129    #endif
;;;130        if (OSIntNesting > 0) {                      /* See if trying to call from an ISR                  */
000038  e59f0590          LDR      r0,|L1.1488|
00003c  e1a06001          MOV      r6,r1                 ;109
000040  e5d00002          LDRB     r0,[r0,#2]  ; OSIntNesting
000044  e1a04002          MOV      r4,r2                 ;109
000048  e3500000          CMP      r0,#0
;;;131            *perr  = OS_ERR_NAME_GET_ISR;
00004c  13a00011          MOVNE    r0,#0x11
;;;132            return (0);
000050  1a000006          BNE      |L1.112|
;;;133        }
;;;134        switch (pevent->OSEventType) {
000054  e5d50000          LDRB     r0,[r5,#0]
000058  e3500001          CMP      r0,#1
00005c  13500002          CMPNE    r0,#2
000060  13500003          CMPNE    r0,#3
000064  13500004          CMPNE    r0,#4
000068  0a000004          BEQ      |L1.128|
;;;135            case OS_EVENT_TYPE_SEM:
;;;136            case OS_EVENT_TYPE_MUTEX:
;;;137            case OS_EVENT_TYPE_MBOX:
;;;138            case OS_EVENT_TYPE_Q:
;;;139                 break;
;;;140    
;;;141            default:
;;;142                 *perr = OS_ERR_EVENT_TYPE;
00006c  e3a00001          MOV      r0,#1
                  |L1.112|
000070  e5c40000          STRB     r0,[r4,#0]
;;;143                 return (0);
000074  e3a00000          MOV      r0,#0
                  |L1.120|
000078  e8bd4070          POP      {r4-r6,lr}
;;;144        }
;;;145        OS_ENTER_CRITICAL();
;;;146        len   = OS_StrCopy(pname, pevent->OSEventName);   /* Copy name from OS_EVENT                       */
;;;147        OS_EXIT_CRITICAL();
;;;148        *perr = OS_ERR_NONE;
;;;149        return (len);
;;;150    }
00007c  e12fff1e          BX       lr
                  |L1.128|
000080  ebfffffe          BL       OS_CPU_SR_Save
000084  e1a0c000          MOV      r12,r0                ;145
000088  e285100f          ADD      r1,r5,#0xf            ;146
00008c  e1a00006          MOV      r0,r6                 ;146
000090  ebfffffe          BL       OS_StrCopy
000094  e1a05000          MOV      r5,r0                 ;146
000098  e1a0000c          MOV      r0,r12                ;147
00009c  ebfffffe          BL       OS_CPU_SR_Restore
0000a0  e3a00000          MOV      r0,#0                 ;148
0000a4  e5c40000          STRB     r0,[r4,#0]            ;148
0000a8  e1a00005          MOV      r0,r5                 ;149
0000ac  eafffff1          B        |L1.120|
;;;151    #endif
                          ENDP

                  OS_StrLen PROC
0000b0  e3a01000          MOV      r1,#0                 ;0
                  |L1.180|
0000b4  e5d02000          LDRB     r2,[r0,#0]            ;0
0000b8  e3520000          CMP      r2,#0                 ;0
0000bc  12811001          ADDNE    r1,r1,#1              ;0
0000c0  12800001          ADDNE    r0,r0,#1              ;0
0000c4  120110ff          ANDNE    r1,r1,#0xff           ;0
0000c8  1afffff9          BNE      |L1.180|
0000cc  e1a00001          MOV      r0,r1                 ;0
0000d0  e12fff1e          BX       lr                    ;0
                          ENDP

                  OSEventNameSet PROC
;;;182    void  OSEventNameSet (OS_EVENT *pevent, INT8U *pname, INT8U *perr)
;;;183    {
0000d4  e92d4070          PUSH     {r4-r6,lr}
0000d8  e1a05000          MOV      r5,r0
;;;184        INT8U      len;
;;;185    #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
;;;186        OS_CPU_SR  cpu_sr = 0;
;;;187    #endif
;;;188    
;;;189    
;;;190    
;;;191    #if OS_ARG_CHK_EN > 0
;;;192        if (perr == (INT8U *)0) {                    /* Validate 'perr'                                    */
;;;193            return;
;;;194        }
;;;195        if (pevent == (OS_EVENT *)0) {               /* Is 'pevent' a NULL pointer?                        */
;;;196            *perr = OS_ERR_PEVENT_NULL;
;;;197            return;
;;;198        }
;;;199        if (pname == (INT8U *)0) {                   /* Is 'pname' a NULL pointer?                         */
;;;200            *perr = OS_ERR_PNAME_NULL;
;;;201            return;
;;;202        }
;;;203    #endif
;;;204        if (OSIntNesting > 0) {                      /* See if trying to call from an ISR                  */
0000dc  e59f04ec          LDR      r0,|L1.1488|
0000e0  e1a06001          MOV      r6,r1                 ;183
0000e4  e5d00002          LDRB     r0,[r0,#2]  ; OSIntNesting
0000e8  e1a04002          MOV      r4,r2                 ;183
0000ec  e3500000          CMP      r0,#0
;;;205            *perr = OS_ERR_NAME_SET_ISR;
0000f0  13a00012          MOVNE    r0,#0x12
;;;206            return;
0000f4  1a000016          BNE      |L1.340|
;;;207        }
;;;208        switch (pevent->OSEventType) {
0000f8  e5d50000          LDRB     r0,[r5,#0]
0000fc  e3500001          CMP      r0,#1
000100  13500002          CMPNE    r0,#2
000104  13500003          CMPNE    r0,#3
000108  13500004          CMPNE    r0,#4
;;;209            case OS_EVENT_TYPE_SEM:
;;;210            case OS_EVENT_TYPE_MUTEX:
;;;211            case OS_EVENT_TYPE_MBOX:
;;;212            case OS_EVENT_TYPE_Q:
;;;213                 break;
;;;214    
;;;215            default:
;;;216                 *perr = OS_ERR_EVENT_TYPE;
00010c  13a00001          MOVNE    r0,#1
;;;217                 return;
000110  1a00000f          BNE      |L1.340|
;;;218        }
;;;219        OS_ENTER_CRITICAL();
000114  ebfffffe          BL       OS_CPU_SR_Save
000118  e1a0c000          MOV      r12,r0
;;;220        len = OS_StrLen(pname);                           /* Can we fit the string in the storage area?    */
00011c  e1a00006          MOV      r0,r6
000120  ebfffffe          BL       OS_StrLen
;;;221        if (len > (OS_EVENT_NAME_SIZE - 1)) {             /* No                                            */
000124  e350000f          CMP      r0,#0xf
000128  9a000003          BLS      |L1.316|
;;;222            OS_EXIT_CRITICAL();
00012c  e1a0000c          MOV      r0,r12
000130  ebfffffe          BL       OS_CPU_SR_Restore
;;;223            *perr = OS_ERR_EVENT_NAME_TOO_LONG;
000134  e3a0000b          MOV      r0,#0xb
;;;224            return;
000138  ea000005          B        |L1.340|
                  |L1.316|
;;;225        }
;;;226        (void)OS_StrCopy(pevent->OSEventName, pname);     /* Yes, copy name to the event control block     */
00013c  e1a01006          MOV      r1,r6
000140  e285000f          ADD      r0,r5,#0xf
000144  ebfffffe          BL       OS_StrCopy
;;;227        OS_EXIT_CRITICAL();
000148  e1a0000c          MOV      r0,r12
00014c  ebfffffe          BL       OS_CPU_SR_Restore
;;;228        *perr = OS_ERR_NONE;
000150  e3a00000          MOV      r0,#0
                  |L1.340|
000154  e5c40000          STRB     r0,[r4,#0]
;;;229    }
000158  e8bd4070          POP      {r4-r6,lr}
00015c  e12fff1e          BX       lr
;;;230    #endif
                          ENDP

                  OS_TaskStatStkChk PROC
;;;1465   void  OS_TaskStatStkChk (void)
;;;1466   {
000160  e92d407c          PUSH     {r2-r6,lr}
;;;1467       OS_TCB      *ptcb;
;;;1468       OS_STK_DATA  stk_data;
;;;1469       INT8U        err;
;;;1470       INT8U        prio;
;;;1471   
;;;1472   
;;;1473       for (prio = 0; prio <= OS_TASK_IDLE_PRIO; prio++) {
000164  e59f5468          LDR      r5,|L1.1492|
000168  e3a04000          MOV      r4,#0
                  |L1.364|
;;;1474           err = OSTaskStkChk(prio, &stk_data);
00016c  e28d1000          ADD      r1,sp,#0
000170  e1a00004          MOV      r0,r4
000174  ebfffffe          BL       OSTaskStkChk
;;;1475           if (err == OS_ERR_NONE) {
000178  e3500000          CMP      r0,#0
00017c  1a000009          BNE      |L1.424|
;;;1476               ptcb = OSTCBPrioTbl[prio];
000180  e7950104          LDR      r0,[r5,r4,LSL #2]
;;;1477               if (ptcb != (OS_TCB *)0) {                               /* Make sure task 'ptcb' is ...   */
000184  e3500000          CMP      r0,#0
;;;1478                   if (ptcb != OS_TCB_RESERVED) {                       /* ... still valid.               */
000188  13500001          CMPNE    r0,#1
00018c  0a000005          BEQ      |L1.424|
;;;1479   #if OS_TASK_PROFILE_EN > 0
;;;1480                       #if OS_STK_GROWTH == 1
;;;1481                       ptcb->OSTCBStkBase = ptcb->OSTCBStkBottom + ptcb->OSTCBStkSize;
000190  e2802008          ADD      r2,r0,#8
000194  e8920006          LDM      r2,{r1,r2}
000198  e0811102          ADD      r1,r1,r2,LSL #2
;;;1482                       #else
;;;1483                       ptcb->OSTCBStkBase = ptcb->OSTCBStkBottom - ptcb->OSTCBStkSize;
;;;1484                       #endif
;;;1485                       ptcb->OSTCBStkUsed = stk_data.OSUsed;            /* Store the number of bytes used */
00019c  e5801040          STR      r1,[r0,#0x40]
0001a0  e59d1004          LDR      r1,[sp,#4]
0001a4  e5801044          STR      r1,[r0,#0x44]
                  |L1.424|
0001a8  e2840001          ADD      r0,r4,#1              ;1473
0001ac  e20040ff          AND      r4,r0,#0xff           ;1473
0001b0  e354001f          CMP      r4,#0x1f              ;1473
0001b4  9affffec          BLS      |L1.364|
;;;1486   #endif
;;;1487                   }
;;;1488               }
;;;1489           }
;;;1490       }
;;;1491   }
0001b8  e8bd407c          POP      {r2-r6,lr}
0001bc  e12fff1e          BX       lr
;;;1492   #endif
                          ENDP

                  OS_TaskStat PROC
;;;1410   void  OS_TaskStat (void *p_arg)
;;;1411   {
0001c0  e92d41f0          PUSH     {r4-r8,lr}
0001c4  e59f4404          LDR      r4,|L1.1488|
;;;1412       INT32U     run;
;;;1413       INT32U     max;

⌨️ 快捷键说明

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