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

📄 sdmmc_load.cod

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

  00000	e1a0f00e	 mov       pc, lr
  00004		 |$M40871|

			 ENDP  ; |SDMMC_SmcInit|


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

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

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

  00000		 |SDMMC_CardInserted| PROC

; 329  : {

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

; 330  :     ULONG GpioPF;
; 331  :     BOOLEAN CardFullyInserted;
; 332  : 
; 333  :     DEBUGMSG(1, (TEXT("CardInserted entered.\r\n")) );
; 334  : 
; 335  :     CardFullyInserted = FALSE;
; 336  : 
; 337  :     GpioPF = READ_REGISTER_ULONG(&GpioRegPtr->PFDR);

  00004	e59f3044	 ldr       r3, [pc, #0x44]
  00008	e3a04000	 mov       r4, #0
  0000c	e5932000	 ldr       r2, [r3]
  00010	e2820030	 add       r0, r2, #0x30
  00014	e5901000	 ldr       r1, [r0]

; 338  : 
; 339  : 	

; 340  :     if (!(GpioPF & GPIO_SDMMC_CD)) {

  00018	e3110004	 tst       r1, #4
  0001c	1a000009	 bne       |$L40575|

; 341  : 		ULONG	tmp;
; 342  :         CardFullyInserted = TRUE;
; 343  : 
; 344  : 		

; 345  : 		

; 346  : 		

; 347  : 		tmp = READ_REGISTER_ULONG(&GpioRegPtr->PEDDR);

  00020	e2822024	 add       r2, r2, #0x24
  00024	e5920000	 ldr       r0, [r2]
  00028	e3a04001	 mov       r4, #1

; 348  : 		WRITE_REGISTER_ULONG(&GpioRegPtr->PEDDR, 0x10 | tmp);

  0002c	e3801010	 orr       r1, r0, #0x10
  00030	e5821000	 str       r1, [r2]

; 349  : 		tmp = READ_REGISTER_ULONG(&GpioRegPtr->PEDR);

  00034	e5930000	 ldr       r0, [r3]
  00038	e2802020	 add       r2, r0, #0x20
  0003c	e5921000	 ldr       r1, [r2]

; 350  : 		WRITE_REGISTER_ULONG(&GpioRegPtr->PEDR,  0x10 | tmp);

  00040	e3810010	 orr       r0, r1, #0x10
  00044	e5820000	 str       r0, [r2]
  00048		 |$L40575|

; 351  :     }
; 352  : 
; 353  : 	
; 358  :     return CardFullyInserted;

  00048	e1a00004	 mov       r0, r4

; 359  : }

  0004c	e8bd8010	 ldmia     sp!, {r4, pc}
  00050		 |$L40885|
  00050	00000000	 DCD       |GpioRegPtr|
  00054		 |$M40882|

			 ENDP  ; |SDMMC_CardInserted|

	EXPORT	|SML_Init|
	EXPORT	|??_C@_1CC@DLNO@?$AAE?$AAn?$AAt?$AAe?$AAr?$AAi?$AAn?$AAg?$AA?5?$AAI?$AAn?$AAi?$AAt?$AA?4?$AA?$AN?$AA?6?$AA?$AA@| [ DATA ] ; `string'
	EXPORT	|??_C@_1HC@JMAI@?$AAF?$AAa?$AAt?$AAa?$AAl?$AA?5?$AAE?$AAr?$AAr?$AAo?$AAr?$AA?$CB?$AA?5?$AA?5?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd@| [ DATA ] ; `string'
	EXPORT	|??_C@_1FK@POJI@?$AAc?$AAr?$AAe?$AAa?$AAt?$AAe?$AA?5?$AAM?$AAM?$AAC?$AA?5?$AAc?$AAa?$AAr?$AAd?$AA?5?$AAd?$AAe?$AAt?$AAe@| [ DATA ] ; `string'
	IMPORT	|CreateThread|
	IMPORT	|SetThreadPriority|
; File d:\wince420\public\common\sdk\inc\kfuncs.h

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

  00000			 AREA	 |.pdata$$SML_Init|, PDATA, SELECTION=5, ASSOC=|.text| { |SML_Init| } ; comdat associative
|$T40894| DCD	|SML_Init|
	DCD	0x40002102

  00000			 AREA	 |.rdata| { |??_C@_1CC@DLNO@?$AAE?$AAn?$AAt?$AAe?$AAr?$AAi?$AAn?$AAg?$AA?5?$AAI?$AAn?$AAi?$AAt?$AA?4?$AA?$AN?$AA?6?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CC@DLNO@?$AAE?$AAn?$AAt?$AAe?$AAr?$AAi?$AAn?$AAg?$AA?5?$AAI?$AAn?$AAi?$AAt?$AA?4?$AA?$AN?$AA?6?$AA?$AA@| DCB "E"
	DCB	0x0, "n", 0x0, "t", 0x0, "e", 0x0, "r", 0x0, "i", 0x0, "n"
	DCB	0x0, "g", 0x0, " ", 0x0, "I", 0x0, "n", 0x0, "i", 0x0, "t"
	DCB	0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_1HC@JMAI@?$AAF?$AAa?$AAt?$AAa?$AAl?$AA?5?$AAE?$AAr?$AAr?$AAo?$AAr?$AA?$CB?$AA?5?$AA?5?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1HC@JMAI@?$AAF?$AAa?$AAt?$AAa?$AAl?$AA?5?$AAE?$AAr?$AAr?$AAo?$AAr?$AA?$CB?$AA?5?$AA?5?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd@| DCB "F"
	DCB	0x0, "a", 0x0, "t", 0x0, "a", 0x0, "l", 0x0, " ", 0x0, "E"
	DCB	0x0, "r", 0x0, "r", 0x0, "o", 0x0, "r", 0x0, "!", 0x0, " "
	DCB	0x0, " ", 0x0, "F", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e"
	DCB	0x0, "d", 0x0, " ", 0x0, "t", 0x0, "o", 0x0, " ", 0x0, "c"
	DCB	0x0, "r", 0x0, "e", 0x0, "a", 0x0, "t", 0x0, "e", 0x0, " "
	DCB	0x0, "M", 0x0, "M", 0x0, "C", 0x0, " ", 0x0, "c", 0x0, "a"
	DCB	0x0, "r", 0x0, "d", 0x0, " ", 0x0, "d", 0x0, "e", 0x0, "t"
	DCB	0x0, "e", 0x0, "c", 0x0, "t", 0x0, " ", 0x0, "t", 0x0, "h"
	DCB	0x0, "r", 0x0, "e", 0x0, "a", 0x0, "d", 0x0, ".", 0x0, 0xd
	DCB	0x0, 0xa, 0x0, 0x0, 0x0			; `string'

  00000			 AREA	 |.rdata| { |??_C@_1FK@POJI@?$AAc?$AAr?$AAe?$AAa?$AAt?$AAe?$AA?5?$AAM?$AAM?$AAC?$AA?5?$AAc?$AAa?$AAr?$AAd?$AA?5?$AAd?$AAe?$AAt?$AAe@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FK@POJI@?$AAc?$AAr?$AAe?$AAa?$AAt?$AAe?$AA?5?$AAM?$AAM?$AAC?$AA?5?$AAc?$AAa?$AAr?$AAd?$AA?5?$AAd?$AAe?$AAt?$AAe@| DCB "c"
	DCB	0x0, "r", 0x0, "e", 0x0, "a", 0x0, "t", 0x0, "e", 0x0, " "
	DCB	0x0, "M", 0x0, "M", 0x0, "C", 0x0, " ", 0x0, "c", 0x0, "a"
	DCB	0x0, "r", 0x0, "d", 0x0, " ", 0x0, "d", 0x0, "e", 0x0, "t"
	DCB	0x0, "e", 0x0, "c", 0x0, "t", 0x0, " ", 0x0, "t", 0x0, "h"
	DCB	0x0, "r", 0x0, "e", 0x0, "a", 0x0, "d", 0x0, " ", 0x0, "s"
	DCB	0x0, "u", 0x0, "c", 0x0, "c", 0x0, "e", 0x0, "s", 0x0, "s"
	DCB	0x0, "f", 0x0, "u", 0x0, "l", 0x0, "l", 0x0, ".", 0x0, 0xd
	DCB	0x0, 0xa, 0x0, 0x0, 0x0			; `string'
; Function compile flags: /Ogsy
; File d:\wince420\platform\sdklh7a404\drivers\sdmmc\load\sdmmc_load.c

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

  00000		 |SML_Init| PROC

; 512  : {

  00000	e92d4010	 stmdb     sp!, {r4, lr}
  00004	e24dd008	 sub       sp, sp, #8
  00008		 |$M40892|

; 513  : 
; 514  : 	RETAILMSG(1, (TEXT("Entering Init.\r\n")));

  00008	e59f0070	 ldr       r0, [pc, #0x70]
  0000c	eb000000	 bl        NKDbgPrintfW

; 515  : 
; 516  :     SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_NORMAL);

  00010	e3a01003	 mov       r1, #3
  00014	e3a00041	 mov       r0, #0x41
  00018	eb000000	 bl        SetThreadPriority

; 517  : 	
; 518  : 	gSDMMCDetectThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) SDMMCDetectThread, NULL, 0, NULL);

  0001c	e59f2058	 ldr       r2, [pc, #0x58]
  00020	e3a04000	 mov       r4, #0
  00024	e3a03000	 mov       r3, #0
  00028	e58d4004	 str       r4, [sp, #4]
  0002c	e3a01000	 mov       r1, #0
  00030	e58d4000	 str       r4, [sp]
  00034	e3a00000	 mov       r0, #0
  00038	eb000000	 bl        CreateThread
  0003c	e59f3034	 ldr       r3, [pc, #0x34]
  00040	e3500000	 cmp       r0, #0
  00044	e5830000	 str       r0, [r3]

; 519  : 		
; 520  : 	if ( gSDMMCDetectThread == NULL ) 

  00048	1a000002	 bne       |$L40615|

; 521  : 	{
; 522  :         RETAILMSG(1, (TEXT("Fatal Error!  Failed to create MMC card detect thread.\r\n")));

  0004c	e59f0020	 ldr       r0, [pc, #0x20]
  00050	eb000000	 bl        NKDbgPrintfW

; 523  :         return (FALSE);

  00054	ea000002	 b         |$L40608|
  00058		 |$L40615|

; 524  : 	}
; 525  : 		
; 526  : 	RETAILMSG(1, (TEXT("create MMC card detect thread successfull.\r\n")));

  00058	e59f0010	 ldr       r0, [pc, #0x10]
  0005c	eb000000	 bl        NKDbgPrintfW

; 527  :  	return TRUE;	

  00060	e3a04001	 mov       r4, #1
  00064		 |$L40608|

; 523  :         return (FALSE);

  00064	e1a00004	 mov       r0, r4

; 528  : }

  00068	e28dd008	 add       sp, sp, #8
  0006c	e8bd8010	 ldmia     sp!, {r4, pc}
  00070		 |$L40896|
  00070	00000000	 DCD       |??_C@_1FK@POJI@?$AAc?$AAr?$AAe?$AAa?$AAt?$AAe?$AA?5?$AAM?$AAM?$AAC?$AA?5?$AAc?$AAa?$AAr?$AAd?$AA?5?$AAd?$AAe?$AAt?$AAe@|
  00074	00000000	 DCD       |??_C@_1HC@JMAI@?$AAF?$AAa?$AAt?$AAa?$AAl?$AA?5?$AAE?$AAr?$AAr?$AAo?$AAr?$AA?$CB?$AA?5?$AA?5?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd@|
  00078	00000000	 DCD       |gSDMMCDetectThread|
  0007c	00000000	 DCD       |SDMMCDetectThread|
  00080	00000000	 DCD       |??_C@_1CC@DLNO@?$AAE?$AAn?$AAt?$AAe?$AAr?$AAi?$AAn?$AAg?$AA?5?$AAI?$AAn?$AAi?$AAt?$AA?4?$AA?$AN?$AA?6?$AA?$AA@|
  00084		 |$M40893|

			 ENDP  ; |SML_Init|

	EXPORT	|SML_DllEntry|
	EXPORT	|??_C@_1EG@EPDP@?$AAS?$AAD?$AAM?$AAM?$AAC?$AAL?$AAo?$AAa?$AAd?$AAe?$AAr?$AA?5?$AA?3?$AA?5?$AAD?$AAL?$AAL?$AA_?$AAP?$AAR@| [ DATA ] ; `string'
	EXPORT	|??_C@_1EG@IDDM@?$AAS?$AAD?$AAM?$AAM?$AAC?$AAL?$AAo?$AAa?$AAd?$AAe?$AAr?$AA?5?$AA?3?$AA?5?$AAD?$AAL?$AAL?$AA_?$AAP?$AAR@| [ DATA ] ; `string'

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

  00000			 AREA	 |.pdata$$SML_DllEntry|, PDATA, SELECTION=5, ASSOC=|.text| { |SML_DllEntry| } ; comdat associative
|$T40904| DCD	|SML_DllEntry|
	DCD	0x40000d01

  00000			 AREA	 |.rdata| { |??_C@_1EG@EPDP@?$AAS?$AAD?$AAM?$AAM?$AAC?$AAL?$AAo?$AAa?$AAd?$AAe?$AAr?$AA?5?$AA?3?$AA?5?$AAD?$AAL?$AAL?$AA_?$AAP?$AAR@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EG@EPDP@?$AAS?$AAD?$AAM?$AAM?$AAC?$AAL?$AAo?$AAa?$AAd?$AAe?$AAr?$AA?5?$AA?3?$AA?5?$AAD?$AAL?$AAL?$AA_?$AAP?$AAR@| DCB "S"
	DCB	0x0, "D", 0x0, "M", 0x0, "M", 0x0, "C", 0x0, "L", 0x0, "o"
	DCB	0x0, "a", 0x0, "d", 0x0, "e", 0x0, "r", 0x0, " ", 0x0, ":"
	DCB	0x0, " ", 0x0, "D", 0x0, "L", 0x0, "L", 0x0, "_", 0x0, "P"
	DCB	0x0, "R", 0x0, "O", 0x0, "C", 0x0, "E", 0x0, "S", 0x0, "S"
	DCB	0x0, "_", 0x0, "A", 0x0, "T", 0x0, "T", 0x0, "A", 0x0, "C"
	DCB	0x0, "H", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_1EG@IDDM@?$AAS?$AAD?$AAM?$AAM?$AAC?$AAL?$AAo?$AAa?$AAd?$AAe?$AAr?$AA?5?$AA?3?$AA?5?$AAD?$AAL?$AAL?$AA_?$AAP?$AAR@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EG@IDDM@?$AAS?$AAD?$AAM?$AAM?$AAC?$AAL?$AAo?$AAa?$AAd?$AAe?$AAr?$AA?5?$AA?3?$AA?5?$AAD?$AAL?$AAL?$AA_?$AAP?$AAR@| DCB "S"
	DCB	0x0, "D", 0x0, "M", 0x0, "M", 0x0, "C", 0x0, "L", 0x0, "o"
	DCB	0x0, "a", 0x0, "d", 0x0, "e", 0x0, "r", 0x0, " ", 0x0, ":"
	DCB	0x0, " ", 0x0, "D", 0x0, "L", 0x0, "L", 0x0, "_", 0x0, "P"
	DCB	0x0, "R", 0x0, "O", 0x0, "C", 0x0, "E", 0x0, "S", 0x0, "S"
	DCB	0x0, "_", 0x0, "D", 0x0, "E", 0x0, "T", 0x0, "A", 0x0, "C"
	DCB	0x0, "H", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy

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

  00000		 |SML_DllEntry| PROC

; 535  : {

  00000	e52de004	 str       lr, [sp, #-4]!
  00004		 |$M40902|

; 536  :     switch ( dwReason ) 
; 537  : 	{

  00004	e3510000	 cmp       r1, #0
  00008	0a000003	 beq       |$L40632|
  0000c	e3510001	 cmp       r1, #1
  00010	1a000003	 bne       |$L40626|

; 538  : 		case DLL_PROCESS_ATTACH:
; 539  : 								DEBUGREGISTER((HINSTANCE) hInstDll);
; 540  : 								RETAILMSG(1, (TEXT("SDMMCLoader : DLL_PROCESS_ATTACH\r\n")));

  00014	e59f0014	 ldr       r0, [pc, #0x14]

; 541  : 								break;

  00018	ea000000	 b         |$L40901|
  0001c		 |$L40632|

; 542  : 
; 543  : 		case DLL_PROCESS_DETACH:
; 544  : 								

; 545  : 								RETAILMSG(1, (TEXT("SDMMCLoader : DLL_PROCESS_DETACH\r\n")));

  0001c	e59f0008	 ldr       r0, [pc, #8]
  00020		 |$L40901|
  00020	eb000000	 bl        NKDbgPrintfW
  00024		 |$L40626|

; 546  : 								break;
; 547  :     }
; 548  : 
; 549  :     return (TRUE);

  00024	e3a00001	 mov       r0, #1

; 550  : }

  00028	e8bd8000	 ldmia     sp!, {pc}
  0002c		 |$L40906|
  0002c	00000000	 DCD       |??_C@_1EG@IDDM@?$AAS?$AAD?$AAM?$AAM?$AAC?$AAL?$AAo?$AAa?$AAd?$AAe?$AAr?$AA?5?$AA?3?$AA?5?$AAD?$AAL?$AAL?$AA_?$AAP?$AAR@|
  00030	00000000	 DCD       |??_C@_1EG@EPDP@?$AAS?$AAD?$AAM?$AAM?$AAC?$AAL?$AAo?$AAa?$AAd?$AAe?$AAr?$AA?5?$AA?3?$AA?5?$AAD?$AAL?$AAL?$AA_?$AAP?$AAR@|
  00034		 |$M40903|

			 ENDP  ; |SML_DllEntry|

	EXPORT	|SML_Open|

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

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

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

  00000		 |SML_Open| PROC

; 556  : {

  00000		 |$M40910|

; 557  : 	return (4);

  00000	e3a00004	 mov       r0, #4

; 558  : }

  00004	e1a0f00e	 mov       pc, lr
  00008		 |$M40911|

			 ENDP  ; |SML_Open|

	EXPORT	|SML_Close|

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

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

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

  00000		 |SML_Close| PROC

; 561  : {

  00000		 |$M40917|

; 562  : 	

; 563  : 	return (TRUE);

  00000	e3a00001	 mov       r0, #1

; 564  : }

  00004	e1a0f00e	 mov       pc, lr
  00008		 |$M40918|

			 ENDP  ; |SML_Close|

	EXPORT	|SML_Read|

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

  00000			 AREA	 |.pdata$$SML_Read|, PDATA, SELECTION=5, ASSOC=|.text| { |SML_Read| }

⌨️ 快捷键说明

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