📄 sdmmc.cod
字号:
00090 e1b01820 movs r1, r0, lsr #16
00094 0a00006c beq |$L36576|
00098 |$L36575|
; 398 : {
; 399 :
; 406 :
; 407 : if (!sdFlag)
00098 e1a00809 mov r0, r9, lsl #16
0009c e1b01820 movs r1, r0, lsr #16
000a0 1a000030 bne |$L36587|
; 408 : {
; 409 :
; 410 : resErr = mmcCommandAndResponse ( pc,
; 411 : setupInfo,
; 412 : SEND_OP_COND,
; 413 : 0,
; 414 : R3 );
000a4 e3a00003 mov r0, #3
000a8 e58d0000 str r0, [sp]
000ac e3a03000 mov r3, #0
000b0 e3a02001 mov r2, #1
000b4 e1a01006 mov r1, r6
000b8 e1a00005 mov r0, r5
000bc eb000000 bl mmcCommandAndResponse
000c0 e1b04000 movs r4, r0
000c4 e58d400c str r4, [sp, #0xC]
; 415 :
; 416 :
; 417 : if (resErr == MMC_NO_ERROR)
000c8 1a000008 bne |$L36578|
; 418 : {
; 419 :
; 420 :
; 421 : cardType = MMC_TYPE;
; 422 : readyFlag = to_WORD((UCHAR *)&pc->LastResponse[0]);
000cc e2850028 add r0, r5, #0x28
000d0 e3a08101 mov r8, #1, 2
000d4 eb000000 bl to_WORD
000d8 e1a07000 mov r7, r0
; 423 : RETAILMSG(1, (TEXT("is the card ready? %x\r\n"), readyFlag));
000dc e1a00807 mov r0, r7, lsl #16
000e0 e1a01820 mov r1, r0, lsr #16
000e4 e59f0388 ldr r0, [pc, #0x388]
000e8 eb000000 bl NKDbgPrintfW
; 424 : }
; 425 :
; 431 :
; 438 : else if (resErr == MMC_CARD_IS_NOT_RESPONDING)
000ec ea00001d b |$L36587|
000f0 |$L36578|
000f0 e35400c9 cmp r4, #0xC9
000f4 1a00006e bne |$L37242|
; 439 : {
; 440 : #if (USE_SD)
; 441 :
; 442 : OS_WAIT(55);
000f8 e3a00037 mov r0, #0x37
000fc eb000000 bl platform_delayms
; 443 :
; 444 :
; 445 : setupInfo = 0x00FF8000L;
00100 e3a008ff mov r0, #0xFF, 16
00104 e3800902 orr r0, r0, #2, 18
00108 e1a06000 mov r6, r0
; 446 : resErr = mmcSDApplCmd(pc, SDNULL, setupInfo, 0, 0, R3, SD_SEND_OP_COND);
0010c e3a00f5a mov r0, #0x5A, 30
00110 e3800001 orr r0, r0, #1
00114 e58d0008 str r0, [sp, #8]
00118 e3a00003 mov r0, #3
0011c e58d0004 str r0, [sp, #4]
00120 e3a00000 mov r0, #0
00124 e3a028ff mov r2, #0xFF, 16
00128 e58d0000 str r0, [sp]
0012c e3a03000 mov r3, #0
00130 e3822902 orr r2, r2, #2, 18
00134 e3a01000 mov r1, #0
00138 e1a00005 mov r0, r5
0013c eb000000 bl mmcSDApplCmd
00140 e1a04000 mov r4, r0
; 447 : RETAILMSG(1, (TEXT("mmcreset:SD_SEND_OP_COND pass\r\n")));
00144 e59f0324 ldr r0, [pc, #0x324]
00148 e58d400c str r4, [sp, #0xC]
0014c eb000000 bl NKDbgPrintfW
; 448 : if (resErr != MMC_CARD_IS_NOT_RESPONDING)
00150 e35400c9 cmp r4, #0xC9
00154 0a000056 beq |$L37242|
; 449 : {
; 450 :
; 451 : sdFlag = YES;
00158 e3a00001 mov r0, #1
0015c e1a09000 mov r9, r0
; 452 : RETAILMSG(1, (TEXT("mmcreset:SD_SEND_OP_COND pass sd card\r\n")));
00160 e59f0304 ldr r0, [pc, #0x304]
00164 eb000000 bl NKDbgPrintfW
00168 |$L36587|
; 460 : goto END_OF_CARDS_SEARCH;
; 461 : }
; 462 : }
; 463 : else
; 464 : {
; 465 :
; 466 : resErr = MMC_INTERFACE_ERROR;
; 467 : goto END_OF_CARDS_SEARCH;
; 468 : }
; 469 : }
; 470 :
; 471 : #if (USE_SD)
; 472 :
; 473 : if (sdFlag)
00168 e1a00809 mov r0, r9, lsl #16
0016c e1b01820 movs r1, r0, lsr #16
00170 0a00001b beq |$L36592|
; 474 : {
; 475 : setupInfo = 0x00FF8000L;
00174 e3a008ff mov r0, #0xFF, 16
00178 e3800902 orr r0, r0, #2, 18
0017c e1a06000 mov r6, r0
; 476 :
; 477 :
; 481 :
; 482 : resErr = mmcSDApplCmd(pc, SDNULL, setupInfo, 0, 0, R3, SD_SEND_OP_COND);
00180 e3a00003 mov r0, #3
00184 e3a01f5a mov r1, #0x5A, 30
00188 e58d0004 str r0, [sp, #4]
0018c e3811001 orr r1, r1, #1
00190 e3a00000 mov r0, #0
00194 e58d1008 str r1, [sp, #8]
00198 e3a028ff mov r2, #0xFF, 16
0019c e58d0000 str r0, [sp]
001a0 e3a03000 mov r3, #0
001a4 e3822902 orr r2, r2, #2, 18
001a8 e3a01000 mov r1, #0
001ac e1a00005 mov r0, r5
001b0 eb000000 bl mmcSDApplCmd
001b4 e1b04000 movs r4, r0
001b8 e58d400c str r4, [sp, #0xC]
; 483 : if (resErr == MMC_NO_ERROR)
001bc 1a000008 bne |$L36592|
; 484 : {
; 485 : RETAILMSG(1, (TEXT("mmcreset:SD_SEND_OP_COND pass sd card again\r\n")));
001c0 e59f02a0 ldr r0, [pc, #0x2A0]
001c4 eb000000 bl NKDbgPrintfW
; 486 :
; 487 : cardType = SD_TYPE;
; 488 : sdFlag = YES;
001c8 e3a00001 mov r0, #1
001cc e3a03000 mov r3, #0
001d0 e1a09000 mov r9, r0
; 489 :
; 490 :
; 491 :
; 492 : readyFlag = to_WORD((UCHAR *)&pc->LastResponse[0]);
001d4 e2850028 add r0, r5, #0x28
001d8 e1a08003 mov r8, r3
001dc eb000000 bl to_WORD
001e0 e1a07000 mov r7, r0
001e4 |$L36592|
; 493 :
; 494 : }
; 495 : }
; 496 : #endif
; 497 :
; 498 :
; 499 : if (resErr == MMC_CARD_IS_NOT_RESPONDING)
001e4 e35400c9 cmp r4, #0xC9
001e8 0a000031 beq |$L37242|
; 500 : {
; 501 : resErr = MMC_INTERFACE_ERROR;
; 502 : goto END_OF_CARDS_SEARCH;
; 503 : }
; 504 :
; 505 : if ( resErr == MMC_NO_ERROR )
001ec e3540000 cmp r4, #0
001f0 1a000011 bne |$L36599|
; 506 : {
; 507 :
; 508 : if ( (readyFlag & CARD_READY_FLAG) )
001f4 e1a00807 mov r0, r7, lsl #16
001f8 e1a01820 mov r1, r0, lsr #16
001fc e3110902 tst r1, #2, 18
00200 1a00002f bne |$L37244|
; 512 : }
; 513 :
; 514 : pc->timer--;
00204 e1d501b8 ldrh r0, [r5, #0x18]
00208 e1a01800 mov r1, r0, lsl #16
0020c e1a02821 mov r2, r1, lsr #16
00210 e2820cff add r0, r2, #0xFF, 24
00214 e28010ff add r1, r0, #0xFF
00218 e1a02801 mov r2, r1, lsl #16
0021c e1a00822 mov r0, r2, lsr #16
00220 e1c501b8 strh r0, [r5, #0x18]
; 515 :
; 516 : OS_WAIT(1);
00224 e3a00001 mov r0, #1
00228 eb000000 bl platform_delayms
; 517 :
; 518 : if ( !pc->timer )
0022c e1d531b8 ldrh r3, [r5, #0x18]
00230 e1a00803 mov r0, r3, lsl #16
00234 e1b01820 movs r1, r0, lsr #16
00238 0a000024 beq |$L37245|
0023c |$L36599|
; 395 :
; 396 :
; 397 : while (pc->timer)
0023c e1d501b8 ldrh r0, [r5, #0x18]
00240 e1a01800 mov r1, r0, lsl #16
00244 e1b02821 movs r2, r1, lsr #16
00248 1affff92 bne |$L36575|
0024c |$L36576|
; 523 : }
; 524 : }
; 525 : }
; 526 :
; 527 :
; 528 : i = NO;
; 529 : for (;;)
; 530 : {
; 531 : RETAILMSG(1, (TEXT("tr to asssign RCA with ID %d\r\n"), i));
0024c e59f01fc ldr r0, [pc, #0x1FC]
00250 e3a04000 mov r4, #0
00254 e3a01000 mov r1, #0
00258 e1a05004 mov r5, r4
0025c eb000000 bl NKDbgPrintfW
; 532 : pc->drive_active = i;
00260 e59d3010 ldr r3, [sp, #0x10]
; 533 :
; 534 : if ( mmcIdentify (pc, cardType, i) != MMC_NO_ERROR )
00264 e3a02000 mov r2, #0
00268 e1a01008 mov r1, r8
0026c e1c341be strh r4, [r3, #0x1E]
00270 e1a00003 mov r0, r3
00274 eb000000 bl mmcIdentify
00278 e3500000 cmp r0, #0
0027c 1a000037 bne |$L37246|
; 537 :
; 538 : break;
; 539 : }
; 540 : RETAILMSG(1, (TEXT("after successfully assign RCA, continue\r\n")));
00280 e3a05000 mov r5, #0
00284 e1a04005 mov r4, r5
00288 |$L36601|
00288 e59f01d4 ldr r0, [pc, #0x1D4]
0028c eb000000 bl NKDbgPrintfW
; 541 :
; 542 :
; 543 : if (cardType == SD_TYPE)
00290 e3580000 cmp r8, #0
00294 1a000010 bne |$L36607|
; 544 : {
; 545 : RETAILMSG(1, (TEXT("mmcReset -- It entered SD Card area\r\n")));
00298 e59f01c0 ldr r0, [pc, #0x1C0]
0029c eb000000 bl NKDbgPrintfW
; 546 :
; 547 : (pc->drive)->RCA = pc->LastResponse[4];
002a0 e59d5010 ldr r5, [sp, #0x10]
002a4 e5953000 ldr r3, [r5]
002a8 e1d503b0 ldrh r0, [r5, #0x30]
002ac e1c300be strh r0, [r3, #0xE]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -