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

📄 system.cod

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

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

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

	EXPORT	|dpCurSettings| [ DATA ]

  00000			 AREA	 |.data|, DATA
	 COMMON	|v_DiskCrit|, 0x14

	 COMMON	|v_DiskList|, 0x4

	 COMMON	|virtime|, 0x4

	 COMMON	|multipleRdWr|, 0x2


  00000			 AREA	 |.rdata|, DATA, READONLY
|BLOCK_DRIVER_GUID| DCD 0xa4e7edda
	DCW	0xe575
	DCW	0x4252
	DCB	0x9d
	DCB	0x6b
	DCB	0x41
	DCB	0x95
	DCB	0xd4
	DCB	0x8b
	DCB	0xb8
	DCB	0x65
|STORE_MOUNT_GUID| DCD 0xc1115848
	DCW	0x46fd
	DCW	0x4976
	DCB	0xbd
	DCB	0xe9
	DCB	0xd7
	DCB	0x94
	DCB	0x48
	DCB	0x45
	DCB	0x70
	DCB	0x4
|FATFS_MOUNT_GUID| DCD 0x169e1941
	DCW	0x4ce
	DCW	0x4690
	DCB	0x97
	DCB	0xac
	DCB	0x77
	DCB	0x61
	DCB	0x87
	DCB	0xeb
	DCB	0x67
	DCB	0xcc
|CDFS_MOUNT_GUID| DCD 0x72d75746
	DCW	0xd54a
	DCW	0x4487
	DCB	0xb7
	DCB	0xa1
	DCB	0x94
	DCB	0xc
	DCB	0x9a
	DCB	0x3f
	DCB	0x25
	DCB	0x9a
|UDFS_MOUNT_GUID| DCD 0x462feda9
	DCW	0xd478
	DCW	0x4b00
	DCB	0x86
	DCB	0xbb
	DCB	0x51
	DCB	0xa8
	DCB	0xe3
	DCB	0xd1
	DCB	0x8
	DCB	0x90
|CDDA_MOUNT_GUID| DCD 0xba6b1343
	DCW	0x7980
	DCW	0x4d0c
	DCB	0x92
	DCB	0x90
	DCB	0x76
	DCB	0x2d
	DCB	0x52
	DCB	0x7b
	DCB	0x33
	DCB	0xab
|STOREMGR_DRIVER_GUID| DCD 0x14acdee6
	DCW	0x5cf3
	DCW	0x496b
	DCB	0xb3
	DCB	0x9d
	DCB	0x89
	DCB	0x54
	DCB	0xc9
	DCB	0x6d
	DCB	0xf0
	DCB	0x2

  00000			 AREA	 |.data|, DATA
|dpCurSettings| DCB "S", 0x0, "D", 0x0, "M", 0x0, "M", 0x0, "C", 0x0, " ", 0x0
	DCB	"D", 0x0, "i", 0x0, "s", 0x0, "k", 0x0, 0x0, 0x0
	%	42
	DCB	"E", 0x0, "r", 0x0, "r", 0x0, "o", 0x0, "r", 0x0, "s", 0x0
	DCB	0x0, 0x0
	%	50
	DCB	"W", 0x0, "a", 0x0, "r", 0x0, "n", 0x0, "i", 0x0, "n", 0x0
	DCB	"g", 0x0, "s", 0x0, 0x0, 0x0
	%	46
	DCB	"F", 0x0, "u", 0x0, "n", 0x0, "c", 0x0, "t", 0x0, "i", 0x0
	DCB	"o", 0x0, "n", 0x0, "s", 0x0, 0x0, 0x0
	%	44
	DCB	"I", 0x0, "n", 0x0, "i", 0x0, "t", 0x0, "i", 0x0, "a", 0x0
	DCB	"l", 0x0, "i", 0x0, "z", 0x0, "a", 0x0, "t", 0x0, "i", 0x0
	DCB	"o", 0x0, "n", 0x0, 0x0, 0x0
	%	34
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
	%	44
	DCB	"D", 0x0, "i", 0x0, "s", 0x0, "k", 0x0, " ", 0x0, "I", 0x0
	DCB	"/", 0x0, "O", 0x0, 0x0, 0x0
	%	46
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
	%	44
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
	%	44
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
	%	44
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
	%	44
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
	%	44
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
	%	44
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
	%	44
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
	%	44
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
	%	44
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
	%	44
	DCD	0x1
	EXPORT	|SDMMCDiskEntry|
	EXPORT	|??_C@_1DI@NJBG@?$AAS?$AAD?$AAM?$AAM?$AAC?$AA?9?$AA?9?$AAD?$AAL?$AAL?$AA_?$AAP?$AAR?$AAO?$AAC?$AAE?$AAS?$AAS?$AA_?$AAA@| [ DATA ] ; `string'
	EXPORT	|??_C@_1DI@BFBF@?$AAS?$AAD?$AAM?$AAM?$AAC?$AA?9?$AA?9?$AAD?$AAL?$AAL?$AA_?$AAP?$AAR?$AAO?$AAC?$AAE?$AAS?$AAS?$AA_?$AAD@| [ DATA ] ; `string'
	IMPORT	|InitializeCriticalSection|
	IMPORT	|DeleteCriticalSection|
	IMPORT	|DisableThreadLibraryCalls|
	IMPORT	|NKDbgPrintfW|
; File d:\wince420\platform\sdklh7a404\drivers\sdmmc\driver\system.c

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

  00000			 AREA	 |.pdata$$SDMMCDiskEntry|, PDATA, SELECTION=5, ASSOC=|.text| { |SDMMCDiskEntry| } ; comdat associative
|$T37172| DCD	|SDMMCDiskEntry|
	DCD	0x40001501

  00000			 AREA	 |.rdata| { |??_C@_1DI@NJBG@?$AAS?$AAD?$AAM?$AAM?$AAC?$AA?9?$AA?9?$AAD?$AAL?$AAL?$AA_?$AAP?$AAR?$AAO?$AAC?$AAE?$AAS?$AAS?$AA_?$AAA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1DI@NJBG@?$AAS?$AAD?$AAM?$AAM?$AAC?$AA?9?$AA?9?$AAD?$AAL?$AAL?$AA_?$AAP?$AAR?$AAO?$AAC?$AAE?$AAS?$AAS?$AA_?$AAA@| DCB "S"
	DCB	0x0, "D", 0x0, "M", 0x0, "M", 0x0, "C", 0x0, "-", 0x0, "-"
	DCB	0x0, "D", 0x0, "L", 0x0, "L", 0x0, "_", 0x0, "P", 0x0, "R"
	DCB	0x0, "O", 0x0, "C", 0x0, "E", 0x0, "S", 0x0, "S", 0x0, "_"
	DCB	0x0, "A", 0x0, "T", 0x0, "T", 0x0, "A", 0x0, "C", 0x0, "H"
	DCB	0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0	; `string'

  00000			 AREA	 |.rdata| { |??_C@_1DI@BFBF@?$AAS?$AAD?$AAM?$AAM?$AAC?$AA?9?$AA?9?$AAD?$AAL?$AAL?$AA_?$AAP?$AAR?$AAO?$AAC?$AAE?$AAS?$AAS?$AA_?$AAD@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1DI@BFBF@?$AAS?$AAD?$AAM?$AAM?$AAC?$AA?9?$AA?9?$AAD?$AAL?$AAL?$AA_?$AAP?$AAR?$AAO?$AAC?$AAE?$AAS?$AAS?$AA_?$AAD@| DCB "S"
	DCB	0x0, "D", 0x0, "M", 0x0, "M", 0x0, "C", 0x0, "-", 0x0, "-"
	DCB	0x0, "D", 0x0, "L", 0x0, "L", 0x0, "_", 0x0, "P", 0x0, "R"
	DCB	0x0, "O", 0x0, "C", 0x0, "E", 0x0, "S", 0x0, "S", 0x0, "_"
	DCB	0x0, "D", 0x0, "E", 0x0, "T", 0x0, "A", 0x0, "C", 0x0, "H"
	DCB	0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0	; `string'
; Function compile flags: /Ogsy

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

  00000		 |SDMMCDiskEntry| PROC

; 107  : {

  00000	e92d4010	 stmdb     sp!, {r4, lr}
  00004		 |$M37170|
  00004	e1a04000	 mov       r4, r0

; 108  :     switch(Reason) {

  00008	e3510000	 cmp       r1, #0
  0000c	0a000007	 beq       |$L36921|
  00010	e3510001	 cmp       r1, #1
  00014	1a000009	 bne       |$L36914|

; 109  :     case DLL_PROCESS_ATTACH:
; 110  :     DEBUGREGISTER(DllInstance);
; 111  :     InitializeCriticalSection(&v_DiskCrit);

  00018	e59f002c	 ldr       r0, [pc, #0x2C]
  0001c	eb000000	 bl        InitializeCriticalSection

; 112  :     DisableThreadLibraryCalls((HMODULE) DllInstance);

  00020	e1a00004	 mov       r0, r4
  00024	eb000000	 bl        DisableThreadLibraryCalls

; 113  :     RETAILMSG(1, (TEXT("SDMMC--DLL_PROCESS_ATTACH\r\n")));

  00028	e59f0020	 ldr       r0, [pc, #0x20]

; 114  :     return TRUE;

  0002c	ea000002	 b         |$L37169|
  00030		 |$L36921|

; 115  : 
; 116  :     case DLL_PROCESS_DETACH:
; 117  :     DeleteCriticalSection(&v_DiskCrit);

  00030	e59f0014	 ldr       r0, [pc, #0x14]
  00034	eb000000	 bl        DeleteCriticalSection

; 118  :     RETAILMSG(1, (TEXT("SDMMC--DLL_PROCESS_DETACH\r\n")));

  00038	e59f0008	 ldr       r0, [pc, #8]
  0003c		 |$L37169|
  0003c	eb000000	 bl        NKDbgPrintfW
  00040		 |$L36914|

; 119  :     break;
; 120  :     }
; 121  :     return TRUE;

  00040	e3a00001	 mov       r0, #1

; 122  : }   


  00044	e8bd8010	 ldmia     sp!, {r4, pc}
  00048		 |$L37174|
  00048	00000000	 DCD       |??_C@_1DI@BFBF@?$AAS?$AAD?$AAM?$AAM?$AAC?$AA?9?$AA?9?$AAD?$AAL?$AAL?$AA_?$AAP?$AAR?$AAO?$AAC?$AAE?$AAS?$AAS?$AA_?$AAD@|
  0004c	00000000	 DCD       |v_DiskCrit|
  00050	00000000	 DCD       |??_C@_1DI@NJBG@?$AAS?$AAD?$AAM?$AAM?$AAC?$AA?9?$AA?9?$AAD?$AAL?$AAL?$AA_?$AAP?$AAR?$AAO?$AAC?$AAE?$AAS?$AAS?$AA_?$AAA@|
  00054		 |$M37171|

			 ENDP  ; |SDMMCDiskEntry|

	EXPORT	|CreateDiskObject|
	IMPORT	|EnterCriticalSection|
	IMPORT	|LeaveCriticalSection|
	IMPORT	|LocalAlloc|

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

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

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

  00000		 |CreateDiskObject| PROC

; 130  : {

  00000	e92d4010	 stmdb     sp!, {r4, lr}
  00004		 |$M37179|

; 131  :     PDISK pDisk;
; 132  : 
; 133  :     pDisk = LocalAlloc(LPTR, sizeof(DISK));

  00004	e3a01048	 mov       r1, #0x48
  00008	e3a00040	 mov       r0, #0x40
  0000c	eb000000	 bl        LocalAlloc
  00010	e1b04000	 movs      r4, r0

; 134  :     if (pDisk != NULL) {

  00014	0a00000e	 beq       |$L36929|

; 135  :     pDisk->d_OpenCount = 0;

  00018	e3a00000	 mov       r0, #0
  0001c	e584003c	 str       r0, [r4, #0x3C]

; 136  :     pDisk->d_ActivePath = NULL;

  00020	e5840044	 str       r0, [r4, #0x44]

; 137  :     InitializeCriticalSection(&(pDisk->d_DiskCardCrit));

  00024	e2840004	 add       r0, r4, #4
  00028	eb000000	 bl        InitializeCriticalSection

; 138  :     pDisk->d_DiskCardState = STATE_INITING;
; 139  :     EnterCriticalSection(&v_DiskCrit);

  0002c	e59f0028	 ldr       r0, [pc, #0x28]
  00030	e3a03001	 mov       r3, #1
  00034	e584301c	 str       r3, [r4, #0x1C]
  00038	eb000000	 bl        EnterCriticalSection

; 140  :     pDisk->d_next = v_DiskList;

  0003c	e59f301c	 ldr       r3, [pc, #0x1C]
  00040	e5930000	 ldr       r0, [r3]
  00044	e5840000	 str       r0, [r4]

; 141  :     v_DiskList = pDisk;
; 142  :     LeaveCriticalSection(&v_DiskCrit);

  00048	e59f000c	 ldr       r0, [pc, #0xC]
  0004c	e5834000	 str       r4, [r3]
  00050	eb000000	 bl        LeaveCriticalSection
  00054		 |$L36929|

; 143  :     }
; 144  :     return pDisk;

  00054	e1a00004	 mov       r0, r4

; 145  : }   


  00058	e8bd8010	 ldmia     sp!, {r4, pc}
  0005c		 |$L37183|
  0005c	00000000	 DCD       |v_DiskCrit|
  00060	00000000	 DCD       |v_DiskList|
  00064		 |$M37180|

			 ENDP  ; |CreateDiskObject|

	EXPORT	|IsValidDisk|

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

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

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

  00000		 |IsValidDisk| PROC

; 157  : {

  00000	e92d4030	 stmdb     sp!, {r4, r5, lr}
  00004		 |$M37194|
  00004	e1a04000	 mov       r4, r0

; 158  :     PDISK pd;
; 159  :     bool ret = FALSE;
; 160  : 
; 161  :     EnterCriticalSection(&v_DiskCrit);

  00008	e59f003c	 ldr       r0, [pc, #0x3C]
  0000c	e3a05000	 mov       r5, #0
  00010	eb000000	 bl        EnterCriticalSection

; 162  :     pd = v_DiskList;

  00014	e59f3034	 ldr       r3, [pc, #0x34]
  00018	e5930000	 ldr       r0, [r3]
  0001c	ea000002	 b         |$L37193|
  00020		 |$L36937|

; 164  :     if (pd == pDisk) {

  00020	e1500004	 cmp       r0, r4
  00024	0a000003	 beq       |$L37187|

; 166  :         break;
; 167  :     }
; 168  :     pd = pd->d_next;

  00028	e5900000	 ldr       r0, [r0]
  0002c		 |$L37193|
  0002c	e3500000	 cmp       r0, #0

; 163  :     while (pd) {

  00030	1afffffa	 bne       |$L36937|

; 164  :     if (pd == pDisk) {

  00034	ea000000	 b         |$L36938|
  00038		 |$L37187|

; 165  :         ret = TRUE;

  00038	e3a05001	 mov       r5, #1
  0003c		 |$L36938|

; 169  :     }
; 170  :     LeaveCriticalSection(&v_DiskCrit);

  0003c	e59f0008	 ldr       r0, [pc, #8]
  00040	eb000000	 bl        LeaveCriticalSection

; 171  :     return ret;

  00044	e20500ff	 and       r0, r5, #0xFF

; 172  : }   


  00048	e8bd8030	 ldmia     sp!, {r4, r5, pc}
  0004c		 |$L37198|
  0004c	00000000	 DCD       |v_DiskCrit|
  00050	00000000	 DCD       |v_DiskList|
  00054		 |$M37195|

			 ENDP  ; |IsValidDisk|

	EXPORT	|GetDiskStateError|

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

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

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

  00000		 |GetDiskStateError| PROC

; 179  : {

  00000		 |$M37203|

; 180  : #ifdef DEBUG1
; 181  :     LPTSTR lpState;
; 182  :     switch (DiskState) {
; 183  :     case STATE_INITING:lpState = TEXT("STATE_INITING");break;
; 184  :     case STATE_CLOSED:lpState = TEXT("STATE_CLOSED");break;
; 185  :     case STATE_OPENED:lpState = TEXT("STATE_OPENED");break;
; 186  :     case STATE_DEAD:lpState = TEXT("STATE_DEAD");break;
; 187  :     case STATE_REMOVED:lpState = TEXT("STATE_REMOVED");break;
; 188  :     default:lpState = TEXT("Unknown");break;
; 189  :     }
; 190  :     RETAILMSG(1, (TEXT("MmcDISK:GetDiskStateError: State of disk is %s=%d\r\n"), lpState, DiskState));
; 191  : #endif
; 192  :     
; 193  :     switch (DiskState) {

  00000	e3500004	 cmp       r0, #4
  00004	0a000003	 beq       |$L36947|
  00008	e3500005	 cmp       r0, #5

; 199  :     }
; 200  :     return ERROR_GEN_FAILURE;

  0000c	13a0001f	 movne     r0, #0x1F

; 196  : 
; 197  :     case STATE_REMOVED:
; 198  :     return DISK_REMOVED_ERROR;

  00010	03a00014	 moveq     r0, #0x14

; 201  : }

  00014	e1a0f00e	 mov       pc, lr
  00018		 |$L36947|

; 194  :     case STATE_DEAD:
; 195  :     return DISK_DEAD_ERROR;

  00018	e3a00015	 mov       r0, #0x15

; 201  : }

  0001c	e1a0f00e	 mov       pc, lr
  00020		 |$M37204|

			 ENDP  ; |GetDiskStateError|

	EXPORT	|mmcinit|
	EXPORT	|DSK_Init|
	EXPORT	|??_C@_1CI@BHOK@?$AAM?$AAm?$AAc?$AAD?$AAI?$AAS?$AAK?$AA?3?$AA?5?$AAD?$AAS?$AAK?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$AN?$AA?6?$AA?$AA@| [ DATA ] ; `string'

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

  00000			 AREA	 |.pdata$$DSK_Init|, PDATA, SELECTION=5, ASSOC=|.text| { |DSK_Init| } ; comdat associative
|$T37213| DCD	|DSK_Init|
	DCD	0x40000801

  00000			 AREA	 |.rdata| { |??_C@_1CI@BHOK@?$AAM?$AAm?$AAc?$AAD?$AAI?$AAS?$AAK?$AA?3?$AA?5?$AAD?$AAS?$AAK?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$AN?$AA?6?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CI@BHOK@?$AAM?$AAm?$AAc?$AAD?$AAI?$AAS?$AAK?$AA?3?$AA?5?$AAD?$AAS?$AAK?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$AN?$AA?6?$AA?$AA@| DCB "M"
	DCB	0x0, "m", 0x0, "c", 0x0, "D", 0x0, "I", 0x0, "S", 0x0, "K"
	DCB	0x0, ":", 0x0, " ", 0x0, "D", 0x0, "S", 0x0, "K", 0x0, "_"

⌨️ 快捷键说明

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