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

📄 sdcard.txt

📁 stm32.rar
💻 TXT
📖 第 1 页 / 共 5 页
字号:
0000fc  f0010101          AND      r1,r1,#1
000100  7781              STRB     r1,[r0,#0x1e]
;;;528    
;;;529      /* Byte 14 */
;;;530      tmp = (u8)((CSD_Tab[3] & 0x0000FF00) >> 8);
000102  f3c22107          UBFX     r1,r2,#8,#8
;;;531      cardinfo->SD_csd.FileFormatGrouop = (tmp & 0x80) >> 7;
000106  09cc              LSRS     r4,r1,#7
000108  77c4              STRB     r4,[r0,#0x1f]
;;;532      cardinfo->SD_csd.CopyFlag = (tmp & 0x40) >> 6;
00010a  f3c11480          UBFX     r4,r1,#6,#1
00010e  f8804020          STRB     r4,[r0,#0x20]
;;;533      cardinfo->SD_csd.PermWrProtect = (tmp & 0x20) >> 5;
000112  f3c11440          UBFX     r4,r1,#5,#1
000116  f8804021          STRB     r4,[r0,#0x21]
;;;534      cardinfo->SD_csd.TempWrProtect = (tmp & 0x10) >> 4;
00011a  f3c11400          UBFX     r4,r1,#4,#1
00011e  f8804022          STRB     r4,[r0,#0x22]
;;;535      cardinfo->SD_csd.FileFormat = (tmp & 0x0C) >> 2;
000122  f3c10481          UBFX     r4,r1,#2,#2
000126  f8804023          STRB     r4,[r0,#0x23]
;;;536      cardinfo->SD_csd.ECC = (tmp & 0x03);
00012a  f0010103          AND      r1,r1,#3
00012e  f8801024          STRB     r1,[r0,#0x24]
;;;537    
;;;538      /* Byte 15 */
;;;539      tmp = (u8)(CSD_Tab[3] & 0x000000FF);
;;;540      cardinfo->SD_csd.CSD_CRC = (tmp & 0xFE) >> 1;
000132  f3c20146          UBFX     r1,r2,#1,#7
000136  f8801025          STRB     r1,[r0,#0x25]
;;;541      cardinfo->SD_csd.Reserved4 = 1;
00013a  2401              MOVS     r4,#1
00013c  f8804026          STRB     r4,[r0,#0x26]
;;;542    
;;;543    
;;;544      /* Byte 0 */
;;;545      tmp = (u8)((CID_Tab[0] & 0xFF000000) >> 24);
000140  4a2a              LDR      r2,|L7.492|
000142  3210              ADDS     r2,r2,#0x10
000144  6811              LDR      r1,[r2,#0]  ; CID_Tab
000146  0e0d              LSRS     r5,r1,#24
;;;546      cardinfo->SD_cid.ManufacturerID = tmp;
000148  f8805028          STRB     r5,[r0,#0x28]
;;;547    
;;;548      /* Byte 1 */
;;;549      tmp = (u8)((CID_Tab[0] & 0x00FF0000) >> 16);
00014c  f3c14507          UBFX     r5,r1,#16,#8
;;;550      cardinfo->SD_cid.OEM_AppliID = tmp << 8;
000150  022d              LSLS     r5,r5,#8
000152  8545              STRH     r5,[r0,#0x2a]
;;;551    
;;;552      /* Byte 2 */
;;;553      tmp = (u8)((CID_Tab[0] & 0x000000FF00) >> 8);
;;;554      cardinfo->SD_cid.OEM_AppliID |= tmp;
000154  8d46              LDRH     r6,[r0,#0x2a]
000156  f3c12507          UBFX     r5,r1,#8,#8           ;553
00015a  432e              ORRS     r6,r6,r5
00015c  8546              STRH     r6,[r0,#0x2a]
;;;555    
;;;556      /* Byte 3 */
;;;557      tmp = (u8)(CID_Tab[0] & 0x000000FF);
;;;558      cardinfo->SD_cid.ProdName1 = tmp << 24;
00015e  0609              LSLS     r1,r1,#24
000160  62c1              STR      r1,[r0,#0x2c]
;;;559    
;;;560      /* Byte 4 */
;;;561      tmp = (u8)((CID_Tab[1] & 0xFF000000) >> 24);
000162  6851              LDR      r1,[r2,#4]  ; CID_Tab
;;;562      cardinfo->SD_cid.ProdName1 |= tmp << 16;
000164  6ac6              LDR      r6,[r0,#0x2c]
000166  0e0d              LSRS     r5,r1,#24             ;561
000168  ea464505          ORR      r5,r6,r5,LSL #16
00016c  62c5              STR      r5,[r0,#0x2c]
;;;563    
;;;564      /* Byte 5 */
;;;565      tmp = (u8)((CID_Tab[1] & 0x00FF0000) >> 16);
;;;566      cardinfo->SD_cid.ProdName1 |= tmp << 8;
00016e  6ac6              LDR      r6,[r0,#0x2c]
000170  f3c14507          UBFX     r5,r1,#16,#8          ;565
000174  ea462505          ORR      r5,r6,r5,LSL #8
000178  62c5              STR      r5,[r0,#0x2c]
;;;567    
;;;568      /* Byte 6 */
;;;569      tmp = (u8)((CID_Tab[1] & 0x0000FF00) >> 8);
;;;570      cardinfo->SD_cid.ProdName1 |= tmp;
00017a  6ac6              LDR      r6,[r0,#0x2c]
00017c  f3c12507          UBFX     r5,r1,#8,#8           ;569
000180  432e              ORRS     r6,r6,r5
000182  62c6              STR      r6,[r0,#0x2c]
;;;571    
;;;572      /* Byte 7 */
;;;573      tmp = (u8)(CID_Tab[1] & 0x000000FF);
;;;574      cardinfo->SD_cid.ProdName2 = tmp;
000184  f8801030          STRB     r1,[r0,#0x30]
;;;575    
;;;576      /* Byte 8 */
;;;577      tmp = (u8)((CID_Tab[2] & 0xFF000000) >> 24);
000188  6891              LDR      r1,[r2,#8]  ; CID_Tab
00018a  0e0d              LSRS     r5,r1,#24
;;;578      cardinfo->SD_cid.ProdRev = tmp;
00018c  f8805031          STRB     r5,[r0,#0x31]
;;;579    
;;;580      /* Byte 9 */
;;;581      tmp = (u8)((CID_Tab[2] & 0x00FF0000) >> 16);
000190  f3c14507          UBFX     r5,r1,#16,#8
;;;582      cardinfo->SD_cid.ProdSN = tmp << 24;
000194  062d              LSLS     r5,r5,#24
000196  6345              STR      r5,[r0,#0x34]
;;;583    
;;;584      /* Byte 10 */
;;;585      tmp = (u8)((CID_Tab[2] & 0x0000FF00) >> 8);
;;;586      cardinfo->SD_cid.ProdSN |= tmp << 16;
000198  6b46              LDR      r6,[r0,#0x34]
00019a  f3c12507          UBFX     r5,r1,#8,#8           ;585
00019e  ea464505          ORR      r5,r6,r5,LSL #16
0001a2  6345              STR      r5,[r0,#0x34]
;;;587    
;;;588      /* Byte 11 */
;;;589      tmp = (u8)(CID_Tab[2] & 0x000000FF);
;;;590      cardinfo->SD_cid.ProdSN |= tmp << 8;
0001a4  6b45              LDR      r5,[r0,#0x34]
0001a6  b2c9              UXTB     r1,r1                 ;589
0001a8  ea452101          ORR      r1,r5,r1,LSL #8
0001ac  6341              STR      r1,[r0,#0x34]
;;;591    
;;;592      /* Byte 12 */
;;;593      tmp = (u8)((CID_Tab[3] & 0xFF000000) >> 24);
;;;594      cardinfo->SD_cid.ProdSN |= tmp;
0001ae  68d1              LDR      r1,[r2,#0xc]  ; CID_Tab
0001b0  6b45              LDR      r5,[r0,#0x34]
0001b2  ea456511          ORR      r5,r5,r1,LSR #24
0001b6  6345              STR      r5,[r0,#0x34]
;;;595    
;;;596      /* Byte 13 */
;;;597      tmp = (u8)((CID_Tab[3] & 0x00FF0000) >> 16);
;;;598      cardinfo->SD_cid.Reserved1 |= (tmp & 0xF0) >> 4;
0001b8  f8905038          LDRB     r5,[r0,#0x38]
0001bc  f3c14207          UBFX     r2,r1,#16,#8          ;597
0001c0  ea451512          ORR      r5,r5,r2,LSR #4
0001c4  f8805038          STRB     r5,[r0,#0x38]
;;;599      cardinfo->SD_cid.ManufactDate = (tmp & 0x0F) << 8;
0001c8  0712              LSLS     r2,r2,#28
0001ca  0d12              LSRS     r2,r2,#20
0001cc  8742              STRH     r2,[r0,#0x3a]
;;;600    
;;;601      /* Byte 14 */
;;;602      tmp = (u8)((CID_Tab[3] & 0x0000FF00) >> 8);
;;;603      cardinfo->SD_cid.ManufactDate |= tmp;
0001ce  8f45              LDRH     r5,[r0,#0x3a]
0001d0  f3c12207          UBFX     r2,r1,#8,#8           ;602
0001d4  4315              ORRS     r5,r5,r2
0001d6  8745              STRH     r5,[r0,#0x3a]
;;;604    
;;;605      /* Byte 15 */
;;;606      tmp = (u8)(CID_Tab[3] & 0x000000FF);
;;;607      cardinfo->SD_cid.CID_CRC = (tmp & 0xFE) >> 1;
0001d8  f3c10146          UBFX     r1,r1,#1,#7
0001dc  f880103c          STRB     r1,[r0,#0x3c]
;;;608      cardinfo->SD_cid.Reserved2 = 1;
0001e0  f880403d          STRB     r4,[r0,#0x3d]
;;;609    
;;;610      return(errorstatus);
0001e4  4618              MOV      r0,r3
;;;611    }
0001e6  bd70              POP      {r4-r6,pc}
;;;612    
                          ENDP

                  |L7.488|
0001e8  00000000          DCD      ||.data||
                  |L7.492|
0001ec  00000000          DCD      ||.bss||

                          AREA ||i.FindSCR||, CODE, READONLY, ALIGN=2

                  FindSCR PROC
;;;2676   static SD_Error FindSCR(u16 rca, u32 *pscr)
;;;2677   {
000000  e92d5ffc          PUSH     {r2-r12,lr}
;;;2678     u32 index = 0;
000004  2400              MOVS     r4,#0
000006  460e              MOV      r6,r1                 ;2677
;;;2679     SD_Error errorstatus = SD_OK;
;;;2680     u32 tempscr[2] = {0, 0};
000008  466f              MOV      r7,sp
00000a  4620              MOV      r0,r4
00000c  4621              MOV      r1,r4
00000e  e8870003          STM      r7,{r0,r1}
;;;2681   
;;;2682     /* Set Block Size To 8 Bytes */
;;;2683     /* Send CMD55 APP_CMD with argument as card's RCA */
;;;2684     SDIO_CmdInitStructure.SDIO_Argument = (u32)8;
000012  f8df8120          LDR      r8,|L8.308|
;;;2685     SDIO_CmdInitStructure.SDIO_CmdIndex = SDIO_SET_BLOCKLEN;
;;;2686     SDIO_CmdInitStructure.SDIO_Response = SDIO_Response_Short;
;;;2687     SDIO_CmdInitStructure.SDIO_Wait = SDIO_Wait_No;
;;;2688     SDIO_CmdInitStructure.SDIO_CPSM = SDIO_CPSM_Enable;
000016  f44f6b80          MOV      r11,#0x400
;;;2689     SDIO_SendCommand(&SDIO_CmdInitStructure);
00001a  e9c84b03          STRD     r4,r11,[r8,#0xc]
00001e  2010              MOVS     r0,#0x10              ;2685
000020  f04f0940          MOV      r9,#0x40              ;2686
000024  e9c80901          STRD     r0,r9,[r8,#4]
000028  2508              MOVS     r5,#8                 ;2684
00002a  46a2              MOV      r10,r4                ;2687
00002c  f8c85000          STR      r5,[r8,#0]  ; SDIO_CmdInitStructure
000030  4640              MOV      r0,r8
000032  f7fffffe          BL       SDIO_SendCommand
;;;2690   
;;;2691     errorstatus = CmdResp1Error(SDIO_SET_BLOCKLEN);
000036  2010              MOVS     r0,#0x10
000038  f7fffffe          BL       CmdResp1Error
;;;2692   
;;;2693     if (errorstatus != SD_OK)
00003c  282a              CMP      r0,#0x2a
00003e  d130              BNE      |L8.162|
;;;2694     {
;;;2695       return(errorstatus);
;;;2696     }
;;;2697   
;;;2698     /* Send CMD55 APP_CMD with argument as card's RCA */
;;;2699     SDIO_CmdInitStructure.SDIO_Argument = (u32) RCA << 16;
000040  483d              LDR      r0,|L8.312|
000042  6880              LDR      r0,[r0,#8]  ; RCA
000044  0400              LSLS     r0,r0,#16
;;;2700     SDIO_CmdInitStructure.SDIO_CmdIndex = SDIO_APP_CMD;
000046  f8c80000          STR      r0,[r8,#0]  ; SDIO_CmdInitStructure
00004a  2037              MOVS     r0,#0x37
;;;2701     SDIO_CmdInitStructure.SDIO_Response = SDIO_Response_Short;
;;;2702     SDIO_CmdInitStructure.SDIO_Wait = SDIO_Wait_No;
;;;2703     SDIO_CmdInitStructure.SDIO_CPSM = SDIO_CPSM_Enable;
;;;2704     SDIO_SendCommand(&SDIO_CmdInitStructure);
00004c  e9c8ab03          STRD     r10,r11,[r8,#0xc]
000050  e9c80901          STRD     r0,r9,[r8,#4]
000054  4640              MOV      r0,r8
000056  f7fffffe          BL       SDIO_SendCommand
;;;2705   
;;;2706     errorstatus = CmdResp1Error(SDIO_APP_CMD);
00005a  2037              MOVS     r0,#0x37
00005c  f7fffffe          BL       CmdResp1Error
;;;2707   
;;;2708     if (errorstatus != SD_OK)
000060  282a              CMP      r0,#0x2a
000062  d11e              BNE      |L8.162|
;;;2709     {
;;;2710       return(errorstatus);
;;;2711     }
;;;2712     SDIO_DataInitStructure.SDIO_DataTimeOut = SD_DATATIMEOUT;
000064  4935              LDR      r1,|L8.316|
000066  f1080014          ADD      r0,r8,#0x14
;;;2713     SDIO_DataInitStructure.SDIO_DataLength = 8;
;;;2714     SDIO_DataInitStructure.SDIO_DataBlockSize = SDIO_DataBlockSize_8b;
00006a  e9c01500          STRD     r1,r5,[r0,#0]
00006e  2130              MOVS     r1,#0x30
;;;2715     SDIO_DataInitStructure.SDIO_TransferDir = SDIO_TransferDir_ToSDIO;
000070  6081              STR      r1,[r0,#8]  ; SDIO_DataInitStructure
000072  2102              MOVS     r1,#2
;;;2716     SDIO_DataInitStructure.SDIO_TransferMode = SDIO_TransferMode_Block;
;;;2717     SDIO_DataInitStructure.SDIO_DPSM = SDIO_DPSM_Enable;
000074  e9c01a03          STRD     r1,r10,[r0,#0xc]
000078  2101              MOVS     r1,#1
;;;2718     SDIO_DataConfig(&SDIO_DataInitStructure);
00007a  6141              STR      r1,[r0,#0x14]  ; SDIO_DataInitStructure
00007c  f7fffffe          BL       SDIO_DataConfig
;;;2719   
;;;2720   
;;;2721     /* Send ACMD51 SD_APP_SEND_SCR with argument as 0 */
;;;2722     SDIO_CmdInitStructure.SDIO_Argument = 0x0;
;;;2723     SDIO_CmdInitStructure.SDIO_CmdIndex = SDIO_SD_APP_SEND_SCR;
000080  2033              MOVS     r0,#0x33
;;;2724     SDIO_CmdInitStructure.SDIO_Response = SDIO_Response_Short;
;;;2725     SDIO_CmdInitStructure.SDIO_Wait = SDIO_Wait_No;
000082  e9c8a000          STRD     r10,r0,[r8,#0]
;;;2726     SDIO_CmdInitStructure.SDIO_CPSM = SDIO_CPSM_Enable;
;;;2727     SDIO_SendCommand(&SDIO_CmdInitStructure);
000086  e9c8ab03          STRD     r10,r11,[r8,#0xc]
00008a  4640              MOV      r0,r8
00008c  f8c89008          STR      r9,[r8,#8]  ; SDIO_CmdInitStructure
000090  f7fffffe          BL       SDIO_SendCommand
;;;2728   
;;;2729     errorstatus = CmdResp1Error(SDIO_SD_APP_SEND_SCR);
000094  2033              MOVS     r0,#0x33
000096  f7fffffe          BL       CmdResp1Error
00009a  4605              MOV      r5,r0
;;;2730   
;;;2731     if (errorstatus != SD_OK)
00009c  282a              CMP      r0,#0x2a
00009e  d00c              BEQ      |L8.186|
                  |L8.160|
;;;2732     {
;;;2733       return(errorstatus);
0000a0  4628              MOV      r0,r5
                  |L8.162|
;;;2734  

⌨️ 快捷键说明

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