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

📄 os_core.txt

📁 IARSOURCECODE是基于LPC2478嵌入式软件IAR EWARM V4.42的应用实例代码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 903] for uVision
; commandline ArmCC [--debug -c --asm --interleave -oos_core.o --depend=os_core.d --device=DARMP --apcs=interwork -I. -I..\BSP -I..\..\..\..\..\uCOS-II\Ports\ARM\Generic\RVMDK -I..\..\..\..\..\uCOS-II\Source -I..\..\..\..\..\uC-CPU -I..\..\..\..\..\uC-CPU\ARM\RVMDK -I..\..\..\..\..\uC-LIB -I..\..\..\..\..\uCOSView\Source -I..\..\..\..\..\uCOSView\Ports\ARM7\LPC2468\IAR -Id:\Keil\ARM\INC\Philips ..\..\..\..\..\uCOS-II\Source\os_core.c]
                          ARM

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

                  OS_StrCopy PROC
;;;1298   INT8U  OS_StrCopy (INT8U *pdest, INT8U *psrc)
;;;1299   {
000000  e1a02000          MOV      r2,r0
;;;1300       INT8U  len;
;;;1301   
;;;1302   
;;;1303       len = 0;
000004  e3a00000          MOV      r0,#0
;;;1304       while (*psrc != OS_ASCII_NUL) {
000008  ea000003          B        |L1.28|
                  |L1.12|
;;;1305           *pdest++ = *psrc++;
00000c  e4d13001          LDRB     r3,[r1],#1
000010  e4c23001          STRB     r3,[r2],#1
;;;1306           len++;
000014  e2803001          ADD      r3,r0,#1
000018  e20300ff          AND      r0,r3,#0xff
                  |L1.28|
00001c  e5d13000          LDRB     r3,[r1,#0]
000020  e3530000          CMP      r3,#0
000024  1afffff8          BNE      |L1.12|
;;;1307       }
;;;1308       *pdest = OS_ASCII_NUL;
000028  e3a03000          MOV      r3,#0
00002c  e5c23000          STRB     r3,[r2,#0]
;;;1309       return (len);
;;;1310   }
000030  e12fff1e          BX       lr
                          ENDP

                  OSEventNameGet PROC
;;;108    INT8U  OSEventNameGet (OS_EVENT *pevent, INT8U *pname, INT8U *err)
;;;109    {
000034  e92d41f0          PUSH     {r4-r8,lr}
000038  e1a04000          MOV      r4,r0
00003c  e1a05001          MOV      r5,r1
000040  e1a06002          MOV      r6,r2
;;;110        INT8U      len;
;;;111    #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
;;;112        OS_CPU_SR  cpu_sr = 0;
000044  e3a07000          MOV      r7,#0
;;;113    #endif
;;;114    
;;;115    
;;;116    
;;;117    #if OS_ARG_CHK_EN > 0
;;;118        if (err == (INT8U *)0) {                     /* Validate 'err'                                     */
000048  e3560000          CMP      r6,#0
00004c  1a000002          BNE      |L1.92|
;;;119            return (0);
000050  e3a00000          MOV      r0,#0
                  |L1.84|
000054  e8bd41f0          POP      {r4-r8,lr}
;;;120        }
;;;121        if (pevent == (OS_EVENT *)0) {               /* Is 'pevent' a NULL pointer?                        */
;;;122            *err = OS_ERR_PEVENT_NULL;
;;;123            return (0);
;;;124        }
;;;125        if (pname == (INT8U *)0) {                   /* Is 'pname' a NULL pointer?                         */
;;;126            *err = OS_ERR_PNAME_NULL;
;;;127            return (0);
;;;128        }
;;;129    #endif
;;;130        switch (pevent->OSEventType) {
;;;131            case OS_EVENT_TYPE_SEM:
;;;132            case OS_EVENT_TYPE_MUTEX:
;;;133            case OS_EVENT_TYPE_MBOX:
;;;134            case OS_EVENT_TYPE_Q:
;;;135                 break;
;;;136    
;;;137            default:
;;;138                 *err = OS_ERR_EVENT_TYPE;
;;;139                 return (0);
;;;140        }
;;;141        OS_ENTER_CRITICAL();
;;;142        len  = OS_StrCopy(pname, pevent->OSEventName);    /* Copy name from OS_EVENT                       */
;;;143        OS_EXIT_CRITICAL();
;;;144        *err = OS_ERR_NONE;
;;;145        return (len);
;;;146    }
000058  e12fff1e          BX       lr
                  |L1.92|
00005c  e3540000          CMP      r4,#0
000060  1a000003          BNE      |L1.116|
000064  e3a00004          MOV      r0,#4
000068  e5c60000          STRB     r0,[r6,#0]
00006c  e3a00000          MOV      r0,#0
000070  eafffff7          B        |L1.84|
                  |L1.116|
000074  e3550000          CMP      r5,#0
000078  1a000003          BNE      |L1.140|
00007c  e3a0000c          MOV      r0,#0xc
000080  e5c60000          STRB     r0,[r6,#0]
000084  e3a00000          MOV      r0,#0
000088  eafffff1          B        |L1.84|
                  |L1.140|
00008c  e5d40000          LDRB     r0,[r4,#0]
000090  e3500001          CMP      r0,#1
000094  0a000009          BEQ      |L1.192|
000098  e3500002          CMP      r0,#2
00009c  0a000008          BEQ      |L1.196|
0000a0  e3500003          CMP      r0,#3
0000a4  0a000002          BEQ      |L1.180|
0000a8  e3500004          CMP      r0,#4
0000ac  1a000005          BNE      |L1.200|
0000b0  ea000001          B        |L1.188|
                  |L1.180|
0000b4  e1a00000          MOV      r0,r0
0000b8  e1a00000          MOV      r0,r0
                  |L1.188|
0000bc  e1a00000          MOV      r0,r0
                  |L1.192|
0000c0  e1a00000          MOV      r0,r0
                  |L1.196|
0000c4  ea000004          B        |L1.220|
                  |L1.200|
0000c8  e1a00000          MOV      r0,r0
0000cc  e3a00001          MOV      r0,#1
0000d0  e5c60000          STRB     r0,[r6,#0]
0000d4  e3a00000          MOV      r0,#0
0000d8  eaffffdd          B        |L1.84|
                  |L1.220|
0000dc  e1a00000          MOV      r0,r0
0000e0  ebfffffe          BL       OS_CPU_SR_Save
0000e4  e1a07000          MOV      r7,r0
0000e8  e284100f          ADD      r1,r4,#0xf
0000ec  e1a00005          MOV      r0,r5
0000f0  ebfffffe          BL       OS_StrCopy
0000f4  e1a08000          MOV      r8,r0
0000f8  e1a00007          MOV      r0,r7
0000fc  ebfffffe          BL       OS_CPU_SR_Restore
000100  e3a00000          MOV      r0,#0
000104  e5c60000          STRB     r0,[r6,#0]
000108  e1a00008          MOV      r0,r8
00010c  eaffffd0          B        |L1.84|
                          ENDP

                  OS_StrLen PROC
;;;1330   INT8U  OS_StrLen (INT8U *psrc)
;;;1331   {
000110  e1a01000          MOV      r1,r0
;;;1332       INT8U  len;
;;;1333   
;;;1334   
;;;1335       len = 0;
000114  e3a00000          MOV      r0,#0
;;;1336       while (*psrc != OS_ASCII_NUL) {
000118  ea000002          B        |L1.296|
                  |L1.284|
;;;1337           psrc++;
00011c  e2811001          ADD      r1,r1,#1
;;;1338           len++;
000120  e2802001          ADD      r2,r0,#1
000124  e20200ff          AND      r0,r2,#0xff
                  |L1.296|
000128  e5d12000          LDRB     r2,[r1,#0]
00012c  e3520000          CMP      r2,#0
000130  1afffff9          BNE      |L1.284|
;;;1339       }
;;;1340       return (len);
;;;1341   }
000134  e12fff1e          BX       lr
                          ENDP

                  OSEventNameSet PROC
;;;177    void  OSEventNameSet (OS_EVENT *pevent, INT8U *pname, INT8U *err)
;;;178    {
000138  e92d41f0          PUSH     {r4-r8,lr}
00013c  e1a04000          MOV      r4,r0
000140  e1a05001          MOV      r5,r1
000144  e1a06002          MOV      r6,r2
;;;179        INT8U      len;
;;;180    #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
;;;181        OS_CPU_SR  cpu_sr = 0;
000148  e3a08000          MOV      r8,#0
;;;182    #endif
;;;183    
;;;184    
;;;185    
;;;186    #if OS_ARG_CHK_EN > 0
;;;187        if (err == (INT8U *)0) {                     /* Validate 'err'                                     */
00014c  e3560000          CMP      r6,#0
000150  1a000001          BNE      |L1.348|
                  |L1.340|
;;;188            return;
;;;189        }
;;;190        if (pevent == (OS_EVENT *)0) {               /* Is 'pevent' a NULL pointer?                        */
;;;191            *err = OS_ERR_PEVENT_NULL;
;;;192            return;
;;;193        }
;;;194        if (pname == (INT8U *)0) {                    /* Is 'pname' a NULL pointer?                         */
;;;195            *err = OS_ERR_PNAME_NULL;
;;;196            return;
;;;197        }
;;;198    #endif
;;;199        switch (pevent->OSEventType) {
;;;200            case OS_EVENT_TYPE_SEM:
;;;201            case OS_EVENT_TYPE_MUTEX:
;;;202            case OS_EVENT_TYPE_MBOX:
;;;203            case OS_EVENT_TYPE_Q:
;;;204                 break;
;;;205    
;;;206            default:
;;;207                 *err = OS_ERR_EVENT_TYPE;
;;;208                 return;
;;;209        }
;;;210        OS_ENTER_CRITICAL();
;;;211        len = OS_StrLen(pname);                           /* Can we fit the string in the storage area?    */
;;;212        if (len > (OS_EVENT_NAME_SIZE - 1)) {             /* No                                            */
;;;213            OS_EXIT_CRITICAL();
;;;214            *err = OS_ERR_EVENT_NAME_TOO_LONG;
;;;215            return;
;;;216        }
;;;217        (void)OS_StrCopy(pevent->OSEventName, pname);     /* Yes, copy name to the event control block     */
;;;218        OS_EXIT_CRITICAL();
;;;219        *err = OS_ERR_NONE;
;;;220    }
000154  e8bd41f0          POP      {r4-r8,lr}
000158  e12fff1e          BX       lr
                  |L1.348|
00015c  e3540000          CMP      r4,#0
000160  1a000002          BNE      |L1.368|
000164  e3a00004          MOV      r0,#4
000168  e5c60000          STRB     r0,[r6,#0]
00016c  eafffff8          B        |L1.340|
                  |L1.368|
000170  e3550000          CMP      r5,#0
000174  1a000002          BNE      |L1.388|
000178  e3a0000c          MOV      r0,#0xc
00017c  e5c60000          STRB     r0,[r6,#0]
000180  eafffff3          B        |L1.340|
                  |L1.388|
000184  e5d40000          LDRB     r0,[r4,#0]
000188  e3500001          CMP      r0,#1
00018c  0a000009          BEQ      |L1.440|
000190  e3500002          CMP      r0,#2
000194  0a000008          BEQ      |L1.444|
000198  e3500003          CMP      r0,#3
00019c  0a000002          BEQ      |L1.428|
0001a0  e3500004          CMP      r0,#4
0001a4  1a000005          BNE      |L1.448|
0001a8  ea000001          B        |L1.436|
                  |L1.428|
0001ac  e1a00000          MOV      r0,r0
0001b0  e1a00000          MOV      r0,r0
                  |L1.436|
0001b4  e1a00000          MOV      r0,r0
                  |L1.440|
0001b8  e1a00000          MOV      r0,r0
                  |L1.444|
0001bc  ea000003          B        |L1.464|
                  |L1.448|
0001c0  e1a00000          MOV      r0,r0
0001c4  e3a00001          MOV      r0,#1
0001c8  e5c60000          STRB     r0,[r6,#0]
0001cc  eaffffe0          B        |L1.340|
                  |L1.464|
0001d0  e1a00000          MOV      r0,r0
0001d4  ebfffffe          BL       OS_CPU_SR_Save
0001d8  e1a08000          MOV      r8,r0
0001dc  e1a00005          MOV      r0,r5
0001e0  ebfffffe          BL       OS_StrLen
0001e4  e1a07000          MOV      r7,r0
0001e8  e357000f          CMP      r7,#0xf
0001ec  da000004          BLE      |L1.516|
0001f0  e1a00008          MOV      r0,r8
0001f4  ebfffffe          BL       OS_CPU_SR_Restore
0001f8  e3a0000b          MOV      r0,#0xb
0001fc  e5c60000          STRB     r0,[r6,#0]
000200  eaffffd3          B        |L1.340|
                  |L1.516|
000204  e1a01005          MOV      r1,r5
000208  e284000f          ADD      r0,r4,#0xf
00020c  ebfffffe          BL       OS_StrCopy

⌨️ 快捷键说明

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