📄 sdmmc.cod
字号:
|??_C@_1EA@FIDN@?$AAt?$AAr?$AA?5?$AAt?$AAo?$AA?5?$AAa?$AAs?$AAs?$AAs?$AAi?$AAg?$AAn?$AA?5?$AAR?$AAC?$AAA?$AA?5?$AA?5?$AAw@| DCB "t"
DCB 0x0, "r", 0x0, " ", 0x0, "t", 0x0, "o", 0x0, " ", 0x0, "a"
DCB 0x0, "s", 0x0, "s", 0x0, "s", 0x0, "i", 0x0, "g", 0x0, "n"
DCB 0x0, " ", 0x0, "R", 0x0, "C", 0x0, "A", 0x0, " ", 0x0, " "
DCB 0x0, "w", 0x0, "i", 0x0, "t", 0x0, "h", 0x0, " ", 0x0, "I"
DCB 0x0, "D", 0x0, " ", 0x0, "%", 0x0, "d", 0x0, 0xd, 0x0, 0xa
DCB 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1FE@BKCB@?$AAa?$AAf?$AAt?$AAe?$AAr?$AA?5?$AAs?$AAu?$AAc?$AAc?$AAe?$AAs?$AAs?$AAf?$AAu?$AAl?$AAl?$AAy?$AA?5?$AAa@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FE@BKCB@?$AAa?$AAf?$AAt?$AAe?$AAr?$AA?5?$AAs?$AAu?$AAc?$AAc?$AAe?$AAs?$AAs?$AAf?$AAu?$AAl?$AAl?$AAy?$AA?5?$AAa@| DCB "a"
DCB 0x0, "f", 0x0, "t", 0x0, "e", 0x0, "r", 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, "y", 0x0, " "
DCB 0x0, "a", 0x0, "s", 0x0, "s", 0x0, "i", 0x0, "g", 0x0, "n"
DCB 0x0, " ", 0x0, "R", 0x0, "C", 0x0, "A", 0x0, ",", 0x0, " "
DCB 0x0, "c", 0x0, "o", 0x0, "n", 0x0, "t", 0x0, "i", 0x0, "n"
DCB 0x0, "u", 0x0, "e", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1EM@DOL@?$AAm?$AAm?$AAc?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?5?$AA?9?$AA?9?$AA?5?$AAI?$AAt?$AA?5?$AAe?$AAn?$AAt?$AAe?$AAr@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EM@DOL@?$AAm?$AAm?$AAc?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?5?$AA?9?$AA?9?$AA?5?$AAI?$AAt?$AA?5?$AAe?$AAn?$AAt?$AAe?$AAr@| DCB "m"
DCB 0x0, "m", 0x0, "c", 0x0, "R", 0x0, "e", 0x0, "s", 0x0, "e"
DCB 0x0, "t", 0x0, " ", 0x0, "-", 0x0, "-", 0x0, " ", 0x0, "I"
DCB 0x0, "t", 0x0, " ", 0x0, "e", 0x0, "n", 0x0, "t", 0x0, "e"
DCB 0x0, "r", 0x0, "e", 0x0, "d", 0x0, " ", 0x0, "S", 0x0, "D"
DCB 0x0, " ", 0x0, "C", 0x0, "a", 0x0, "r", 0x0, "d", 0x0, " "
DCB 0x0, "a", 0x0, "r", 0x0, "e", 0x0, "a", 0x0, 0xd, 0x0, 0xa
DCB 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1CC@MGHJ@?$AAc?$AAa?$AAr?$AAd?$AA?5?$AAi?$AAs?$AA?5?$AAr?$AAe?$AAa?$AAd?$AAy?$AA?$CB?$AA?$AN?$AA?6?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CC@MGHJ@?$AAc?$AAa?$AAr?$AAd?$AA?5?$AAi?$AAs?$AA?5?$AAr?$AAe?$AAa?$AAd?$AAy?$AA?$CB?$AA?$AN?$AA?6?$AA?$AA@| DCB "c"
DCB 0x0, "a", 0x0, "r", 0x0, "d", 0x0, " ", 0x0, "i", 0x0, "s"
DCB 0x0, " ", 0x0, "r", 0x0, "e", 0x0, "a", 0x0, "d", 0x0, "y"
DCB 0x0, "!", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1EE@PPN@?$AAM?$AAM?$AAC?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?5?$AA?9?$AA?5?$AAp?$AAc?$AA?9?$AA?$DO?$AAd?$AAr?$AAi?$AAv?$AAe@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EE@PPN@?$AAM?$AAM?$AAC?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?5?$AA?9?$AA?5?$AAp?$AAc?$AA?9?$AA?$DO?$AAd?$AAr?$AAi?$AAv?$AAe@| DCB "M"
DCB 0x0, "M", 0x0, "C", 0x0, "R", 0x0, "e", 0x0, "s", 0x0, "e"
DCB 0x0, "t", 0x0, " ", 0x0, "-", 0x0, " ", 0x0, "p", 0x0, "c"
DCB 0x0, "-", 0x0, ">", 0x0, "d", 0x0, "r", 0x0, "i", 0x0, "v"
DCB 0x0, "e", 0x0, "-", 0x0, ">", 0x0, "R", 0x0, "C", 0x0, "A"
DCB 0x0, " ", 0x0, "i", 0x0, "s", 0x0, " ", 0x0, "%", 0x0, "d"
DCB 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1DK@LFHM@?$AAn?$AAo?$AAw?$AA?0?$AA?5?$AAt?$AAh?$AAe?$AA?5?$AAn?$AAu?$AAm?$AAb?$AAe?$AAr?$AA?5?$AAo?$AAf?$AA?5?$AAi@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1DK@LFHM@?$AAn?$AAo?$AAw?$AA?0?$AA?5?$AAt?$AAh?$AAe?$AA?5?$AAn?$AAu?$AAm?$AAb?$AAe?$AAr?$AA?5?$AAo?$AAf?$AA?5?$AAi@| DCB "n"
DCB 0x0, "o", 0x0, "w", 0x0, ",", 0x0, " ", 0x0, "t", 0x0, "h"
DCB 0x0, "e", 0x0, " ", 0x0, "n", 0x0, "u", 0x0, "m", 0x0, "b"
DCB 0x0, "e", 0x0, "r", 0x0, " ", 0x0, "o", 0x0, "f", 0x0, " "
DCB 0x0, "i", 0x0, " ", 0x0, "i", 0x0, "s", 0x0, " ", 0x0, "%"
DCB 0x0, "d", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1FG@OKKD@?$AAa?$AAs?$AAs?$AAs?$AAi?$AAg?$AAn?$AA?5?$AAR?$AAC?$AAA?$AA?5?$AAi?$AAs?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAs@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FG@OKKD@?$AAa?$AAs?$AAs?$AAs?$AAi?$AAg?$AAn?$AA?5?$AAR?$AAC?$AAA?$AA?5?$AAi?$AAs?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAs@| DCB "a"
DCB 0x0, "s", 0x0, "s", 0x0, "s", 0x0, "i", 0x0, "g", 0x0, "n"
DCB 0x0, " ", 0x0, "R", 0x0, "C", 0x0, "A", 0x0, " ", 0x0, "i"
DCB 0x0, "s", 0x0, " ", 0x0, "n", 0x0, "o", 0x0, "t", 0x0, " "
DCB 0x0, "s", 0x0, "u", 0x0, "c", 0x0, "e", 0x0, "s", 0x0, "s"
DCB 0x0, "f", 0x0, "u", 0x0, "l", 0x0, "!", 0x0, " ", 0x0, "w"
DCB 0x0, "i", 0x0, "t", 0x0, "h", 0x0, " ", 0x0, "I", 0x0, "D"
DCB 0x0, " ", 0x0, "%", 0x0, "d", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
DCB 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1CG@DHEP@?$AAN?$AAo?$AA?5?$AAc?$AAa?$AAr?$AAd?$AA?5?$AAi?$AAs?$AA?5?$AAf?$AAo?$AAu?$AAn?$AAd?$AA?$AN?$AA?6?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CG@DHEP@?$AAN?$AAo?$AA?5?$AAc?$AAa?$AAr?$AAd?$AA?5?$AAi?$AAs?$AA?5?$AAf?$AAo?$AAu?$AAn?$AAd?$AA?$AN?$AA?6?$AA?$AA@| DCB "N"
DCB 0x0, "o", 0x0, " ", 0x0, "c", 0x0, "a", 0x0, "r", 0x0, "d"
DCB 0x0, " ", 0x0, "i", 0x0, "s", 0x0, " ", 0x0, "f", 0x0, "o"
DCB 0x0, "u", 0x0, "n", 0x0, "d", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
DCB 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1DG@DFMO@?$AAd?$AAe?$AAv?$AAC?$AAo?$AAu?$AAn?$AAt?$AA?5?$AAi?$AAs?$AA?5?$AAf?$AAo?$AAl?$AAl?$AAo?$AAw?$AAi?$AAn@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1DG@DFMO@?$AAd?$AAe?$AAv?$AAC?$AAo?$AAu?$AAn?$AAt?$AA?5?$AAi?$AAs?$AA?5?$AAf?$AAo?$AAl?$AAl?$AAo?$AAw?$AAi?$AAn@| DCB "d"
DCB 0x0, "e", 0x0, "v", 0x0, "C", 0x0, "o", 0x0, "u", 0x0, "n"
DCB 0x0, "t", 0x0, " ", 0x0, "i", 0x0, "s", 0x0, " ", 0x0, "f"
DCB 0x0, "o", 0x0, "l", 0x0, "l", 0x0, "o", 0x0, "w", 0x0, "i"
DCB 0x0, "n", 0x0, "g", 0x0, " ", 0x0, "%", 0x0, "d", 0x0, 0xd
DCB 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1EG@HFPL@?$AAm?$AAm?$AAc?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?5?$AAR?$AAe?$AAs?$AAE?$AAr?$AAr?$AA?5?$AAi?$AAs?$AA?5?$AAa@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EG@HFPL@?$AAm?$AAm?$AAc?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?5?$AAR?$AAe?$AAs?$AAE?$AAr?$AAr?$AA?5?$AAi?$AAs?$AA?5?$AAa@| DCB "m"
DCB 0x0, "m", 0x0, "c", 0x0, "R", 0x0, "e", 0x0, "s", 0x0, "e"
DCB 0x0, "t", 0x0, " ", 0x0, "R", 0x0, "e", 0x0, "s", 0x0, "E"
DCB 0x0, "r", 0x0, "r", 0x0, " ", 0x0, "i", 0x0, "s", 0x0, " "
DCB 0x0, "a", 0x0, "s", 0x0, " ", 0x0, "f", 0x0, "o", 0x0, "l"
DCB 0x0, "l", 0x0, "o", 0x0, "w", 0x0, "s", 0x0, " ", 0x0, "%"
DCB 0x0, "d", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |mmcReset| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |mmcReset| PROC
; 204 : {
00000 e92d4ff0 stmdb sp!, {r4 - r11, lr}
00004 e24dd014 sub sp, sp, #0x14
00008 |$M37264|
00008 e1a05000 mov r5, r0
0000c e58d5010 str r5, [sp, #0x10]
00010 e1a06001 mov r6, r1
; 205 : UINT32 cardType;
; 206 : MMC_CC resErr;
; 207 : UINT16 sdFlag;
; 208 : UINT16 readyFlag;
; 209 :
; 210 : #if (USE_SPI || USE_SPI_EMULATION)
; 211 : INT16 ChipNum;
; 212 :
; 213 : ChipNum = (INT16)setupInfo;
; 214 : pc->timer = (RESET_DELAY << 2);
; 215 : cardType = NO;
; 216 : readyFlag = NO;
; 217 : resErr = MMC_NO_ERROR;
; 218 : pc->drive_active = ChipNum;
; 219 :
; 220 :
; 221 : selectChip( ChipNum );
; 222 :
; 223 :
; 224 : resErr = mmcCommandAndResponse ( pc,
; 225 : 0L,
; 226 : GO_IDLE_STATE,
; 227 : 0,
; 228 : R1 );
; 229 :
; 230 :
; 231 : deSelectChip ( ChipNum );
; 232 :
; 233 :
; 234 : if ( (resErr != MMC_CARD_IS_NOT_READY) )
; 235 : {
; 236 :
; 237 : pc->error_code = MMC_INTERFACE_ERROR;
; 238 : return MMC_INTERFACE_ERROR;
; 239 : }
; 240 :
; 241 :
; 245 : #if (USE_SD)
; 246 : sdFlag = YES;
; 247 : #else
; 248 : sdFlag = NO;
; 249 : #endif
; 250 : while ( pc->timer )
; 251 : {
; 252 :
; 258 :
; 259 : #if (USE_SD)
; 260 :
; 261 : if (sdFlag)
; 262 : {
; 263 :
; 264 : resErr = mmcSDApplCmd(pc, SDNULL, 0L, 0, 0, R1, SD_SEND_OP_COND);
; 265 :
; 266 :
; 267 : if (resErr == MMC_COMUNC_ILLEG_COM)
; 268 : {
; 269 :
; 274 : sdFlag = NO;
; 275 : }
; 276 : else if (resErr == MMC_NO_ERROR)
; 277 : {
; 278 :
; 279 : cardType = SD_TYPE;
; 280 : readyFlag = CARD_READY_FLAG;
; 281 :
; 282 :
; 283 : #if 0
; 284 :
; 287 : selectChip( ChipNum );
; 288 : resErr = mmcCommandAndResponse ( pc,
; 289 : 0L,
; 290 : SD_READ_OCR,
; 291 : 0,
; 292 : R3 );
; 293 : deSelectChip ( ChipNum );
; 294 :
; 295 : if (resErr == MMC_NO_ERROR)
; 296 : {
; 297 :
; 298 : readyFlag = to_WORD((UCHAR *)&pc->LastResponse[1]);
; 299 : if (!(readyFlag & CARD_READY_FLAG))
; 300 : {
; 301 :
; 302 : resErr = MMC_CARD_IS_NOT_READY;
; 303 : }
; 304 : }
; 305 : #endif
; 306 : }
; 307 : }
; 308 : #endif
; 309 :
; 310 :
; 311 : if (!sdFlag)
; 312 : {
; 313 :
; 314 : RETAILMSG(1, (TEXT("Before sending SEND_OP_COND command \r\n")));
; 315 :
; 316 :
; 317 : resErr = mmcCommandAndResponse ( pc,
; 318 : 0L,
; 319 : SEND_OP_COND,
; 320 : 0,
; 321 : R1 );
; 322 :
; 323 :
; 324 :
; 325 : if ( (resErr == MMC_CARD_IS_NOT_READY) || (resErr == MMC_NO_ERROR) )
; 326 : {
; 327 :
; 328 : cardType = SPI_TYPE;
; 329 :
; 330 : sdFlag = NO;
; 331 : RETAILMSG(1, (TEXT(" After sending SEND_OP_COND command, MMC_CARD_NOT_READY\r\n")));
; 332 : }
; 333 : }
; 334 :
; 335 :
; 336 : if ( (resErr != MMC_CARD_IS_NOT_READY) && resErr )
; 337 : {
; 338 : pc->error_code = (UINT16)resErr;
; 339 : return resErr;
; 340 : }
; 341 :
; 342 :
; 343 : if ( resErr == MMC_CARD_IS_NOT_READY )
; 344 : {
; 345 : pc->timer--;
; 346 : OS_WAIT(1);
; 347 : if ( !pc->timer )
; 348 : {
; 349 : pc->error_code = MMC_CARD_IS_NOT_READY;
; 350 : return MMC_CARD_IS_NOT_READY;
; 351 : }
; 352 : }
; 353 : else if (resErr == MMC_NO_ERROR)
; 354 : {
; 355 :
; 356 : pc->drive[ChipNum].drv_type = cardType;
; 357 :
; 358 :
; 359 : pc->drive[ChipNum].RCA = (UINT16)ChipNum;
; 360 : break;
; 361 : }
; 362 : }
; 363 :
; 364 : #else
; 365 : UINT16 i, bInterface;
; 366 : UINT16 devCount;
; 367 : RETAILMSG(1, (TEXT("mmcReset() entered \r\n")));
00014 e59f0460 ldr r0, [pc, #0x460]
00018 eb000000 bl NKDbgPrintfW
; 368 : pc->timer = (RESET_DELAY << 2);
; 369 : cardType = NO;
; 370 : readyFlag = NO;
; 371 : resErr = MMC_NO_ERROR;
; 372 :
; 373 :
; 374 :
; 380 : bInterface = 0;
; 381 : devCount = 0;
; 382 :
; 383 : sdFlag = NO;
; 384 :
; 385 : #if (USE_SD)
; 386 : RETAILMSG(1, (TEXT("user_sd\r\n")));
0001c e59f0454 ldr r0, [pc, #0x454]
00020 e3a02000 mov r2, #0
00024 e3a03078 mov r3, #0x78
00028 e1a04002 mov r4, r2
0002c e1c531b8 strh r3, [r5, #0x18]
00030 e1a08002 mov r8, r2
00034 e58d400c str r4, [sp, #0xC]
00038 e1a07002 mov r7, r2
0003c e1a0a002 mov r10, r2
00040 e1a0b002 mov r11, r2
00044 e1a09002 mov r9, r2
00048 eb000000 bl NKDbgPrintfW
0004c |$DO_ALL_BUS_INTERFACE$36570|
; 387 : #endif
; 388 : #if (USE_SD)
; 389 : DO_ALL_BUS_INTERFACE:
; 390 : #endif
; 391 : for (i = 0; i < (CID_BYTE_LENGTH/2); pc->LastResponse[i++] = 0);
0004c e3a02000 mov r2, #0
00050 e1a01002 mov r1, r2
; 535 : {
; 536 : RETAILMSG(1, (TEXT("asssign RCA is not sucessful! with ID %d\r\n"), i));
00054 ea000000 b |$L36571|
00058 |$L37262|
00058 e3a02000 mov r2, #0
0005c |$L36571|
; 387 : #endif
; 388 : #if (USE_SD)
; 389 : DO_ALL_BUS_INTERFACE:
; 390 : #endif
; 391 : for (i = 0; i < (CID_BYTE_LENGTH/2); pc->LastResponse[i++] = 0);
0005c e0850081 add r0, r5, r1, lsl #1
00060 e2811001 add r1, r1, #1
00064 e1c022b8 strh r2, [r0, #0x28]
00068 e1a00801 mov r0, r1, lsl #16
0006c e1a02820 mov r2, r0, lsr #16
00070 e1a01802 mov r1, r2, lsl #16
00074 e1a01821 mov r1, r1, lsr #16
00078 e3510008 cmp r1, #8
0007c 3afffff5 bcc |$L37262|
; 392 :
; 393 :
; 394 : OS_WAIT(25);
00080 e3a00019 mov r0, #0x19
00084 eb000000 bl platform_delayms
; 395 :
; 396 :
; 397 : while (pc->timer)
00088 e1d531b8 ldrh r3, [r5, #0x18]
0008c e1a00803 mov r0, r3, lsl #16
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -