📄 sdmmc.cod
字号:
; 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 + -