📄 sdmmc.cod
字号:
00000 e92d40f0 stmdb sp!, {r4 - r7, lr}
00004 e24dd004 sub sp, sp, #4
00008 |$M37278|
00008 e1a07000 mov r7, r0
0000c e1a04001 mov r4, r1
00010 e1a05002 mov r5, r2
; 633 : MMC_CC resErr;
; 634 : RETAILMSG(1, (TEXT("mmcIdentify() is entered\r\n")));
00014 e59f00d4 ldr r0, [pc, #0xD4]
00018 eb000000 bl NKDbgPrintfW
; 635 :
; 636 : resErr = mmcCommandAndResponse ( pc,
; 637 : 0L,
; 638 : ALL_SEND_CID,
; 639 : 0,
; 640 : 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
; 641 : if ( resErr != MMC_NO_ERROR )
0003c 0a000006 beq |$L36631|
; 642 : {
; 643 : RETAILMSG(1, (TEXT("ALL_SEND_CID command fails [%d]!\r\n"),resErr));
00040 e59f00a4 ldr r0, [pc, #0xA4]
00044 e1a01006 mov r1, r6
00048 eb000000 bl NKDbgPrintfW
; 644 : 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]
; 645 : return resErr;
00058 ea00001d b |$L36628|
0005c |$L36631|
; 646 : }
; 647 :
; 648 :
; 649 : if (cardType == SD_TYPE)
0005c e3540000 cmp r4, #0
00060 1a000007 bne |$L36634|
; 650 : {
; 651 :
; 656 : resErr = mmcCommandAndResponse ( pc,
; 657 : 0L,
; 658 : SET_RELATIVE_ADDR,
; 659 : 0,
; 660 : 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
; 661 :
; 662 :
; 663 : }
; 664 : else
00080 ea00000b b |$L37277|
00084 |$L36634|
; 665 : {
; 666 : RETAILMSG(1, (TEXT("Before sending SET_RELATIVE_ADDR command!\r\n")));
00084 e59f005c ldr r0, [pc, #0x5C]
00088 eb000000 bl NKDbgPrintfW
; 667 :
; 668 :
; 675 : resErr = mmcCommandAndResponse ( pc,
; 676 : ((((ULONG)cardID) + 1L) << 16),
; 677 : SET_RELATIVE_ADDR,
; 678 : 0,
; 679 : 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 |$L37277|
000b4 e1a04000 mov r4, r0
; 680 : }
; 681 :
; 682 : pc->error_code = (UINT16)resErr;
000b8 e1a00804 mov r0, r4, lsl #16
000bc e1a01820 mov r1, r0, lsr #16
; 683 : RETAILMSG(1, (TEXT("resErr is as follows %d\r\n"), resErr));
000c0 e59f001c ldr r0, [pc, #0x1C]
000c4 e1c711b6 strh r1, [r7, #0x16]
000c8 e1a01004 mov r1, r4
000cc eb000000 bl NKDbgPrintfW
; 684 : return resErr;
000d0 e1a06004 mov r6, r4
000d4 |$L36628|
; 645 : return resErr;
000d4 e1a00006 mov r0, r6
; 685 : }
000d8 e28dd004 add sp, sp, #4
000dc e8bd40f0 ldmia sp!, {r4 - r7, lr}
000e0 e12fff1e bx lr
000e4 |$L37282|
000e4 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@|
000e8 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@|
000ec 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@|
000f0 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@|
000f4 |$M37279|
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
|$T37301| DCD |mmcSetStandbyState|
DCD 0x40004b02
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
; 706 : {
00000 e92d4ff0 stmdb sp!, {r4 - r11, lr}
00004 e24dd004 sub sp, sp, #4
00008 |$M37299|
00008 e1a09000 mov r9, r0
0000c e1a04001 mov r4, r1
; 758 : 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$36648|
00024 e59f00fc ldr r0, [pc, #0xFC]
00028 e1a07004 mov r7, r4
0002c eb000000 bl NKDbgPrintfW
00030 e1a0600a mov r6, r10
00034 |$L36650|
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$36655|
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$36655|
; 707 : MMC_CC resErr;
; 708 : INT16 loopCnt;
; 709 : UINT16 mmcRCA;
; 710 :
; 711 : REASSURE_STANDBY_STATE:
; 712 : mmcRCA = RCA;
; 713 : RETAILMSG(1, (TEXT("mmcSetStandbyState() is entered\r\n")));
; 714 : for (loopCnt = 0; loopCnt < 100; loopCnt++)
; 715 : {
; 716 :
; 717 : resErr = mmcCommandAndResponse ( pc,
; 718 : (((ULONG)RCA) << 16),
; 719 : SEND_STATUS,
; 720 : 0,
; 721 : R1 );
; 722 :
; 723 : if (resErr != MMC_NO_ERROR )
; 724 : goto DONE_SET_TO_STANDBY_STATE;
; 725 :
; 726 : if (pc->currentState == STANDBY)
; 727 : goto DONE_SET_TO_STANDBY_STATE;
; 728 :
; 729 : if (pc->currentState == TRANSFER)
00068 e3520004 cmp r2, #4
0006c 0a000009 beq |$L37290|
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 |$L36650|
; 737 : break;
; 738 : }
; 739 :
; 740 : }
; 741 :
; 742 : if (loopCnt == 100)
00094 ea000002 b |$L36652|
00098 |$L37290|
; 730 : {
; 731 :
; 735 : mmcRCA = 0;
; 736 : RETAILMSG(1, (TEXT("mmcSetStandbyState() TRANSFER\r\n")));
00098 e59f0084 ldr r0, [pc, #0x84]
0009c e1a0700a mov r7, r10
000a0 eb000000 bl NKDbgPrintfW
000a4 |$L36652|
; 737 : break;
; 738 : }
; 739 :
; 740 : }
; 741 :
; 742 : 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 |$L37291|
; 746 : goto DONE_SET_TO_STANDBY_STATE;
; 747 : }
; 748 :
; 749 :
; 750 :
; 751 :
; 752 : resErr = mmcCommandAndResponse ( pc,
; 753 : (((ULONG)mmcRCA) << 16),
; 754 : SELECT_DESELECT_CARD,
; 755 : 0,
; 756 : 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
; 757 : if ((r
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -