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

📄 sdmmc.cod

📁 ARM对MMC卡的编程文档
💻 COD
📖 第 1 页 / 共 5 页
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 12.20.9615 

	TTL	c:\wince420\platform\sdklh7a404\drivers\sdmmc\driver\.\sdmmc.c
	CODE32

  00000			 AREA	 |.drectve|, DRECTVE
	DCB	"-defaultlib:coredll.lib "
	DCB	"-defaultlib:corelibc.lib "


  00000			 AREA	 |.data|, DATA
	 COMMON	|multipleRdWr|, 0x2

	EXPORT	|mmcSDApplCmd|
	EXPORT	|mmcSetXferState|
	IMPORT	|platform_delayms|
	IMPORT	|mmcCommandAndResponse|
	IMPORT	|receive_data|
; File c:\wince420\platform\sdklh7a404\drivers\sdmmc\driver\sdmmc.c

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

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

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

  00000		 |mmcSDApplCmd| PROC

; 68   : {

  00000	e92d4ff0	 stmdb     sp!, {r4 - r11, lr}
  00004	e24dd004	 sub       sp, sp, #4
  00008		 |$M37230|
  00008	e1a0b000	 mov       r11, r0
  0000c	e1a08001	 mov       r8, r1
  00010	e1a07002	 mov       r7, r2

; 69   :     MMC_CC  respErr;
; 70   :         UINT16  tLength;
; 71   : 
; 72   :         tLength = 0;
; 73   :         if (Cmd & SECURITY_CMD_BIT)

  00014	e1dd53b0	 ldrh      r5, [sp, #0x30]
  00018	e3a0a000	 mov       r10, #0

; 74   :                 tLength = noBlocks;
; 75   : 
; 76   : #if (USE_SPI || USE_SPI_EMULATION)
; 77   :         
; 78   :     
; 79   :     
; 80   :     selectChip( RCA );
; 81   : 
; 82   :     
; 83   :     respErr = mmcCommandAndResponse ( pc,
; 84   :             (((ULONG)RCA) << 16),
; 85   :                         APPL_CMD,
; 86   :             0,
; 87   :             R1 );
; 88   :     
; 89   :     
; 90   :     deSelectChip( RCA );
; 91   : #else
; 92   :          
; 93   :     if (buff)

  0001c	e1dd42b8	 ldrh      r4, [sp, #0x28]
  00020	e1a00805	 mov       r0, r5, lsl #16
  00024	e1a09820	 mov       r9, r0, lsr #16
  00028	e1a01809	 mov       r1, r9, lsl #16
  0002c	e1a00821	 mov       r0, r1, lsr #16
  00030	e1a02800	 mov       r2, r0, lsl #16
  00034	e1a01822	 mov       r1, r2, lsr #16
  00038	e2116902	 ands      r6, r1, #2, 18
  0003c	11a0a003	 movne     r10, r3
  00040	e3580000	 cmp       r8, #0

; 94   :     {
; 95   :         
; 96   :                 respErr = mmcSetXferState (pc, RCA);

  00044	11a01004	 movne     r1, r4
  00048	11a0000b	 movne     r0, r11
  0004c	1b000000	 blne      mmcSetXferState

; 97   :     }
; 98   : 
; 99   :     
; 100  :     respErr = mmcCommandAndResponse ( pc,
; 101  :                         (((ULONG)RCA) << 16),
; 102  :                         APPL_CMD, 
; 103  :             0,
; 104  :             R1 );

  00050	e3a00001	 mov       r0, #1
  00054	e58d0000	 str       r0, [sp]
  00058	e1a00804	 mov       r0, r4, lsl #16
  0005c	e1a01820	 mov       r1, r0, lsr #16
  00060	e3a02f5d	 mov       r2, #0x5D, 30
  00064	e3a03000	 mov       r3, #0
  00068	e3822003	 orr       r2, r2, #3
  0006c	e1a01801	 mov       r1, r1, lsl #16
  00070	e1a0000b	 mov       r0, r11
  00074	eb000000	 bl        mmcCommandAndResponse
  00078	e3500000	 cmp       r0, #0

; 105  : 
; 106  : #endif
; 107  : 
; 108  :         
; 112  :         
; 117  :         if ( ( respErr != MMC_NO_ERROR) && (respErr == MMC_COMUNC_ILLEG_COM) )

  0007c	0a000003	 beq       |$L36547|
  00080	e35000d0	 cmp       r0, #0xD0

; 118  :     {
; 119  :         pc->error_code = (UINT16)respErr;

  00084	03a010d0	 moveq     r1, #0xD0
  00088	01cb11b6	 streqh    r1, [r11, #0x16]
  0008c	0a00001e	 beq       |$L36541|
  00090		 |$L36547|

; 121  :     }
; 122  : 
; 123  :     
; 124  : #if (USE_SPI || USE_SPI_EMULATION)
; 125  :         
; 126  :     selectChip( RCA );
; 127  : #endif
; 128  : 
; 129  :     respErr = mmcCommandAndResponse ( pc,
; 130  :                                 multipp,
; 131  :                                 Cmd,
; 132  :                                 tLength,
; 133  :                                 resp );

  00090	e59d002c	 ldr       r0, [sp, #0x2C]
  00094	e1a0300a	 mov       r3, r10
  00098	e1a02005	 mov       r2, r5
  0009c	e58d0000	 str       r0, [sp]
  000a0	e1a01007	 mov       r1, r7
  000a4	e1a0000b	 mov       r0, r11
  000a8	eb000000	 bl        mmcCommandAndResponse

; 134  : 
; 135  :         
; 136  :         if (buff)

  000ac	e3580000	 cmp       r8, #0
  000b0	0a000014	 beq       |$L36552|

; 137  :         {
; 138  :                 
; 139  :                 if (Cmd & SECURITY_CMD_BIT)

  000b4	e3560000	 cmp       r6, #0

; 140  :                         return respErr;

  000b8	1a000012	 bne       |$L36552|

; 141  : 
; 142  :                 
; 143  :                 pc->user_address = (USERADDRESS)buff;

  000bc	e58b8004	 str       r8, [r11, #4]

; 144  : 
; 145  :                 
; 146  :                 if (respErr == MMC_NO_ERROR)

  000c0	e3500000	 cmp       r0, #0
  000c4	1a00000f	 bne       |$L36552|

; 147  :                 {
; 148  :                         if (Cmd == SD_SEND_SCR)

  000c8	e3a01e17	 mov       r1, #0x17, 28
  000cc	e3811003	 orr       r1, r1, #3
  000d0	e1590001	 cmp       r9, r1

; 149  :                         {
; 150  :                                 tLength = SD_SCR_LENGTH;

  000d4	03a0a008	 moveq     r10, #8
  000d8	0a000003	 beq       |$L36555|

; 151  :                         }
; 152  :                         else if (Cmd == SD_STATUS)

  000dc	e3a00f53	 mov       r0, #0x53, 30
  000e0	e3800001	 orr       r0, r0, #1
  000e4	e1590000	 cmp       r9, r0

; 153  :                         {
; 154  :                                 tLength = SD_STATUS_LENGTH;

  000e8	03a0a040	 moveq     r10, #0x40
  000ec		 |$L36555|

; 155  :                         }
; 156  : 
; 157  : 

; 158  : 

; 159  : 			OS_WAIT(200);

  000ec	e3a000c8	 mov       r0, #0xC8
  000f0	eb000000	 bl        platform_delayms

; 160  :                         
; 161  :                         respErr = receive_data( pc, tLength, 1, NO );

  000f4	e3a03000	 mov       r3, #0
  000f8	e3a02001	 mov       r2, #1
  000fc	e1a0100a	 mov       r1, r10
  00100	e1a0000b	 mov       r0, r11
  00104	eb000000	 bl        receive_data
  00108		 |$L36552|

; 162  :                 }
; 163  :         }
; 164  : 
; 165  : #if (USE_SPI || USE_SPI_EMULATION)
; 166  :         
; 167  :         deSelectChip( RCA );
; 168  : #endif
; 169  : 
; 170  :     return respErr;

  00108	e1a01000	 mov       r1, r0
  0010c		 |$L36541|

; 120  :         return respErr;

  0010c	e1a00001	 mov       r0, r1

; 171  : }

  00110	e28dd004	 add       sp, sp, #4
  00114	e8bd4ff0	 ldmia     sp!, {r4 - r11, lr}
  00118	e12fff1e	 bx        lr
  0011c		 |$M37231|

			 ENDP  ; |mmcSDApplCmd|

	EXPORT	|??_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@| [ DATA ] ; `string'
	EXPORT	|??_C@_1EA@IEBN@?$AAm?$AAm?$AAc?$AAr?$AAe?$AAs?$AAe?$AAt?$AA?3?$AAS?$AAD?$AA_?$AAS?$AAE?$AAN?$AAD?$AA_?$AAO?$AAP?$AA_@| [ DATA ] ; `string'
	EXPORT	|??_C@_1FA@LPLD@?$AAm?$AAm?$AAc?$AAr?$AAe?$AAs?$AAe?$AAt?$AA?3?$AAS?$AAD?$AA_?$AAS?$AAE?$AAN?$AAD?$AA_?$AAO?$AAP?$AA_@| [ DATA ] ; `string'
	EXPORT	|??_C@_1FM@NKCI@?$AAm?$AAm?$AAc?$AAr?$AAe?$AAs?$AAe?$AAt?$AA?3?$AAS?$AAD?$AA_?$AAS?$AAE?$AAN?$AAD?$AA_?$AAO?$AAP?$AA_@| [ DATA ] ; `string'
	EXPORT	|??_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@| [ DATA ] ; `string'
	EXPORT	|??_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@| [ DATA ] ; `string'
	EXPORT	|??_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@| [ DATA ] ; `string'
	EXPORT	|??_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@| [ DATA ] ; `string'
	EXPORT	|??_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@| [ DATA ] ; `string'
	EXPORT	|??_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@| [ DATA ] ; `string'
	EXPORT	|??_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@| [ DATA ] ; `string'
	EXPORT	|??_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@| [ DATA ] ; `string'
	EXPORT	|??_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@| [ DATA ] ; `string'
	EXPORT	|??_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@| [ DATA ] ; `string'
	EXPORT	|mmcReset|
	EXPORT	|mmcIdentify|
	EXPORT	|??_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@| [ DATA ] ; `string'
	EXPORT	|??_C@_1BE@CPBE@?$AAu?$AAs?$AAe?$AAr?$AA_?$AAs?$AAd?$AA?$AN?$AA?6?$AA?$AA@| [ DATA ] ; `string'
	IMPORT	|NKDbgPrintfW|
	IMPORT	|to_WORD|

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

  00000			 AREA	 |.pdata$$mmcReset|, PDATA, SELECTION=5, ASSOC=|.text| { |mmcReset| } ; comdat associative
|$T37266| DCD	|mmcReset|
	DCD	0x40012002

  00000			 AREA	 |.rdata| { |??_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@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_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@| DCB "m"
	DCB	0x0, "m", 0x0, "c", 0x0, "R", 0x0, "e", 0x0, "s", 0x0, "e"
	DCB	0x0, "t", 0x0, "(", 0x0, ")", 0x0, " ", 0x0, "e", 0x0, "n"
	DCB	0x0, "t", 0x0, "e", 0x0, "r", 0x0, "e", 0x0, "d", 0x0, " "
	DCB	0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0	; `string'

  00000			 AREA	 |.rdata| { |??_C@_1BE@CPBE@?$AAu?$AAs?$AAe?$AAr?$AA_?$AAs?$AAd?$AA?$AN?$AA?6?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1BE@CPBE@?$AAu?$AAs?$AAe?$AAr?$AA_?$AAs?$AAd?$AA?$AN?$AA?6?$AA?$AA@| DCB "u"
	DCB	0x0, "s", 0x0, "e", 0x0, "r", 0x0, "_", 0x0, "s", 0x0, "d"
	DCB	0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0	; `string'

  00000			 AREA	 |.rdata| { |??_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@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_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@| DCB "i"
	DCB	0x0, "s", 0x0, " ", 0x0, "t", 0x0, "h", 0x0, "e", 0x0, " "
	DCB	0x0, "c", 0x0, "a", 0x0, "r", 0x0, "d", 0x0, " ", 0x0, "r"
	DCB	0x0, "e", 0x0, "a", 0x0, "d", 0x0, "y", 0x0, "?", 0x0, " "
	DCB	0x0, "%", 0x0, "x", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_1EA@IEBN@?$AAm?$AAm?$AAc?$AAr?$AAe?$AAs?$AAe?$AAt?$AA?3?$AAS?$AAD?$AA_?$AAS?$AAE?$AAN?$AAD?$AA_?$AAO?$AAP?$AA_@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EA@IEBN@?$AAm?$AAm?$AAc?$AAr?$AAe?$AAs?$AAe?$AAt?$AA?3?$AAS?$AAD?$AA_?$AAS?$AAE?$AAN?$AAD?$AA_?$AAO?$AAP?$AA_@| DCB "m"
	DCB	0x0, "m", 0x0, "c", 0x0, "r", 0x0, "e", 0x0, "s", 0x0, "e"
	DCB	0x0, "t", 0x0, ":", 0x0, "S", 0x0, "D", 0x0, "_", 0x0, "S"
	DCB	0x0, "E", 0x0, "N", 0x0, "D", 0x0, "_", 0x0, "O", 0x0, "P"
	DCB	0x0, "_", 0x0, "C", 0x0, "O", 0x0, "N", 0x0, "D", 0x0, " "
	DCB	0x0, "p", 0x0, "a", 0x0, "s", 0x0, "s", 0x0, 0xd, 0x0, 0xa
	DCB	0x0, 0x0, 0x0				; `string'

  00000			 AREA	 |.rdata| { |??_C@_1FA@LPLD@?$AAm?$AAm?$AAc?$AAr?$AAe?$AAs?$AAe?$AAt?$AA?3?$AAS?$AAD?$AA_?$AAS?$AAE?$AAN?$AAD?$AA_?$AAO?$AAP?$AA_@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FA@LPLD@?$AAm?$AAm?$AAc?$AAr?$AAe?$AAs?$AAe?$AAt?$AA?3?$AAS?$AAD?$AA_?$AAS?$AAE?$AAN?$AAD?$AA_?$AAO?$AAP?$AA_@| DCB "m"
	DCB	0x0, "m", 0x0, "c", 0x0, "r", 0x0, "e", 0x0, "s", 0x0, "e"
	DCB	0x0, "t", 0x0, ":", 0x0, "S", 0x0, "D", 0x0, "_", 0x0, "S"
	DCB	0x0, "E", 0x0, "N", 0x0, "D", 0x0, "_", 0x0, "O", 0x0, "P"
	DCB	0x0, "_", 0x0, "C", 0x0, "O", 0x0, "N", 0x0, "D", 0x0, " "
	DCB	0x0, "p", 0x0, "a", 0x0, "s", 0x0, "s", 0x0, " ", 0x0, "s"
	DCB	0x0, "d", 0x0, " ", 0x0, "c", 0x0, "a", 0x0, "r", 0x0, "d"
	DCB	0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0	; `string'

  00000			 AREA	 |.rdata| { |??_C@_1FM@NKCI@?$AAm?$AAm?$AAc?$AAr?$AAe?$AAs?$AAe?$AAt?$AA?3?$AAS?$AAD?$AA_?$AAS?$AAE?$AAN?$AAD?$AA_?$AAO?$AAP?$AA_@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FM@NKCI@?$AAm?$AAm?$AAc?$AAr?$AAe?$AAs?$AAe?$AAt?$AA?3?$AAS?$AAD?$AA_?$AAS?$AAE?$AAN?$AAD?$AA_?$AAO?$AAP?$AA_@| DCB "m"
	DCB	0x0, "m", 0x0, "c", 0x0, "r", 0x0, "e", 0x0, "s", 0x0, "e"
	DCB	0x0, "t", 0x0, ":", 0x0, "S", 0x0, "D", 0x0, "_", 0x0, "S"
	DCB	0x0, "E", 0x0, "N", 0x0, "D", 0x0, "_", 0x0, "O", 0x0, "P"
	DCB	0x0, "_", 0x0, "C", 0x0, "O", 0x0, "N", 0x0, "D", 0x0, " "
	DCB	0x0, "p", 0x0, "a", 0x0, "s", 0x0, "s", 0x0, " ", 0x0, "s"
	DCB	0x0, "d", 0x0, " ", 0x0, "c", 0x0, "a", 0x0, "r", 0x0, "d"
	DCB	0x0, " ", 0x0, "a", 0x0, "g", 0x0, "a", 0x0, "i", 0x0, "n"
	DCB	0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0	; `string'

  00000			 AREA	 |.rdata| { |??_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@| }, DATA, READONLY, SELECTION=2 ; comdat any

⌨️ 快捷键说明

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