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

📄 sdmmc.cod

📁 ARM对MMC卡的编程文档
💻 COD
📖 第 1 页 / 共 5 页
字号:
  00090	e1b01820	 movs      r1, r0, lsr #16
  00094	0a00006c	 beq       |$L36576|
  00098		 |$L36575|

; 398  :     {
; 399  :            
; 406  :         
; 407  :         if (!sdFlag)    

  00098	e1a00809	 mov       r0, r9, lsl #16
  0009c	e1b01820	 movs      r1, r0, lsr #16
  000a0	1a000030	 bne       |$L36587|

; 408  :         {
; 409  :                         
; 410  :             resErr = mmcCommandAndResponse ( pc,
; 411  :                     setupInfo,
; 412  :                                         SEND_OP_COND,
; 413  :                     0,
; 414  :                     R3 );

  000a4	e3a00003	 mov       r0, #3
  000a8	e58d0000	 str       r0, [sp]
  000ac	e3a03000	 mov       r3, #0
  000b0	e3a02001	 mov       r2, #1
  000b4	e1a01006	 mov       r1, r6
  000b8	e1a00005	 mov       r0, r5
  000bc	eb000000	 bl        mmcCommandAndResponse
  000c0	e1b04000	 movs      r4, r0
  000c4	e58d400c	 str       r4, [sp, #0xC]

; 415  : 
; 416  :             
; 417  :             if (resErr == MMC_NO_ERROR)

  000c8	1a000008	 bne       |$L36578|

; 418  :             {
; 419  :                   
; 420  :                   
; 421  :                  cardType = MMC_TYPE;
; 422  :                  readyFlag = to_WORD((UCHAR *)&pc->LastResponse[0]);

  000cc	e2850028	 add       r0, r5, #0x28
  000d0	e3a08101	 mov       r8, #1, 2
  000d4	eb000000	 bl        to_WORD
  000d8	e1a07000	 mov       r7, r0

; 423  : 				 RETAILMSG(1, (TEXT("is the card ready? %x\r\n"), readyFlag));

  000dc	e1a00807	 mov       r0, r7, lsl #16
  000e0	e1a01820	 mov       r1, r0, lsr #16
  000e4	e59f0388	 ldr       r0, [pc, #0x388]
  000e8	eb000000	 bl        NKDbgPrintfW

; 424  :              }
; 425  :              
; 431  :              
; 438  :              else if (resErr == MMC_CARD_IS_NOT_RESPONDING)

  000ec	ea00001d	 b         |$L36587|
  000f0		 |$L36578|
  000f0	e35400c9	 cmp       r4, #0xC9
  000f4	1a00006e	 bne       |$L37242|

; 439  :              {
; 440  : #if (USE_SD)
; 441  :                     
; 442  :                     OS_WAIT(55);

  000f8	e3a00037	 mov       r0, #0x37
  000fc	eb000000	 bl        platform_delayms

; 443  : 
; 444  :                    
; 445  :                    setupInfo = 0x00FF8000L;

  00100	e3a008ff	 mov       r0, #0xFF, 16
  00104	e3800902	 orr       r0, r0, #2, 18
  00108	e1a06000	 mov       r6, r0

; 446  :                    resErr = mmcSDApplCmd(pc, SDNULL, setupInfo, 0, 0, R3, SD_SEND_OP_COND);

  0010c	e3a00f5a	 mov       r0, #0x5A, 30
  00110	e3800001	 orr       r0, r0, #1
  00114	e58d0008	 str       r0, [sp, #8]
  00118	e3a00003	 mov       r0, #3
  0011c	e58d0004	 str       r0, [sp, #4]
  00120	e3a00000	 mov       r0, #0
  00124	e3a028ff	 mov       r2, #0xFF, 16
  00128	e58d0000	 str       r0, [sp]
  0012c	e3a03000	 mov       r3, #0
  00130	e3822902	 orr       r2, r2, #2, 18
  00134	e3a01000	 mov       r1, #0
  00138	e1a00005	 mov       r0, r5
  0013c	eb000000	 bl        mmcSDApplCmd
  00140	e1a04000	 mov       r4, r0

; 447  :                    RETAILMSG(1, (TEXT("mmcreset:SD_SEND_OP_COND pass\r\n")));                                

  00144	e59f0324	 ldr       r0, [pc, #0x324]
  00148	e58d400c	 str       r4, [sp, #0xC]
  0014c	eb000000	 bl        NKDbgPrintfW

; 448  :                    if (resErr != MMC_CARD_IS_NOT_RESPONDING)

  00150	e35400c9	 cmp       r4, #0xC9
  00154	0a000056	 beq       |$L37242|

; 449  :                    {
; 450  :                          
; 451  :                          sdFlag = YES;

  00158	e3a00001	 mov       r0, #1
  0015c	e1a09000	 mov       r9, r0

; 452  :                          RETAILMSG(1, (TEXT("mmcreset:SD_SEND_OP_COND pass sd card\r\n")));

  00160	e59f0304	 ldr       r0, [pc, #0x304]
  00164	eb000000	 bl        NKDbgPrintfW
  00168		 |$L36587|

; 460  :                            goto END_OF_CARDS_SEARCH;
; 461  :                    }
; 462  :              }
; 463  :              else
; 464  :              {
; 465  :                     
; 466  :                     resErr = MMC_INTERFACE_ERROR;
; 467  :                     goto END_OF_CARDS_SEARCH;
; 468  :              }
; 469  :         }
; 470  : 
; 471  : #if (USE_SD)
; 472  :        
; 473  :         if (sdFlag)

  00168	e1a00809	 mov       r0, r9, lsl #16
  0016c	e1b01820	 movs      r1, r0, lsr #16
  00170	0a00001b	 beq       |$L36592|

; 474  :         {
; 475  :              setupInfo = 0x00FF8000L;

  00174	e3a008ff	 mov       r0, #0xFF, 16
  00178	e3800902	 orr       r0, r0, #2, 18
  0017c	e1a06000	 mov       r6, r0

; 476  : 
; 477  :              
; 481  :             
; 482  :             resErr = mmcSDApplCmd(pc, SDNULL, setupInfo, 0, 0, R3, SD_SEND_OP_COND);

  00180	e3a00003	 mov       r0, #3
  00184	e3a01f5a	 mov       r1, #0x5A, 30
  00188	e58d0004	 str       r0, [sp, #4]
  0018c	e3811001	 orr       r1, r1, #1
  00190	e3a00000	 mov       r0, #0
  00194	e58d1008	 str       r1, [sp, #8]
  00198	e3a028ff	 mov       r2, #0xFF, 16
  0019c	e58d0000	 str       r0, [sp]
  001a0	e3a03000	 mov       r3, #0
  001a4	e3822902	 orr       r2, r2, #2, 18
  001a8	e3a01000	 mov       r1, #0
  001ac	e1a00005	 mov       r0, r5
  001b0	eb000000	 bl        mmcSDApplCmd
  001b4	e1b04000	 movs      r4, r0
  001b8	e58d400c	 str       r4, [sp, #0xC]

; 483  :             if (resErr == MMC_NO_ERROR)

  001bc	1a000008	 bne       |$L36592|

; 484  :             {
; 485  :             	RETAILMSG(1, (TEXT("mmcreset:SD_SEND_OP_COND pass sd card again\r\n")));

  001c0	e59f02a0	 ldr       r0, [pc, #0x2A0]
  001c4	eb000000	 bl        NKDbgPrintfW

; 486  :                 
; 487  :                 cardType = SD_TYPE;
; 488  :                 sdFlag = YES;   

  001c8	e3a00001	 mov       r0, #1
  001cc	e3a03000	 mov       r3, #0
  001d0	e1a09000	 mov       r9, r0

; 489  : 
; 490  :                 
; 491  : 				               
; 492  :                 readyFlag = to_WORD((UCHAR *)&pc->LastResponse[0]);

  001d4	e2850028	 add       r0, r5, #0x28
  001d8	e1a08003	 mov       r8, r3
  001dc	eb000000	 bl        to_WORD
  001e0	e1a07000	 mov       r7, r0
  001e4		 |$L36592|

; 493  : 		

; 494  :             }
; 495  :         }
; 496  : #endif 
; 497  : 
; 498  :         
; 499  :         if (resErr == MMC_CARD_IS_NOT_RESPONDING)

  001e4	e35400c9	 cmp       r4, #0xC9
  001e8	0a000031	 beq       |$L37242|

; 500  :         {
; 501  :              resErr = MMC_INTERFACE_ERROR;
; 502  :              goto END_OF_CARDS_SEARCH;
; 503  :         }
; 504  : 
; 505  :         if ( resErr == MMC_NO_ERROR )   

  001ec	e3540000	 cmp       r4, #0
  001f0	1a000011	 bne       |$L36599|

; 506  :         {
; 507  :              
; 508  :              if ( (readyFlag & CARD_READY_FLAG) )

  001f4	e1a00807	 mov       r0, r7, lsl #16
  001f8	e1a01820	 mov       r1, r0, lsr #16
  001fc	e3110902	 tst       r1, #2, 18
  00200	1a00002f	 bne       |$L37244|

; 512  :             }
; 513  :             

; 514  :             pc->timer--;

  00204	e1d501b8	 ldrh      r0, [r5, #0x18]
  00208	e1a01800	 mov       r1, r0, lsl #16
  0020c	e1a02821	 mov       r2, r1, lsr #16
  00210	e2820cff	 add       r0, r2, #0xFF, 24
  00214	e28010ff	 add       r1, r0, #0xFF
  00218	e1a02801	 mov       r2, r1, lsl #16
  0021c	e1a00822	 mov       r0, r2, lsr #16
  00220	e1c501b8	 strh      r0, [r5, #0x18]

; 515  : 			
; 516  :             OS_WAIT(1);             

  00224	e3a00001	 mov       r0, #1
  00228	eb000000	 bl        platform_delayms

; 517  : 
; 518  :             if ( !pc->timer )

  0022c	e1d531b8	 ldrh      r3, [r5, #0x18]
  00230	e1a00803	 mov       r0, r3, lsl #16
  00234	e1b01820	 movs      r1, r0, lsr #16
  00238	0a000024	 beq       |$L37245|
  0023c		 |$L36599|

; 395  : 
; 396  :    
; 397  :     while (pc->timer)

  0023c	e1d501b8	 ldrh      r0, [r5, #0x18]
  00240	e1a01800	 mov       r1, r0, lsl #16
  00244	e1b02821	 movs      r2, r1, lsr #16
  00248	1affff92	 bne       |$L36575|
  0024c		 |$L36576|

; 523  :             }
; 524  :         }
; 525  :     }
; 526  : 
; 527  :     
; 528  :     i = NO;
; 529  :     for (;;)
; 530  :     {
; 531  : 		RETAILMSG(1, (TEXT("tr to asssign RCA  with ID %d\r\n"), i));

  0024c	e59f01fc	 ldr       r0, [pc, #0x1FC]
  00250	e3a04000	 mov       r4, #0
  00254	e3a01000	 mov       r1, #0
  00258	e1a05004	 mov       r5, r4
  0025c	eb000000	 bl        NKDbgPrintfW

; 532  :                 pc->drive_active = i;

  00260	e59d3010	 ldr       r3, [sp, #0x10]

; 533  :                 
; 534  :         if ( mmcIdentify (pc, cardType, i) != MMC_NO_ERROR )

  00264	e3a02000	 mov       r2, #0
  00268	e1a01008	 mov       r1, r8
  0026c	e1c341be	 strh      r4, [r3, #0x1E]
  00270	e1a00003	 mov       r0, r3
  00274	eb000000	 bl        mmcIdentify
  00278	e3500000	 cmp       r0, #0
  0027c	1a000037	 bne       |$L37246|

; 537  :             
; 538  :             break;        
; 539  :         }
; 540  : 		RETAILMSG(1, (TEXT("after successfully assign RCA, continue\r\n")));

  00280	e3a05000	 mov       r5, #0
  00284	e1a04005	 mov       r4, r5
  00288		 |$L36601|
  00288	e59f01d4	 ldr       r0, [pc, #0x1D4]
  0028c	eb000000	 bl        NKDbgPrintfW

; 541  : 
; 542  :         
; 543  :         if (cardType == SD_TYPE)

  00290	e3580000	 cmp       r8, #0
  00294	1a000010	 bne       |$L36607|

; 544  :         {
; 545  : 			RETAILMSG(1, (TEXT("mmcReset -- It entered SD Card area\r\n")));  

  00298	e59f01c0	 ldr       r0, [pc, #0x1C0]
  0029c	eb000000	 bl        NKDbgPrintfW

; 546  :             
; 547  :             (pc->drive)->RCA = pc->LastResponse[4];

  002a0	e59d5010	 ldr       r5, [sp, #0x10]
  002a4	e5953000	 ldr       r3, [r5]
  002a8	e1d503b0	 ldrh      r0, [r5, #0x30]
  002ac	e1c300be	 strh      r0, [r3, #0xE]

⌨️ 快捷键说明

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