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

📄 sdmmc.cod

📁 ARM对MMC卡的编程文档
💻 COD
📖 第 1 页 / 共 5 页
字号:
; 547  : 			   }
; 548  : 
; 549  :                 
; 550  :                  (pc->drive)->drv_type = cardType;

  002e8	e5950000	 ldr       r0, [r5]

; 551  : 
; 552  :         i++;    

  002ec	e2841001	 add       r1, r4, #1
  002f0	e5808010	 str       r8, [r0, #0x10]
  002f4	e1a00801	 mov       r0, r1, lsl #16
  002f8	e1a05820	 mov       r5, r0, lsr #16

; 553  :              

; 554  : 		  RETAILMSG(1, (TEXT("now, the number of i is %d\r\n"),i));  

  002fc	e59f0134	 ldr       r0, [pc, #0x134]
  00300	e1a01805	 mov       r1, r5, lsl #16
  00304	e1a04821	 mov       r4, r1, lsr #16
  00308	e1a01004	 mov       r1, r4
  0030c	eb000000	 bl        NKDbgPrintfW

; 555  : 		if(i>=1)  


  00310	e3540001	 cmp       r4, #1
  00314	2a000010	 bcs       |$L37245|
  00318	e59f0114	 ldr       r0, [pc, #0x114]
  0031c	e1a01004	 mov       r1, r4
  00320	eb000000	 bl        NKDbgPrintfW
  00324	e59d3010	 ldr       r3, [sp, #0x10]
  00328	e1a02005	 mov       r2, r5
  0032c	e1a01008	 mov       r1, r8
  00330	e1c351be	 strh      r5, [r3, #0x1E]
  00334	e1a00003	 mov       r0, r3
  00338	eb000000	 bl        mmcIdentify
  0033c	e3500000	 cmp       r0, #0
  00340	0affffca	 beq       |$L36598|
  00344	e3a04000	 mov       r4, #0
  00348		 |$L37230|

; 528  :         {
; 529  : 			RETAILMSG(1, (TEXT("asssign RCA is not sucessful! with ID %d\r\n"), i));

  00348	e1a00805	 mov       r0, r5, lsl #16
  0034c	e1a01820	 mov       r1, r0, lsr #16
  00350	e59f00d8	 ldr       r0, [pc, #0xD8]
  00354	eb000000	 bl        NKDbgPrintfW
  00358	ea000000	 b         |$L37231|
  0035c		 |$L37245|

; 383  : #endif
; 384  : #if (USE_SD)
; 385  : DO_ALL_BUS_INTERFACE:
; 386  : #endif
; 387  :     for (i = 0; i < (CID_BYTE_LENGTH/2); pc->LastResponse[i++] = 0); 

  0035c	e3a04000	 mov       r4, #0
  00360		 |$L37231|

; 556  : 			
; 557  :             break;
; 558  :         
; 559  :       

; 560  :     }
; 561  : 
; 562  :         pc->drive_active = NO;

  00360	e59d0010	 ldr       r0, [sp, #0x10]
  00364	e1c041be	 strh      r4, [r0, #0x1E]

; 563  : 
; 564  :         
; 565  :         if ( i == NO )

  00368	e1a00805	 mov       r0, r5, lsl #16
  0036c	e1b04820	 movs      r4, r0, lsr #16
  00370	1a000005	 bne       |$L37244|

; 566  :         {
; 567  :                 
; 568  : 				RETAILMSG(1, (TEXT("No card is found\r\n")));

  00374	e59f00b0	 ldr       r0, [pc, #0xB0]
  00378	eb000000	 bl        NKDbgPrintfW

; 569  :                 resErr = MMC_INTERFACE_ERROR;

  0037c	e3a000d7	 mov       r0, #0xD7
  00380	e1a05000	 mov       r5, r0
  00384	e58d500c	 str       r5, [sp, #0xC]
  00388	ea000000	 b         |$L36611|
  0038c		 |$L37244|
  0038c	e59d500c	 ldr       r5, [sp, #0xC]
  00390		 |$L36611|

; 570  :         }
; 571  : 
; 572  :         devCount += i;

  00390	e1a0080b	 mov       r0, r11, lsl #16
  00394	e0841820	 add       r1, r4, r0, lsr #16
  00398	e1a02801	 mov       r2, r1, lsl #16
  0039c	e1a0b822	 mov       r11, r2, lsr #16
  003a0		 |$END_OF_CARDS_SEARCH$36586|

; 573  : 
; 574  : END_OF_CARDS_SEARCH:
; 575  : 
; 576  : #if (USE_SD)
; 577  :         if (sdFlag != YES)

  003a0	e1a00809	 mov       r0, r9, lsl #16
  003a4	e1a01820	 mov       r1, r0, lsr #16
  003a8	e3510001	 cmp       r1, #1
  003ac	0a00000a	 beq       |$L36614|

; 578  :         {
; 579  :                 if (bInterface < 1 )

  003b0	e1a0080a	 mov       r0, r10, lsl #16
  003b4	e1a01820	 mov       r1, r0, lsr #16
  003b8	e3510001	 cmp       r1, #1

; 580  :                 {
; 581  :                         bInterface++;

  003bc	32810001	 addcc     r0, r1, #1
  003c0	359d400c	 ldrcc     r4, [sp, #0xC]
  003c4	31a01800	 movcc     r1, r0, lsl #16
  003c8	359d5010	 ldrcc     r5, [sp, #0x10]

; 582  :                         sdFlag = YES;

  003cc	33a00001	 movcc     r0, #1
  003d0	31a0a821	 movcc     r10, r1, lsr #16
  003d4	31a09000	 movcc     r9, r0
  003d8	3affff1b	 bcc       |$DO_ALL_BUS_INTERFACE$36570|
  003dc		 |$L36614|

; 583  :                         goto DO_ALL_BUS_INTERFACE;
; 584  :                 }
; 585  :         }
; 586  : #endif
; 587  :          RETAILMSG(1, (TEXT("devCount is following %d\r\n"), devCount));

  003dc	e1a0080b	 mov       r0, r11, lsl #16
  003e0	e1a04820	 mov       r4, r0, lsr #16
  003e4	e59f003c	 ldr       r0, [pc, #0x3C]
  003e8	e1a01004	 mov       r1, r4
  003ec	eb000000	 bl        NKDbgPrintfW

; 588  :         if ( devCount )
; 589  : 		
; 590  :                 resErr = MMC_NO_ERROR;
; 591  :                 
; 592  : #endif 
; 593  : 
; 594  :         pc->error_code = (UINT16)resErr;

  003f0	e59d2010	 ldr       r2, [sp, #0x10]
  003f4	e3540000	 cmp       r4, #0
  003f8	13a00000	 movne     r0, #0
  003fc	11a05000	 movne     r5, r0
  00400	e1a00805	 mov       r0, r5, lsl #16
  00404	e1a01820	 mov       r1, r0, lsr #16

; 595  :         RETAILMSG(1, (TEXT("mmcReset ResErr is as follows %d\r\n"), resErr));

  00408	e59f0014	 ldr       r0, [pc, #0x14]
  0040c	e1c211b6	 strh      r1, [r2, #0x16]
  00410	e1a01005	 mov       r1, r5
  00414	eb000000	 bl        NKDbgPrintfW

; 596  :         return resErr;

  00418	e1a00005	 mov       r0, r5

; 597  : }

  0041c	e28dd014	 add       sp, sp, #0x14
  00420	e8bd8ff0	 ldmia     sp!, {r4 - r11, pc}
  00424		 |$L37252|
  00424	00000000	 DCD       |??_C@_1EG@HFPL@?$AAm?$AAm?$AAc?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?5?$AAR?$AAe?$AAs?$AAE?$AAr?$AAr?$AA?5?$AAi?$AAs?$AA?5?$AAa@|
  00428	00000000	 DCD       |??_C@_1DG@DFMO@?$AAd?$AAe?$AAv?$AAC?$AAo?$AAu?$AAn?$AAt?$AA?5?$AAi?$AAs?$AA?5?$AAf?$AAo?$AAl?$AAl?$AAo?$AAw?$AAi?$AAn@|
  0042c	00000000	 DCD       |??_C@_1CG@DHEP@?$AAN?$AAo?$AA?5?$AAc?$AAa?$AAr?$AAd?$AA?5?$AAi?$AAs?$AA?5?$AAf?$AAo?$AAu?$AAn?$AAd?$AA?$AN?$AA?6?$AA?$AA@|
  00430	00000000	 DCD       |??_C@_1FG@OKKD@?$AAa?$AAs?$AAs?$AAs?$AAi?$AAg?$AAn?$AA?5?$AAR?$AAC?$AAA?$AA?5?$AAi?$AAs?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAs@|
  00434	00000000	 DCD       |??_C@_1EA@FIDN@?$AAt?$AAr?$AA?5?$AAt?$AAo?$AA?5?$AAa?$AAs?$AAs?$AAs?$AAi?$AAg?$AAn?$AA?5?$AAR?$AAC?$AAA?$AA?5?$AA?5?$AAw@|
  00438	00000000	 DCD       |??_C@_1DK@LFHM@?$AAn?$AAo?$AAw?$AA?0?$AA?5?$AAt?$AAh?$AAe?$AA?5?$AAn?$AAu?$AAm?$AAb?$AAe?$AAr?$AA?5?$AAo?$AAf?$AA?5?$AAi@|
  0043c	00000000	 DCD       |??_C@_1EE@PPN@?$AAM?$AAM?$AAC?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?5?$AA?9?$AA?5?$AAp?$AAc?$AA?9?$AA?$DO?$AAd?$AAr?$AAi?$AAv?$AAe@|
  00440	00000000	 DCD       |??_C@_1CC@MGHJ@?$AAc?$AAa?$AAr?$AAd?$AA?5?$AAi?$AAs?$AA?5?$AAr?$AAe?$AAa?$AAd?$AAy?$AA?$CB?$AA?$AN?$AA?6?$AA?$AA@|
  00444	00000000	 DCD       |??_C@_1EM@DOL@?$AAm?$AAm?$AAc?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?5?$AA?9?$AA?9?$AA?5?$AAI?$AAt?$AA?5?$AAe?$AAn?$AAt?$AAe?$AAr@|
  00448	00000000	 DCD       |??_C@_1FE@BKCB@?$AAa?$AAf?$AAt?$AAe?$AAr?$AA?5?$AAs?$AAu?$AAc?$AAc?$AAe?$AAs?$AAs?$AAf?$AAu?$AAl?$AAl?$AAy?$AA?5?$AAa@|
  0044c	00000000	 DCD       |??_C@_1DA@JCDP@?$AAi?$AAs?$AA?5?$AAt?$AAh?$AAe?$AA?5?$AAc?$AAa?$AAr?$AAd?$AA?5?$AAr?$AAe?$AAa?$AAd?$AAy?$AA?$DP?$AA?5?$AA?$CF@|
  00450	00000000	 DCD       |??_C@_1BE@CPBE@?$AAu?$AAs?$AAe?$AAr?$AA_?$AAs?$AAd?$AA?$AN?$AA?6?$AA?$AA@|
  00454	00000000	 DCD       |??_C@_1CM@KBHA@?$AAm?$AAm?$AAc?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAe?$AAn?$AAt?$AAe?$AAr?$AAe?$AAd?$AA?5?$AA?$AN@|
  00458		 |$M37249|

			 ENDP  ; |mmcReset|

	EXPORT	|??_C@_1DG@GHFO@?$AAm?$AAm?$AAc?$AAI?$AAd?$AAe?$AAn?$AAt?$AAi?$AAf?$AAy?$AA?$CI?$AA?$CJ?$AA?5?$AAi?$AAs?$AA?5?$AAe?$AAn?$AAt@| [ DATA ] ; `string'
	EXPORT	|??_C@_1EG@HGFE@?$AAA?$AAL?$AAL?$AA_?$AAS?$AAE?$AAN?$AAD?$AA_?$AAC?$AAI?$AAD?$AA?5?$AAc?$AAo?$AAm?$AAm?$AAa?$AAn?$AAd@| [ DATA ] ; `string'
	EXPORT	|??_C@_1FI@DDI@?$AAB?$AAe?$AAf?$AAo?$AAr?$AAe?$AA?5?$AAs?$AAe?$AAn?$AAd?$AAi?$AAn?$AAg?$AA?5?$AAS?$AAE?$AAT?$AA_?$AAR@| [ DATA ] ; `string'
	EXPORT	|??_C@_1DE@FGPN@?$AAr?$AAe?$AAs?$AAE?$AAr?$AAr?$AA?5?$AAi?$AAs?$AA?5?$AAa?$AAs?$AA?5?$AAf?$AAo?$AAl?$AAl?$AAo?$AAw?$AAs@| [ DATA ] ; `string'

  00000			 AREA	 |.text| { |mmcIdentify| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$mmcIdentify|, PDATA, SELECTION=5, ASSOC=|.text| { |mmcIdentify| } ; comdat associative
|$T37264| DCD	|mmcIdentify|
	DCD	0x40003c02

  00000			 AREA	 |.rdata| { |??_C@_1DG@GHFO@?$AAm?$AAm?$AAc?$AAI?$AAd?$AAe?$AAn?$AAt?$AAi?$AAf?$AAy?$AA?$CI?$AA?$CJ?$AA?5?$AAi?$AAs?$AA?5?$AAe?$AAn?$AAt@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1DG@GHFO@?$AAm?$AAm?$AAc?$AAI?$AAd?$AAe?$AAn?$AAt?$AAi?$AAf?$AAy?$AA?$CI?$AA?$CJ?$AA?5?$AAi?$AAs?$AA?5?$AAe?$AAn?$AAt@| DCB "m"
	DCB	0x0, "m", 0x0, "c", 0x0, "I", 0x0, "d", 0x0, "e", 0x0, "n"
	DCB	0x0, "t", 0x0, "i", 0x0, "f", 0x0, "y", 0x0, "(", 0x0, ")"
	DCB	0x0, " ", 0x0, "i", 0x0, "s", 0x0, " ", 0x0, "e", 0x0, "n"
	DCB	0x0, "t", 0x0, "e", 0x0, "r", 0x0, "e", 0x0, "d", 0x0, 0xd
	DCB	0x0, 0xa, 0x0, 0x0, 0x0			; `string'

  00000			 AREA	 |.rdata| { |??_C@_1EG@HGFE@?$AAA?$AAL?$AAL?$AA_?$AAS?$AAE?$AAN?$AAD?$AA_?$AAC?$AAI?$AAD?$AA?5?$AAc?$AAo?$AAm?$AAm?$AAa?$AAn?$AAd@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EG@HGFE@?$AAA?$AAL?$AAL?$AA_?$AAS?$AAE?$AAN?$AAD?$AA_?$AAC?$AAI?$AAD?$AA?5?$AAc?$AAo?$AAm?$AAm?$AAa?$AAn?$AAd@| DCB "A"
	DCB	0x0, "L", 0x0, "L", 0x0, "_", 0x0, "S", 0x0, "E", 0x0, "N"
	DCB	0x0, "D", 0x0, "_", 0x0, "C", 0x0, "I", 0x0, "D", 0x0, " "
	DCB	0x0, "c", 0x0, "o", 0x0, "m", 0x0, "m", 0x0, "a", 0x0, "n"
	DCB	0x0, "d", 0x0, " ", 0x0, "f", 0x0, "a", 0x0, "i", 0x0, "l"
	DCB	0x0, "s", 0x0, " ", 0x0, "[", 0x0, "%", 0x0, "d", 0x0, "]"
	DCB	0x0, "!", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_1FI@DDI@?$AAB?$AAe?$AAf?$AAo?$AAr?$AAe?$AA?5?$AAs?$AAe?$AAn?$AAd?$AAi?$AAn?$AAg?$AA?5?$AAS?$AAE?$AAT?$AA_?$AAR@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FI@DDI@?$AAB?$AAe?$AAf?$AAo?$AAr?$AAe?$AA?5?$AAs?$AAe?$AAn?$AAd?$AAi?$AAn?$AAg?$AA?5?$AAS?$AAE?$AAT?$AA_?$AAR@| DCB "B"
	DCB	0x0, "e", 0x0, "f", 0x0, "o", 0x0, "r", 0x0, "e", 0x0, " "
	DCB	0x0, "s", 0x0, "e", 0x0, "n", 0x0, "d", 0x0, "i", 0x0, "n"
	DCB	0x0, "g", 0x0, " ", 0x0, "S", 0x0, "E", 0x0, "T", 0x0, "_"
	DCB	0x0, "R", 0x0, "E", 0x0, "L", 0x0, "A", 0x0, "T", 0x0, "I"
	DCB	0x0, "V", 0x0, "E", 0x0, "_", 0x0, "A", 0x0, "D", 0x0, "D"
	DCB	0x0, "R", 0x0, " ", 0x0, "c", 0x0, "o", 0x0, "m", 0x0, "m"
	DCB	0x0, "a", 0x0, "n", 0x0, "d", 0x0, "!", 0x0, 0xd, 0x0, 0xa
	DCB	0x0, 0x0, 0x0				; `string'

  00000			 AREA	 |.rdata| { |??_C@_1DE@FGPN@?$AAr?$AAe?$AAs?$AAE?$AAr?$AAr?$AA?5?$AAi?$AAs?$AA?5?$AAa?$AAs?$AA?5?$AAf?$AAo?$AAl?$AAl?$AAo?$AAw?$AAs@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1DE@FGPN@?$AAr?$AAe?$AAs?$AAE?$AAr?$AAr?$AA?5?$AAi?$AAs?$AA?5?$AAa?$AAs?$AA?5?$AAf?$AAo?$AAl?$AAl?$AAo?$AAw?$AAs@| DCB "r"
	DCB	0x0, "e", 0x0, "s", 0x0, "E", 0x0, "r", 0x0, "r", 0x0, " "
	DCB	0x0, "i", 0x0, "s", 0x0, " ", 0x0, "a", 0x0, "s", 0x0, " "
	DCB	0x0, "f", 0x0, "o", 0x0, "l", 0x0, "l", 0x0, "o", 0x0, "w"
	DCB	0x0, "s", 0x0, " ", 0x0, "%", 0x0, "d", 0x0, 0xd, 0x0, 0xa
	DCB	0x0, 0x0, 0x0				; `string'
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |mmcIdentify| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |mmcIdentify| PROC

; 625  : {

  00000	e92d40f0	 stmdb     sp!, {r4 - r7, lr}
  00004	e24dd004	 sub       sp, sp, #4
  00008		 |$M37262|
  00008	e1a07000	 mov       r7, r0
  0000c	e1a04001	 mov       r4, r1
  00010	e1a05002	 mov       r5, r2

; 626  :     MMC_CC  resErr;
; 627  :     RETAILMSG(1, (TEXT("mmcIdentify() is entered\r\n")));

  00014	e59f00d0	 ldr       r0, [pc, #0xD0]
  00018	eb000000	 bl        NKDbgPrintfW

; 628  :         
; 629  :     resErr = mmcCommandAndResponse ( pc,
; 630  :                 0L,
; 631  :                 ALL_SEND_CID, 
; 632  :                 0,
; 633  :                 R2 );

  0001c	e3a03002	 mov       r3, #2
  00020	e58d3000	 str       r3, [sp]
  00024	e3a02002	 mov       r2, #2
  00028	e3a03000	 mov       r3, #0
  0002c	e3a01000	 mov       r1, #0
  00030	e1a00007	 mov       r0, r7
  00034	eb000000	 bl        mmcCommandAndResponse
  00038	e1b06000	 movs      r6, r0

; 634  :     if ( resErr != MMC_NO_ERROR )

  0003c	0a000006	 beq       |$L36628|

; 635  :     {
; 636  : 		RETAILMSG(1, (TEXT("ALL_SEND_CID command fails [%d]!\r\n"),resErr));

  00040	e59f00a0	 ldr       r0, [pc, #0xA0]
  00044	e1a01006	 mov       r1, r6
  00048	eb000000	 bl        NKDbgPrintfW

; 637  :         pc->error_code = (UINT16)resErr;

  0004c	e1a03806	 mov       r3, r6, lsl #16
  00050	e1a00823	 mov       r0, r3, lsr #16
  00054	e1c701b6	 strh      r0, [r7, #0x16]

; 638  :         return resErr;

  00058	ea00001d	 b         |$L36625|
  0005c		 |$L36628|

; 639  :     }
; 640  : 
; 641  :         
; 642  :         if (cardType == SD_TYPE)

  0005c	e3540000	 cmp       r4, #0
  00060	1a000007	 bne       |$L36631|

; 643  :         {
; 644  :                 
; 649  :                 resErr = mmcCommandAndResponse ( pc,
; 650  :                                 0L,
; 651  :                 SET_RELATIVE_ADDR, 
; 652  :                 0,
; 653  :                                 R6);

  00064	e3a00006	 mov       r0, #6
  00068	e58d0000	 str       r0, [sp]
  0006c	e3a03000	 mov       r3, #0
  00070	e3a02003	 mov       r2, #3
  00074	e3a01000	 mov       r1, #0
  00078	e1a00007	 mov       r0, r7
  0007c	eb000000	 bl        mmcCommandAndResponse

; 654  : 
; 655  :                 
; 656  :         }

⌨️ 快捷键说明

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