📄 sdcard.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\sdcard.o --depend=.\Obj\sdcard.d --device=DARMSTM --apcs=interwork -O3 -I..\..\include -I..\..\..\FWLib\library\inc -I..\..\..\USBLib\library\inc -I..\..\Config -I..\..\GUI\Core -I..\..\GUI\Font -I..\..\GUI\ConvertColor -I..\..\GUI\AntiAlias -I..\..\GUI\ConvertMono -I..\..\GUI\JPEG -I..\..\GUI\MemDev -I..\..\GUI\MultiLayer -I..\..\GUI\Widget -I..\..\GUI\WM -IC:\Keil\ARM\INC\ST\STM32F10x ..\..\source\sdcard.c]
THUMB
AREA ||i.CmdResp1Error||, CODE, READONLY, ALIGN=2
CmdResp1Error PROC
;;;2105 *******************************************************************************/
;;;2106 static SD_Error CmdResp1Error(u8 cmd)
000000 b570 PUSH {r4-r6,lr}
;;;2107 {
;;;2108 SD_Error errorstatus = SD_OK;
;;;2109 u32 status;
;;;2110 u32 response_r1;
;;;2111
;;;2112 status = SDIO->STA;
000002 4937 LDR r1,|L1.224|
000004 4605 MOV r5,r0 ;2107
000006 242a MOVS r4,#0x2a ;2108
|L1.8|
;;;2113
;;;2114 while (!(status & (SDIO_FLAG_CCRCFAIL | SDIO_FLAG_CMDREND | SDIO_FLAG_CTIMEOUT)))
;;;2115 {
;;;2116 status = SDIO->STA;
000008 6b48 LDR r0,[r1,#0x34]
00000a f0100f45 TST r0,#0x45 ;2114
00000e d0fb BEQ |L1.8|
;;;2117 }
;;;2118
;;;2119 if (status & SDIO_FLAG_CTIMEOUT)
000010 0741 LSLS r1,r0,#29
000012 d502 BPL |L1.26|
;;;2120 {
;;;2121 errorstatus = SD_CMD_RSP_TIMEOUT;
000014 2403 MOVS r4,#3
;;;2122 SDIO_ClearFlag(SDIO_FLAG_CTIMEOUT);
000016 2004 MOVS r0,#4
;;;2123 return(errorstatus);
000018 e003 B |L1.34|
|L1.26|
;;;2124 }
;;;2125 else if (status & SDIO_FLAG_CCRCFAIL)
00001a 07c0 LSLS r0,r0,#31
00001c d004 BEQ |L1.40|
;;;2126 {
;;;2127 errorstatus = SD_CMD_CRC_FAIL;
00001e 2401 MOVS r4,#1
;;;2128 SDIO_ClearFlag(SDIO_FLAG_CCRCFAIL);
000020 4620 MOV r0,r4
|L1.34|
000022 f7fffffe BL SDIO_ClearFlag
000026 e059 B |L1.220|
|L1.40|
;;;2129 return(errorstatus);
;;;2130 }
;;;2131
;;;2132 /* Check response received is of desired command */
;;;2133 if (SDIO_GetCommandResponse() != cmd)
000028 f7fffffe BL SDIO_GetCommandResponse
00002c 42a8 CMP r0,r5
00002e d12b BNE |L1.136|
;;;2134 {
;;;2135 errorstatus = SD_ILLEGAL_CMD;
;;;2136 return(errorstatus);
;;;2137 }
;;;2138
;;;2139 /* Clear all the static flags */
;;;2140 SDIO_ClearFlag(SDIO_STATIC_FLAGS);
000030 f24050ff MOV r0,#0x5ff
000034 f7fffffe BL SDIO_ClearFlag
;;;2141
;;;2142 /* We have received response, retrieve it for analysis */
;;;2143 response_r1 = SDIO_GetResponse(SDIO_RESP1);
000038 2000 MOVS r0,#0
00003a f7fffffe BL SDIO_GetResponse
;;;2144
;;;2145 if ((response_r1 & SD_OCR_ERRORBITS) == SD_ALLZERO)
00003e 4929 LDR r1,|L1.228|
000040 4208 TST r0,r1
000042 d04b BEQ |L1.220|
;;;2146 {
;;;2147 return(errorstatus);
;;;2148 }
;;;2149
;;;2150 if (response_r1 & SD_OCR_ADDR_OUT_OF_RANGE)
000044 2800 CMP r0,#0
000046 da01 BGE |L1.76|
;;;2151 {
;;;2152 return(SD_ADDR_OUT_OF_RANGE);
000048 201c MOVS r0,#0x1c
;;;2153 }
;;;2154
;;;2155 if (response_r1 & SD_OCR_ADDR_MISALIGNED)
;;;2156 {
;;;2157 return(SD_ADDR_MISALIGNED);
;;;2158 }
;;;2159
;;;2160 if (response_r1 & SD_OCR_BLOCK_LEN_ERR)
;;;2161 {
;;;2162 return(SD_BLOCK_LEN_ERR);
;;;2163 }
;;;2164
;;;2165 if (response_r1 & SD_OCR_ERASE_SEQ_ERR)
;;;2166 {
;;;2167 return(SD_ERASE_SEQ_ERR);
;;;2168 }
;;;2169
;;;2170 if (response_r1 & SD_OCR_BAD_ERASE_PARAM)
;;;2171 {
;;;2172 return(SD_BAD_ERASE_PARAM);
;;;2173 }
;;;2174
;;;2175 if (response_r1 & SD_OCR_WRITE_PROT_VIOLATION)
;;;2176 {
;;;2177 return(SD_WRITE_PROT_VIOLATION);
;;;2178 }
;;;2179
;;;2180 if (response_r1 & SD_OCR_LOCK_UNLOCK_FAILED)
;;;2181 {
;;;2182 return(SD_LOCK_UNLOCK_FAILED);
;;;2183 }
;;;2184
;;;2185 if (response_r1 & SD_OCR_COM_CRC_FAILED)
;;;2186 {
;;;2187 return(SD_COM_CRC_FAILED);
;;;2188 }
;;;2189
;;;2190 if (response_r1 & SD_OCR_ILLEGAL_CMD)
;;;2191 {
;;;2192 return(SD_ILLEGAL_CMD);
;;;2193 }
;;;2194
;;;2195 if (response_r1 & SD_OCR_CARD_ECC_FAILED)
;;;2196 {
;;;2197 return(SD_CARD_ECC_FAILED);
;;;2198 }
;;;2199
;;;2200 if (response_r1 & SD_OCR_CC_ERROR)
;;;2201 {
;;;2202 return(SD_CC_ERROR);
;;;2203 }
;;;2204
;;;2205 if (response_r1 & SD_OCR_GENERAL_UNKNOWN_ERROR)
;;;2206 {
;;;2207 return(SD_GENERAL_UNKNOWN_ERROR);
;;;2208 }
;;;2209
;;;2210 if (response_r1 & SD_OCR_STREAM_READ_UNDERRUN)
;;;2211 {
;;;2212 return(SD_STREAM_READ_UNDERRUN);
;;;2213 }
;;;2214
;;;2215 if (response_r1 & SD_OCR_STREAM_WRITE_OVERRUN)
;;;2216 {
;;;2217 return(SD_STREAM_WRITE_OVERRUN);
;;;2218 }
;;;2219
;;;2220 if (response_r1 & SD_OCR_CID_CSD_OVERWRIETE)
;;;2221 {
;;;2222 return(SD_CID_CSD_OVERWRITE);
;;;2223 }
;;;2224
;;;2225 if (response_r1 & SD_OCR_WP_ERASE_SKIP)
;;;2226 {
;;;2227 return(SD_WP_ERASE_SKIP);
;;;2228 }
;;;2229
;;;2230 if (response_r1 & SD_OCR_CARD_ECC_DISABLED)
;;;2231 {
;;;2232 return(SD_CARD_ECC_DISABLED);
;;;2233 }
;;;2234
;;;2235 if (response_r1 & SD_OCR_ERASE_RESET)
;;;2236 {
;;;2237 return(SD_ERASE_RESET);
;;;2238 }
;;;2239
;;;2240 if (response_r1 & SD_OCR_AKE_SEQ_ERROR)
;;;2241 {
;;;2242 return(SD_AKE_SEQ_ERROR);
;;;2243 }
;;;2244 return(errorstatus);
;;;2245 }
00004a bd70 POP {r4-r6,pc}
|L1.76|
00004c 0041 LSLS r1,r0,#1 ;2155
00004e d501 BPL |L1.84|
000050 2009 MOVS r0,#9 ;2157
000052 bd70 POP {r4-r6,pc}
|L1.84|
000054 0081 LSLS r1,r0,#2
000056 d501 BPL |L1.92|
000058 200a MOVS r0,#0xa ;2162
00005a bd70 POP {r4-r6,pc}
|L1.92|
00005c 00c1 LSLS r1,r0,#3
00005e d501 BPL |L1.100|
000060 200b MOVS r0,#0xb ;2167
000062 bd70 POP {r4-r6,pc}
|L1.100|
000064 0101 LSLS r1,r0,#4
000066 d501 BPL |L1.108|
000068 200c MOVS r0,#0xc ;2172
00006a bd70 POP {r4-r6,pc}
|L1.108|
00006c 0141 LSLS r1,r0,#5 ;2175
00006e d501 BPL |L1.116|
000070 200d MOVS r0,#0xd ;2177
000072 bd70 POP {r4-r6,pc}
|L1.116|
000074 01c1 LSLS r1,r0,#7 ;2180
000076 d501 BPL |L1.124|
000078 200e MOVS r0,#0xe ;2182
00007a bd70 POP {r4-r6,pc}
|L1.124|
00007c 0201 LSLS r1,r0,#8 ;2185
00007e d501 BPL |L1.132|
000080 200f MOVS r0,#0xf ;2187
000082 bd70 POP {r4-r6,pc}
|L1.132|
000084 0241 LSLS r1,r0,#9 ;2190
000086 d501 BPL |L1.140|
|L1.136|
000088 2010 MOVS r0,#0x10 ;2192
00008a bd70 POP {r4-r6,pc}
|L1.140|
00008c 0281 LSLS r1,r0,#10 ;2195
00008e d501 BPL |L1.148|
000090 2011 MOVS r0,#0x11 ;2197
000092 bd70 POP {r4-r6,pc}
|L1.148|
000094 02c1 LSLS r1,r0,#11 ;2200
000096 d501 BPL |L1.156|
000098 2012 MOVS r0,#0x12 ;2202
00009a bd70 POP {r4-r6,pc}
|L1.156|
00009c 0301 LSLS r1,r0,#12 ;2205
00009e d501 BPL |L1.164|
0000a0 2013 MOVS r0,#0x13 ;2207
0000a2 bd70 POP {r4-r6,pc}
|L1.164|
0000a4 0341 LSLS r1,r0,#13 ;2210
0000a6 d501 BPL |L1.172|
0000a8 2014 MOVS r0,#0x14 ;2212
0000aa bd70 POP {r4-r6,pc}
|L1.172|
0000ac 0381 LSLS r1,r0,#14 ;2215
0000ae d501 BPL |L1.180|
0000b0 2015 MOVS r0,#0x15 ;2217
0000b2 bd70 POP {r4-r6,pc}
|L1.180|
0000b4 03c1 LSLS r1,r0,#15 ;2220
0000b6 d501 BPL |L1.188|
0000b8 2016 MOVS r0,#0x16 ;2222
0000ba bd70 POP {r4-r6,pc}
|L1.188|
0000bc 0401 LSLS r1,r0,#16 ;2225
0000be d501 BPL |L1.196|
0000c0 2017 MOVS r0,#0x17 ;2227
0000c2 bd70 POP {r4-r6,pc}
|L1.196|
0000c4 0441 LSLS r1,r0,#17 ;2230
0000c6 d501 BPL |L1.204|
0000c8 2018 MOVS r0,#0x18 ;2232
0000ca bd70 POP {r4-r6,pc}
|L1.204|
0000cc 0481 LSLS r1,r0,#18 ;2235
0000ce d501 BPL |L1.212|
0000d0 2019 MOVS r0,#0x19 ;2237
0000d2 bd70 POP {r4-r6,pc}
|L1.212|
0000d4 0700 LSLS r0,r0,#28 ;2240
0000d6 d501 BPL |L1.220|
0000d8 201a MOVS r0,#0x1a ;2242
0000da bd70 POP {r4-r6,pc}
|L1.220|
0000dc 4620 MOV r0,r4 ;2244
0000de bd70 POP {r4-r6,pc}
;;;2246
ENDP
|L1.224|
DCD 0x40018000
|L1.228|
DCD 0xfdffe008
AREA ||i.CmdResp2Error||, CODE, READONLY, ALIGN=2
CmdResp2Error PROC
;;;2285 *******************************************************************************/
;;;2286 static SD_Error CmdResp2Error(void)
000000 b510 PUSH {r4,lr}
;;;2287 {
;;;2288 SD_Error errorstatus = SD_OK;
;;;2289 u32 status;
;;;2290
;;;2291 status = SDIO->STA;
000002 490b LDR r1,|L2.48|
000004 242a MOVS r4,#0x2a ;2288
|L2.6|
;;;2292
;;;2293 while (!(status & (SDIO_FLAG_CCRCFAIL | SDIO_FLAG_CTIMEOUT | SDIO_FLAG_CMDREND)))
;;;2294 {
;;;2295 status = SDIO->STA;
000006 6b48 LDR r0,[r1,#0x34]
000008 f0100f45 TST r0,#0x45 ;2293
00000c d0fb BEQ |L2.6|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -