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

📄 sdmmc.cod

📁 ARM对MMC卡的编程文档
💻 COD
📖 第 1 页 / 共 5 页
字号:
; 657  :         else

  00080	ea00000b	 b         |$L37261|
  00084		 |$L36631|

; 658  :         {
; 659  : 			      RETAILMSG(1, (TEXT("Before sending SET_RELATIVE_ADDR command!\r\n")));

  00084	e59f0058	 ldr       r0, [pc, #0x58]
  00088	eb000000	 bl        NKDbgPrintfW

; 660  : 			
; 661  :                 
; 668  :                 resErr = mmcCommandAndResponse ( pc,
; 669  :                                 ((((ULONG)cardID) + 1L) << 16),
; 670  :                 SET_RELATIVE_ADDR, 
; 671  :                 0,
; 672  :                 R1 );

  0008c	e1a00805	 mov       r0, r5, lsl #16
  00090	e1a01820	 mov       r1, r0, lsr #16
  00094	e2810001	 add       r0, r1, #1
  00098	e3a03001	 mov       r3, #1
  0009c	e58d3000	 str       r3, [sp]
  000a0	e1a01800	 mov       r1, r0, lsl #16
  000a4	e3a03000	 mov       r3, #0
  000a8	e3a02003	 mov       r2, #3
  000ac	e1a00007	 mov       r0, r7
  000b0	eb000000	 bl        mmcCommandAndResponse
  000b4		 |$L37261|
  000b4	e1a04000	 mov       r4, r0

; 673  :         }
; 674  : 
; 675  :     pc->error_code = (UINT16)resErr;

  000b8	e1a00804	 mov       r0, r4, lsl #16
  000bc	e1a01820	 mov       r1, r0, lsr #16

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

  000c0	e59f0018	 ldr       r0, [pc, #0x18]
  000c4	e1c711b6	 strh      r1, [r7, #0x16]
  000c8	e1a01004	 mov       r1, r4
  000cc	eb000000	 bl        NKDbgPrintfW

; 677  :     return resErr;

  000d0	e1a06004	 mov       r6, r4
  000d4		 |$L36625|

; 638  :         return resErr;

  000d4	e1a00006	 mov       r0, r6

; 678  : }

  000d8	e28dd004	 add       sp, sp, #4
  000dc	e8bd80f0	 ldmia     sp!, {r4 - r7, pc}
  000e0		 |$L37266|
  000e0	00000000	 DCD       |??_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@|
  000e4	00000000	 DCD       |??_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@|
  000e8	00000000	 DCD       |??_C@_1EG@HGFE@?$AAA?$AAL?$AAL?$AA_?$AAS?$AAE?$AAN?$AAD?$AA_?$AAC?$AAI?$AAD?$AA?5?$AAc?$AAo?$AAm?$AAm?$AAa?$AAn?$AAd@|
  000ec	00000000	 DCD       |??_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@|
  000f0		 |$M37263|

			 ENDP  ; |mmcIdentify|

	EXPORT	|??_C@_1EE@FBLB@?$AAm?$AAm?$AAc?$AAS?$AAe?$AAt?$AAS?$AAt?$AAa?$AAn?$AAd?$AAb?$AAy?$AAS?$AAt?$AAa?$AAt?$AAe?$AA?$CI?$AA?$CJ@| [ DATA ] ; `string'
	EXPORT	|??_C@_1EA@GHLI@?$AAm?$AAm?$AAc?$AAS?$AAe?$AAt?$AAS?$AAt?$AAa?$AAn?$AAd?$AAb?$AAy?$AAS?$AAt?$AAa?$AAt?$AAe?$AA?$CI?$AA?$CJ@| [ DATA ] ; `string'
	EXPORT	|??_C@_1FA@DLJA@?$AAm?$AAm?$AAc?$AAS?$AAe?$AAt?$AAS?$AAt?$AAa?$AAn?$AAd?$AAb?$AAy?$AAS?$AAt?$AAa?$AAt?$AAe?$AA?$CI?$AA?$CJ@| [ DATA ] ; `string'
	EXPORT	|??_C@_1EG@NKPI@?$AAm?$AAm?$AAc?$AAS?$AAe?$AAt?$AAS?$AAt?$AAa?$AAn?$AAd?$AAb?$AAy?$AAS?$AAt?$AAa?$AAt?$AAe?$AA?5?$AAw@| [ DATA ] ; `string'
	EXPORT	|mmcSetStandbyState|

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

  00000			 AREA	 |.pdata$$mmcSetStandbyState|, PDATA, SELECTION=5, ASSOC=|.text| { |mmcSetStandbyState| } ; comdat associative
|$T37285| DCD	|mmcSetStandbyState|
	DCD	0x40004a02

  00000			 AREA	 |.rdata| { |??_C@_1EE@FBLB@?$AAm?$AAm?$AAc?$AAS?$AAe?$AAt?$AAS?$AAt?$AAa?$AAn?$AAd?$AAb?$AAy?$AAS?$AAt?$AAa?$AAt?$AAe?$AA?$CI?$AA?$CJ@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EE@FBLB@?$AAm?$AAm?$AAc?$AAS?$AAe?$AAt?$AAS?$AAt?$AAa?$AAn?$AAd?$AAb?$AAy?$AAS?$AAt?$AAa?$AAt?$AAe?$AA?$CI?$AA?$CJ@| DCB "m"
	DCB	0x0, "m", 0x0, "c", 0x0, "S", 0x0, "e", 0x0, "t", 0x0, "S"
	DCB	0x0, "t", 0x0, "a", 0x0, "n", 0x0, "d", 0x0, "b", 0x0, "y"
	DCB	0x0, "S", 0x0, "t", 0x0, "a", 0x0, "t", 0x0, "e", 0x0, "("
	DCB	0x0, ")", 0x0, " ", 0x0, "i", 0x0, "s", 0x0, " ", 0x0, "e"
	DCB	0x0, "n", 0x0, "t", 0x0, "e", 0x0, "r", 0x0, "e", 0x0, "d"
	DCB	0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0	; `string'

  00000			 AREA	 |.rdata| { |??_C@_1EA@GHLI@?$AAm?$AAm?$AAc?$AAS?$AAe?$AAt?$AAS?$AAt?$AAa?$AAn?$AAd?$AAb?$AAy?$AAS?$AAt?$AAa?$AAt?$AAe?$AA?$CI?$AA?$CJ@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EA@GHLI@?$AAm?$AAm?$AAc?$AAS?$AAe?$AAt?$AAS?$AAt?$AAa?$AAn?$AAd?$AAb?$AAy?$AAS?$AAt?$AAa?$AAt?$AAe?$AA?$CI?$AA?$CJ@| DCB "m"
	DCB	0x0, "m", 0x0, "c", 0x0, "S", 0x0, "e", 0x0, "t", 0x0, "S"
	DCB	0x0, "t", 0x0, "a", 0x0, "n", 0x0, "d", 0x0, "b", 0x0, "y"
	DCB	0x0, "S", 0x0, "t", 0x0, "a", 0x0, "t", 0x0, "e", 0x0, "("
	DCB	0x0, ")", 0x0, " ", 0x0, "T", 0x0, "R", 0x0, "A", 0x0, "N"
	DCB	0x0, "S", 0x0, "F", 0x0, "E", 0x0, "R", 0x0, 0xd, 0x0, 0xa
	DCB	0x0, 0x0, 0x0				; `string'

  00000			 AREA	 |.rdata| { |??_C@_1FA@DLJA@?$AAm?$AAm?$AAc?$AAS?$AAe?$AAt?$AAS?$AAt?$AAa?$AAn?$AAd?$AAb?$AAy?$AAS?$AAt?$AAa?$AAt?$AAe?$AA?$CI?$AA?$CJ@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FA@DLJA@?$AAm?$AAm?$AAc?$AAS?$AAe?$AAt?$AAS?$AAt?$AAa?$AAn?$AAd?$AAb?$AAy?$AAS?$AAt?$AAa?$AAt?$AAe?$AA?$CI?$AA?$CJ@| DCB "m"
	DCB	0x0, "m", 0x0, "c", 0x0, "S", 0x0, "e", 0x0, "t", 0x0, "S"
	DCB	0x0, "t", 0x0, "a", 0x0, "n", 0x0, "d", 0x0, "b", 0x0, "y"
	DCB	0x0, "S", 0x0, "t", 0x0, "a", 0x0, "t", 0x0, "e", 0x0, "("
	DCB	0x0, ")", 0x0, " ", 0x0, "M", 0x0, "M", 0x0, "C", 0x0, "_"
	DCB	0x0, "C", 0x0, "A", 0x0, "R", 0x0, "D", 0x0, "_", 0x0, "I"
	DCB	0x0, "S", 0x0, "_", 0x0, "B", 0x0, "U", 0x0, "S", 0x0, "Y"
	DCB	0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0	; `string'

  00000			 AREA	 |.rdata| { |??_C@_1EG@NKPI@?$AAm?$AAm?$AAc?$AAS?$AAe?$AAt?$AAS?$AAt?$AAa?$AAn?$AAd?$AAb?$AAy?$AAS?$AAt?$AAa?$AAt?$AAe?$AA?5?$AAw@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EG@NKPI@?$AAm?$AAm?$AAc?$AAS?$AAe?$AAt?$AAS?$AAt?$AAa?$AAn?$AAd?$AAb?$AAy?$AAS?$AAt?$AAa?$AAt?$AAe?$AA?5?$AAw@| DCB "m"
	DCB	0x0, "m", 0x0, "c", 0x0, "S", 0x0, "e", 0x0, "t", 0x0, "S"
	DCB	0x0, "t", 0x0, "a", 0x0, "n", 0x0, "d", 0x0, "b", 0x0, "y"
	DCB	0x0, "S", 0x0, "t", 0x0, "a", 0x0, "t", 0x0, "e", 0x0, " "
	DCB	0x0, "w", 0x0, "i", 0x0, "t", 0x0, "h", 0x0, " ", 0x0, "e"
	DCB	0x0, "r", 0x0, "r", 0x0, "o", 0x0, "r", 0x0, " ", 0x0, "%"
	DCB	0x0, "d", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy

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

  00000		 |mmcSetStandbyState| PROC

; 699  : {

  00000	e92d4ff0	 stmdb     sp!, {r4 - r11, lr}
  00004	e24dd004	 sub       sp, sp, #4
  00008		 |$M37283|
  00008	e1a09000	 mov       r9, r0
  0000c	e1a04001	 mov       r4, r1

; 751  :                 goto REASSURE_STANDBY_STATE;

  00010	e1a00804	 mov       r0, r4, lsl #16
  00014	e1a01820	 mov       r1, r0, lsr #16
  00018	e1a05801	 mov       r5, r1, lsl #16
  0001c	e3a0a000	 mov       r10, #0
  00020	e3a0b001	 mov       r11, #1
  00024		 |$REASSURE_STANDBY_STATE$36645|
  00024	e59f00f8	 ldr       r0, [pc, #0xF8]
  00028	e1a07004	 mov       r7, r4
  0002c	eb000000	 bl        NKDbgPrintfW
  00030	e1a0600a	 mov       r6, r10
  00034		 |$L36647|
  00034	e3a03000	 mov       r3, #0
  00038	e58db000	 str       r11, [sp]
  0003c	e3a0200d	 mov       r2, #0xD
  00040	e1a01005	 mov       r1, r5
  00044	e1a00009	 mov       r0, r9
  00048	eb000000	 bl        mmcCommandAndResponse
  0004c	e1b08000	 movs      r8, r0
  00050	1a000027	 bne       |$DONE_SET_TO_STANDBY_STATE$36652|
  00054	e1d902b2	 ldrh      r0, [r9, #0x22]
  00058	e1a01800	 mov       r1, r0, lsl #16
  0005c	e1a02821	 mov       r2, r1, lsr #16
  00060	e3520003	 cmp       r2, #3
  00064	0a000022	 beq       |$DONE_SET_TO_STANDBY_STATE$36652|

; 700  :     MMC_CC  resErr;
; 701  :         INT16   loopCnt;
; 702  :         UINT16  mmcRCA;
; 703  : 
; 704  : REASSURE_STANDBY_STATE:
; 705  :         mmcRCA = RCA;
; 706  : 		RETAILMSG(1, (TEXT("mmcSetStandbyState() is entered\r\n")));
; 707  :         for (loopCnt = 0; loopCnt < 100; loopCnt++)
; 708  :         {
; 709  :                 
; 710  :                 resErr = mmcCommandAndResponse ( pc,
; 711  :                                         (((ULONG)RCA) << 16),
; 712  :                                         SEND_STATUS,
; 713  :                                         0,
; 714  :                                         R1 );
; 715  : 
; 716  :                 if (resErr != MMC_NO_ERROR )
; 717  :                         goto DONE_SET_TO_STANDBY_STATE;
; 718  : 
; 719  :                 if (pc->currentState == STANDBY)
; 720  :                         goto DONE_SET_TO_STANDBY_STATE;
; 721  : 
; 722  :                 if (pc->currentState == TRANSFER)

  00068	e3520004	 cmp       r2, #4
  0006c	0a000009	 beq       |$L37274|
  00070	e1a00806	 mov       r0, r6, lsl #16
  00074	e1a01840	 mov       r1, r0, asr #16
  00078	e2812001	 add       r2, r1, #1
  0007c	e1a00802	 mov       r0, r2, lsl #16
  00080	e1a06840	 mov       r6, r0, asr #16
  00084	e1a01806	 mov       r1, r6, lsl #16
  00088	e1a00841	 mov       r0, r1, asr #16
  0008c	e3500064	 cmp       r0, #0x64
  00090	baffffe7	 blt       |$L36647|

; 730  :                         break;
; 731  :                 }
; 732  : 
; 733  :         }
; 734  : 
; 735  :         if (loopCnt == 100)

  00094	ea000002	 b         |$L36649|
  00098		 |$L37274|

; 723  :                 {
; 724  :                         
; 728  :                         mmcRCA = 0;
; 729  : 						RETAILMSG(1, (TEXT("mmcSetStandbyState() TRANSFER\r\n")));

  00098	e59f0080	 ldr       r0, [pc, #0x80]
  0009c	e1a0700a	 mov       r7, r10
  000a0	eb000000	 bl        NKDbgPrintfW
  000a4		 |$L36649|

; 730  :                         break;
; 731  :                 }
; 732  : 
; 733  :         }
; 734  : 
; 735  :         if (loopCnt == 100)

  000a4	e1a00806	 mov       r0, r6, lsl #16
  000a8	e1a01820	 mov       r1, r0, lsr #16
  000ac	e3510064	 cmp       r1, #0x64
  000b0	0a00000c	 beq       |$L37275|

; 739  :                 goto DONE_SET_TO_STANDBY_STATE;
; 740  :         }
; 741  : 
; 742  : 
; 743  :         
; 744  :         
; 745  :         resErr = mmcCommandAndResponse ( pc,
; 746  :                                         (((ULONG)mmcRCA) << 16),
; 747  :                                         SELECT_DESELECT_CARD,
; 748  :                                         0,
; 749  :                                         R1 );

  000b4	e1a00807	 mov       r0, r7, lsl #16
  000b8	e58db000	 str       r11, [sp]
  000bc	e1a01820	 mov       r1, r0, lsr #16
  000c0	e3a03000	 mov       r3, #0
  000c4	e3a02007	 mov       r2, #7
  000c8	e1a01801	 mov       r1, r1, lsl #16
  000cc	e1a00009	 mov       r0, r9
  000d0	eb000000	 bl        mmcCommandAndResponse
  000d4	e1b08000	 movs      r8, r0

; 750  :         if ((resErr == MMC_NO_ERROR) || (resErr == MMC_CARD_IS_NOT_RESPONDING))

  000d8	0affffd1	 beq       |$REASSURE_STANDBY_STATE$36645|
  000dc	e35800c9	 cmp       r8, #0xC9
  000e0	0affffcf	 beq       |$REASSURE_STANDBY_STATE$36645|

; 751  :                 goto REASSURE_STANDBY_STATE;

  000e4	ea000002	 b         |$DONE_SET_TO_STANDBY_STATE$36652|
  000e8		 |$L37275|

; 736  :         {
; 737  : 			    RETAILMSG(1, (TEXT("mmcSetStandbyState() MMC_CARD_IS_BUSY\r\n")));

  000e8	e59f002c	 ldr       r0, [pc, #0x2C]
  000ec	eb000000	 bl        NKDbgPrintfW

; 738  :                 resErr = MMC_CARD_IS_BUSY;

  000f0	e3a080cd	 mov       r8, #0xCD
  000f4		 |$DONE_SET_TO_STANDBY_STATE$36652|

; 752  : 
; 753  : DONE_SET_TO_STANDBY_STATE:
; 754  : 
; 755  :     pc->error_code = (UINT16)resErr;

  000f4	e1a00808	 mov       r0, r8, lsl #16
  000f8	e1a01820	 mov       r1, r0, lsr #16

; 756  : 	RETAILMSG(1, (TEXT("mmcSetStandbyState with error %d\r\n"), resErr));

  000fc	e59f0014	 ldr       r0, [pc, #0x14]
  00100	e1c911b6	 strh      r1, [r9, #0x16]
  00104	e1a01008	 mov       r1, r8
  00108	eb000000	 bl        NKDbgPrintfW

; 757  :     return (resErr);

  0010c	e1a00008	 mov       r0, r8

; 758  : }

  00110	e28dd004	 add       sp, sp, #4
  00114	e8bd8ff0	 ldmia     sp!, {r4 - r11, pc}
  00118		 |$L37287|
  00118	00000000	 DCD       |??_C@_1EG@NKPI@?$AAm?$AAm?$AAc?$AAS?$AAe?$AAt?$AAS?$AAt?$AAa?$AAn?$AAd?$AAb?$AAy?$AAS?$AAt?$AAa?$AAt?$AAe?$AA?5?$AAw@|
  0011c	00000000	 DCD       |??_C@_1FA@DLJA@?$AAm?$AAm?$AAc?$AAS?$AAe?$AAt?$AAS?$AAt?$AAa?$AAn?$AAd?$AAb?$AAy?$AAS?$AAt?$AAa?$AAt?$AAe?$AA?$CI?$AA?$CJ@|
  00120	00000000	 DCD       |??_C@_1EA@GHLI@?$AAm?$AAm?$AAc?$AAS?$AAe?$AAt?$AAS?$AAt?$AAa?$AAn?$AAd?$AAb?$AAy?$AAS?$AAt?$AAa?$AAt?$AAe?$AA?$CI?$AA?$CJ@|
  00124	00000000	 DCD       |??_C@_1EE@FBLB@?$AAm?$AAm?$AAc?$AAS?$AAe?$AAt?$AAS?$AAt?$AAa?$AAn?$AAd?$AAb?$AAy?$AAS?$AAt?$AAa?$AAt?$AAe?$AA?$CI?$AA?$CJ@|
  00128		 |$M37284|

			 ENDP  ; |mmcSetStandbyState|


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

  00000			 AREA	 |.pdata$$mmcSetXferState|, PDATA, SELECTION=5, ASSOC=|.text| { |mmcSetXferState| } ; comdat associative
|$T37304| DCD	|mmcSetXferState|
	DCD	0x40003402
; Function compile flags: /Ogsy

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

  00000		 |mmcSetXferState| PROC

; 779  : {

  00000	e92d40f0	 stmdb     sp!, {r4 - r7, lr}
  00004	e24dd004	 sub       sp, sp, #4
  00008		 |$M37302|
  00008	e1a06000	 mov       r6, r0

; 817  :                 goto REASSURE_XFER_STATE;

  0000c	e1a00801	 mov       r0, r1, lsl #16
  00010	e1a01820	 mov       r1, r0, lsr #16
  00014	e1a05801	 mov       r5, r1, lsl #16
  00018	e3a07001	 mov       r7, #1
  0001c		 |$REASSURE_XFER_STATE$36670|

; 780  :     MMC_CC  resErr;
; 781  :         INT16   loopCnt;
; 782  : 
; 783  : REASSURE_XFER_STATE:        
; 784  :         for (

⌨️ 快捷键说明

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