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

📄 os_mutex.txt

📁 在KEIL下成功使用UCOS-II嵌入式操作系统
💻 TXT
📖 第 1 页 / 共 4 页
字号:
000630  e5911000          LDR      r1,[r1,#0]            ;430  ; OSTCBCur
000634  e5d11020          LDRB     r1,[r1,#0x20]         ;430
000638  e1c00001          BIC      r0,r0,r1              ;430
00063c  e21000ff          ANDS     r0,r0,#0xff           ;430
000640  e59f123c          LDR      r1,|L1.2180|          ;430
000644  e5911000          LDR      r1,[r1,#0]            ;430  ; OSTCBCur
000648  e5d1101f          LDRB     r1,[r1,#0x1f]         ;430
00064c  e59f223c          LDR      r2,|L1.2192|          ;430
000650  e7c20001          STRB     r0,[r2,r1]            ;430
000654  1a000007          BNE      |L1.1656|             ;430
000658  e59f0224          LDR      r0,|L1.2180|          ;431
00065c  e5900000          LDR      r0,[r0,#0]            ;431  ; OSTCBCur
000660  e5d00021          LDRB     r0,[r0,#0x21]         ;431
000664  e59f1228          LDR      r1,|L1.2196|          ;431
000668  e5d11000          LDRB     r1,[r1,#0]            ;431  ; OSRdyGrp
00066c  e1c10000          BIC      r0,r1,r0              ;431
000670  e59f121c          LDR      r1,|L1.2196|          ;431
000674  e5c10000          STRB     r0,[r1,#0]            ;431  ; OSRdyGrp
                  |L1.1656|
000678  e59f0204          LDR      r0,|L1.2180|          ;433
00067c  e5900000          LDR      r0,[r0,#0]            ;433  ; OSTCBCur
000680  e5c0601d          STRB     r6,[r0,#0x1d]         ;433
000684  e1a001c6          ASR      r0,r6,#3              ;434
000688  e59f11f4          LDR      r1,|L1.2180|          ;434
00068c  e5911000          LDR      r1,[r1,#0]            ;434  ; OSTCBCur
000690  e5c1001f          STRB     r0,[r1,#0x1f]         ;434
000694  e59f01e8          LDR      r0,|L1.2180|          ;435
000698  e5900000          LDR      r0,[r0,#0]            ;435  ; OSTCBCur
00069c  e5d0001f          LDRB     r0,[r0,#0x1f]         ;435
0006a0  e59f11f0          LDR      r1,|L1.2200|          ;435
0006a4  e7d10000          LDRB     r0,[r1,r0]            ;435
0006a8  e59f11d4          LDR      r1,|L1.2180|          ;435
0006ac  e5911000          LDR      r1,[r1,#0]            ;435  ; OSTCBCur
0006b0  e5c10021          STRB     r0,[r1,#0x21]         ;435
0006b4  e2060007          AND      r0,r6,#7              ;436
0006b8  e59f11c4          LDR      r1,|L1.2180|          ;436
0006bc  e5911000          LDR      r1,[r1,#0]            ;436  ; OSTCBCur
0006c0  e5c1001e          STRB     r0,[r1,#0x1e]         ;436
0006c4  e59f01b8          LDR      r0,|L1.2180|          ;437
0006c8  e5900000          LDR      r0,[r0,#0]            ;437  ; OSTCBCur
0006cc  e5d0001e          LDRB     r0,[r0,#0x1e]         ;437
0006d0  e59f11c0          LDR      r1,|L1.2200|          ;437
0006d4  e7d10000          LDRB     r0,[r1,r0]            ;437
0006d8  e59f11a4          LDR      r1,|L1.2180|          ;437
0006dc  e5911000          LDR      r1,[r1,#0]            ;437  ; OSTCBCur
0006e0  e5c10020          STRB     r0,[r1,#0x20]         ;437
0006e4  e59f0198          LDR      r0,|L1.2180|          ;438
0006e8  e5900000          LDR      r0,[r0,#0]            ;438  ; OSTCBCur
0006ec  e5d00021          LDRB     r0,[r0,#0x21]         ;438
0006f0  e59f119c          LDR      r1,|L1.2196|          ;438
0006f4  e5d11000          LDRB     r1,[r1,#0]            ;438  ; OSRdyGrp
0006f8  e1800001          ORR      r0,r0,r1              ;438
0006fc  e59f1190          LDR      r1,|L1.2196|          ;438
000700  e5c10000          STRB     r0,[r1,#0]            ;438  ; OSRdyGrp
000704  e59f0178          LDR      r0,|L1.2180|          ;439
000708  e5900000          LDR      r0,[r0,#0]            ;439  ; OSTCBCur
00070c  e5d0001f          LDRB     r0,[r0,#0x1f]         ;439
000710  e59f1178          LDR      r1,|L1.2192|          ;439
000714  e7d10000          LDRB     r0,[r1,r0]            ;439
000718  e59f1164          LDR      r1,|L1.2180|          ;439
00071c  e5911000          LDR      r1,[r1,#0]            ;439  ; OSTCBCur
000720  e5d11020          LDRB     r1,[r1,#0x20]         ;439
000724  e1800001          ORR      r0,r0,r1              ;439
000728  e59f1154          LDR      r1,|L1.2180|          ;439
00072c  e5911000          LDR      r1,[r1,#0]            ;439  ; OSTCBCur
000730  e5d1101f          LDRB     r1,[r1,#0x1f]         ;439
000734  e59f2154          LDR      r2,|L1.2192|          ;439
000738  e7c20001          STRB     r0,[r2,r1]            ;439
00073c  e59f0140          LDR      r0,|L1.2180|          ;440
000740  e5900000          LDR      r0,[r0,#0]            ;440  ; OSTCBCur
000744  e59f113c          LDR      r1,|L1.2184|          ;440
000748  e7810106          STR      r0,[r1,r6,LSL #2]     ;440
                  |L1.1868|
00074c  e3a00001          MOV      r0,#1                 ;442
000750  e59f1130          LDR      r1,|L1.2184|          ;442
000754  e7810105          STR      r0,[r1,r5,LSL #2]     ;442
000758  e5d40001          LDRB     r0,[r4,#1]            ;443
00075c  e3500000          CMP      r0,#0                 ;443
000760  0a000011          BEQ      |L1.1964|             ;443
000764  e3a02010          MOV      r2,#0x10              ;445
000768  e3a01000          MOV      r1,#0                 ;445
00076c  e1a00004          MOV      r0,r4                 ;445
000770  ebfffffe          BL       OS_EventTaskRdy       ;445
000774  e1a06000          MOV      r6,r0                 ;445
000778  e1d400b2          LDRH     r0,[r4,#2]            ;446
00077c  e2000cff          AND      r0,r0,#0xff00         ;446
000780  e1c400b2          STRH     r0,[r4,#2]            ;446
000784  e1d400b2          LDRH     r0,[r4,#2]            ;447
000788  e1800006          ORR      r0,r0,r6              ;447
00078c  e1c400b2          STRH     r0,[r4,#2]            ;447
000790  e59f00f0          LDR      r0,|L1.2184|          ;448
000794  e7900106          LDR      r0,[r0,r6,LSL #2]     ;448
000798  e5840004          STR      r0,[r4,#4]            ;448
00079c  ef000003          SVC      0x3  ; formerly SWI   ;449
0007a0  ebfffffe          BL       OS_Sched              ;450
0007a4  e3a00000          MOV      r0,#0                 ;451
0007a8  eaffff79          B        |L1.1428|             ;451
                  |L1.1964|
0007ac  e1d400b2          LDRH     r0,[r4,#2]            ;453
0007b0  e38000ff          ORR      r0,r0,#0xff           ;453
0007b4  e1c400b2          STRH     r0,[r4,#2]            ;453
0007b8  e3a00000          MOV      r0,#0                 ;454
0007bc  e5840004          STR      r0,[r4,#4]            ;454
0007c0  ef000003          SVC      0x3  ; formerly SWI   ;455
0007c4  e3a00000          MOV      r0,#0                 ;456
0007c8  eaffff71          B        |L1.1428|             ;456
                          ENDP

                  OSMutexQuery PROC
;;;477    INT8U  OSMutexQuery (OS_EVENT *pevent, OS_MUTEX_DATA *pdata)
;;;478    {
0007cc  e92d41f0          PUSH     {r4-r8,lr}
0007d0  e1a06000          MOV      r6,r0
0007d4  e1a04001          MOV      r4,r1
;;;479    #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
;;;480        OS_CPU_SR  cpu_sr;
;;;481    #endif    
;;;482        INT8U     *psrc;
;;;483        INT8U     *pdest;
;;;484    
;;;485    
;;;486        if (OSIntNesting > 0) {                                /* See if called from ISR ...               */
0007d8  e59f00a0          LDR      r0,|L1.2176|
0007dc  e5d00000          LDRB     r0,[r0,#0]  ; OSIntNesting
0007e0  e3500000          CMP      r0,#0
0007e4  da000001          BLE      |L1.2032|
;;;487            return (OS_ERR_QUERY_ISR);                         /* ... can't QUERY mutex from an ISR        */
0007e8  e3a00006          MOV      r0,#6
;;;488        }
;;;489    #if OS_ARG_CHK_EN > 0
;;;490        if (pevent == (OS_EVENT *)0) {                         /* Validate 'pevent'                        */
;;;491            return (OS_ERR_PEVENT_NULL);
;;;492        }
;;;493        if (pevent->OSEventType != OS_EVENT_TYPE_MUTEX) {      /* Validate event block type                */
;;;494            return (OS_ERR_EVENT_TYPE);
;;;495        }
;;;496    #endif
;;;497        OS_ENTER_CRITICAL();
;;;498        pdata->OSMutexPIP  = (INT8U)(pevent->OSEventCnt >> 8);
;;;499        pdata->OSOwnerPrio = (INT8U)(pevent->OSEventCnt & OS_MUTEX_KEEP_LOWER_8);
;;;500        if (pdata->OSOwnerPrio == 0xFF) {
;;;501            pdata->OSValue = 1;
;;;502        } else {
;;;503            pdata->OSValue = 0;
;;;504        }
;;;505        pdata->OSEventGrp  = pevent->OSEventGrp;               /* Copy wait list                           */
;;;506        psrc               = &pevent->OSEventTbl[0];
;;;507        pdest              = &pdata->OSEventTbl[0];
;;;508    #if OS_EVENT_TBL_SIZE > 0
;;;509        *pdest++           = *psrc++;
;;;510    #endif
;;;511    
;;;512    #if OS_EVENT_TBL_SIZE > 1
;;;513        *pdest++           = *psrc++;
;;;514    #endif
;;;515    
;;;516    #if OS_EVENT_TBL_SIZE > 2
;;;517        *pdest++           = *psrc++;
;;;518    #endif
;;;519    
;;;520    #if OS_EVENT_TBL_SIZE > 3
;;;521        *pdest++           = *psrc++;
;;;522    #endif
;;;523    
;;;524    #if OS_EVENT_TBL_SIZE > 4
;;;525        *pdest++           = *psrc++;
;;;526    #endif
;;;527    
;;;528    #if OS_EVENT_TBL_SIZE > 5
;;;529        *pdest++           = *psrc++;
;;;530    #endif
;;;531    
;;;532    #if OS_EVENT_TBL_SIZE > 6
;;;533        *pdest++           = *psrc++;
;;;534    #endif
;;;535    
;;;536    #if OS_EVENT_TBL_SIZE > 7
;;;537        *pdest             = *psrc;
;;;538    #endif
;;;539        OS_EXIT_CRITICAL();
;;;540        return (OS_NO_ERR);
;;;541    }
                  |L1.2028|
0007ec  e8bd81f0          POP      {r4-r8,pc}
                  |L1.2032|
0007f0  e3560000          CMP      r6,#0                 ;490
0007f4  1a000001          BNE      |L1.2048|             ;490
0007f8  e3a00004          MOV      r0,#4                 ;491
0007fc  eafffffa          B        |L1.2028|             ;491
                  |L1.2048|
000800  e5d60000          LDRB     r0,[r6,#0]            ;493
000804  e3500004          CMP      r0,#4                 ;493
000808  0a000001          BEQ      |L1.2068|             ;493
00080c  e3a00001          MOV      r0,#1                 ;494
000810  eafffff5          B        |L1.2028|             ;494
                  |L1.2068|
000814  ef000002          SVC      0x2  ; formerly SWI   ;497
000818  e1d600b2          LDRH     r0,[r6,#2]            ;498
00081c  e1a00440          ASR      r0,r0,#8              ;498
000820  e5c40005          STRB     r0,[r4,#5]            ;498
000824  e1d600b2          LDRH     r0,[r6,#2]            ;499
000828  e5c40004          STRB     r0,[r4,#4]            ;499
00082c  e5d40004          LDRB     r0,[r4,#4]            ;500
000830  e35000ff          CMP      r0,#0xff              ;500
000834  1a000002          BNE      |L1.2116|             ;500
000838  e3a00001          MOV      r0,#1                 ;501
00083c  e5c40003          STRB     r0,[r4,#3]            ;501
000840  ea000001          B        |L1.2124|             ;501
                  |L1.2116|
000844  e3a00000          MOV      r0,#0                 ;503
000848  e5c40003          STRB     r0,[r4,#3]            ;503
                  |L1.2124|
00084c  e5d60001          LDRB     r0,[r6,#1]            ;505
000850  e5c40002          STRB     r0,[r4,#2]            ;505
000854  e2867008          ADD      r7,r6,#8              ;506
000858  e1a05004          MOV      r5,r4                 ;507
00085c  e4d70001          LDRB     r0,[r7],#1            ;509
000860  e5c50000          STRB     r0,[r5,#0]            ;509
000864  e1a04005          MOV      r4,r5                 ;509
000868  e2855001          ADD      r5,r5,#1              ;509
00086c  e4d70001          LDRB     r0,[r7],#1            ;513
000870  e4c50001          STRB     r0,[r5],#1            ;513
000874  ef000003          SVC      0x3  ; formerly SWI   ;539
000878  e3a00000          MOV      r0,#0                 ;540
00087c  eaffffda          B        |L1.2028|             ;540
                  |L1.2176|
000880  00000000          DCD      OSIntNesting          ;540
                  |L1.2180|
000884  00000000          DCD      OSTCBCur              ;540
                  |L1.2184|
000888  00000000          DCD      OSTCBPrioTbl          ;540
                  |L1.2188|
00088c  00000000          DCD      OSEventFreeList       ;540
                  |L1.2192|
000890  00000000          DCD      OSRdyTbl              ;540
                  |L1.2196|
000894  00000000          DCD      OSRdyGrp              ;540
                  |L1.2200|
000898  00000000          DCD      OSMapTbl              ;540
                          ENDP


⌨️ 快捷键说明

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