📄 sd.lst
字号:
0000000A B083 SUB R13,#0xC
250: {
0000000C ; SCOPE-START
254: euint16 fb_timeout=0xffff;
0000000C 4800 LDRH R1,=0xFFFF
0000000E A802 ADD R0,R13,#0x8
00000010 8001 STRH R1,[R0,#0x0] ; fb_timeout
259: place=512*address;
00000012 1C11 MOV R1,R2 ; address
00000014 0249 LSL R1,R1,#0x9 ; address
00000016 ---- Variable 'place' assigned to Register 'R1' ----
260: sd_Command(iface,CMDREAD, (euint16) (place >> 16), (euint16) place);
00000016 1C08 MOV R0,R1 ; place
00000018 0C00 LSR R0,R0,#0x10 ; place
0000001A 0400 LSL R0,R0,#0x10
0000001C 0C00 LSR R0,R0,#0x10
0000001E 0402 LSL R2,R0,#0x10
00000020 0C12 LSR R2,R2,#0x10
00000022 1C08 MOV R0,R1 ; place
00000024 0400 LSL R0,R0,#0x10 ; place
00000026 0C00 LSR R0,R0,#0x10
00000028 0403 LSL R3,R0,#0x10
0000002A 0C1B LSR R3,R3,#0x10
0000002C 1C20 MOV R0,R4 ; iface
0000002E 2111 MOV R1,#0x11
00000030 F7FF BL sd_Command?T ; T=0x0001 (1)
00000032 FFE6 BL sd_Command?T ; T=0x0001 (2)
262: cardresp=sd_Resp8b(iface); /* Card response */
00000034 1C20 MOV R0,R4 ; iface
00000036 F7FF BL sd_Resp8b?T ; T=0x0001 (1)
00000038 FFE3 BL sd_Resp8b?T ; T=0x0001 (2)
0000003A A900 ADD R1,R13,#0x0
0000003C 7008 STRB R0,[R1,#0x0] ; cardresp
265: do
0000003E L_58:
266: firstblock=sd_Resp8b(iface);
0000003E 1C20 MOV R0,R4 ; iface
00000040 F7FF BL sd_Resp8b?T ; T=0x0001 (1)
00000042 FFDE BL sd_Resp8b?T ; T=0x0001 (2)
00000044 1C05 MOV R5,R0 ; firstblock
00000046 ---- Variable 'firstblock' assigned to Register 'R5' ----
00000046 1C28 MOV R0,R5 ; firstblock
00000048 0600 LSL R0,R0,#0x18 ; firstblock
0000004A 0E00 LSR R0,R0,#0x18
0000004C 28FF CMP R0,#0xFF
0000004E D106 BNE L_61 ; T=0x0000005E
00000050 A902 ADD R1,R13,#0x8
00000052 8808 LDRH R0,[R1,#0x0] ; fb_timeout
00000054 1C02 MOV R2,R0
00000056 3A01 SUB R2,#0x1
00000058 800A STRH R2,[R1,#0x0] ; fb_timeout
0000005A 2800 CMP R0,#0x0
0000005C D1EF BNE L_58 ; T=0x0000003E
0000005E L_61:
269: if(cardresp!=0x00 || firstblock!=0xfe){
0000005E A800 ADD R0,R13,#0x0
00000060 7800 LDRB R0,[R0,#0x0] ; cardresp
ARM COMPILER V2.42, sd 27/03/06 10:45:52 PAGE 19
00000062 2800 CMP R0,#0x0
00000064 D104 BNE L_64 ; T=0x00000070
00000066 1C28 MOV R0,R5 ; firstblock
00000068 0600 LSL R0,R0,#0x18 ; firstblock
0000006A 0E00 LSR R0,R0,#0x18
0000006C 28FE CMP R0,#0xFE
0000006E D007 BEQ L_70 ; T=0x00000080
00000070 L_64:
270: sd_Resp8bError(iface,firstblock);
00000070 1C28 MOV R0,R5 ; firstblock
00000072 0601 LSL R1,R0,#0x18 ; firstblock
00000074 0E09 LSR R1,R1,#0x18
00000076 1C20 MOV R0,R4 ; iface
00000078 F7FF BL sd_Resp8bError?T ; T=0x0001 (1)
0000007A FFC2 BL sd_Resp8bError?T ; T=0x0001 (2)
271: return(-1);
0000007C 4800 LDR R0,=0xFFFFFFFF
0000007E E01E B L_65 ; T=0x000000BE
274: for(i=0;i<512;i++){
00000080 L_70:
00000080 2500 MOV R5,#0x0
00000082 ---- Variable 'i' assigned to Register 'R5' ----
00000082 L_69:
275: c = if_spiSend(iface,0xff);
00000082 1C20 MOV R0,R4 ; iface
00000084 21FF MOV R1,#0xFF
00000086 F7FF BL if_spiSend?T ; T=0x0001 (1)
00000088 FFBB BL if_spiSend?T ; T=0x0001 (2)
0000008A A901 ADD R1,R13,#0x4
0000008C 7008 STRB R0,[R1,#0x0] ; c
276: if(i<len)
0000008E 1C38 MOV R0,R7 ; len
00000090 0402 LSL R2,R0,#0x10 ; len
00000092 0C12 LSR R2,R2,#0x10
00000094 1C28 MOV R0,R5 ; i
00000096 4290 CMP R0,R2 ; i
00000098 D203 BCS L_66 ; T=0x000000A2
277: buf[i] = c;
0000009A 7808 LDRB R0,[R1,#0x0] ; c
0000009C 1C2B MOV R3,R5 ; i
0000009E 1C31 MOV R1,R6 ; buf
000000A0 54C8 STRB R0,[R1,R3]
278: }
000000A2 L_66:
000000A2 3501 ADD R5,#0x1
000000A4 1C28 MOV R0,R5 ; i
000000A6 4980 LDR R1,=0x200
000000A8 4288 CMP R0,R1 ; i
000000AA D3EA BCC L_69 ; T=0x00000082
281: if_spiSend(iface,0xff);
000000AC 1C20 MOV R0,R4 ; iface
000000AE 21FF MOV R1,#0xFF
000000B0 F7FF BL if_spiSend?T ; T=0x0001 (1)
000000B2 FFA6 BL if_spiSend?T ; T=0x0001 (2)
282: if_spiSend(iface,0xff);
000000B4 1C20 MOV R0,R4 ; iface
000000B6 21FF MOV R1,#0xFF
000000B8 F7FF BL if_spiSend?T ; T=0x0001 (1)
000000BA FFA2 BL if_spiSend?T ; T=0x0001 (2)
284: return(0);
000000BC 2000 MOV R0,#0x0
000000BE ; SCOPE-END
285: }
000000BE L_65:
000000BE B003 ADD R13,#0xC
000000C0 BCF0 POP {R4-R7}
ARM COMPILER V2.42, sd 27/03/06 10:45:52 PAGE 20
000000C2 BC08 POP {R3}
000000C4 4718 BX R3
000000C6 ENDP ; 'sd_readSector?T'
*** CODE SEGMENT '?PR?sd_getDriveSize?T?sd':
292: esint8 sd_getDriveSize(hwInterface *iface, euint32* drive_size )
00000000 B570 PUSH {R4-R6,LR}
00000002 1C0C MOV R4,R1 ; drive_size
00000004 ---- Variable 'drive_size' assigned to Register 'R4' ----
00000004 1C05 MOV R5,R0 ; iface
00000006 ---- Variable 'iface' assigned to Register 'R5' ----
00000006 B084 SUB R13,#0x10
293: {
00000008 ; SCOPE-START
298: sd_Command(iface, CMDREADCSD, 0, 0);
00000008 1C28 MOV R0,R5 ; iface
0000000A 2109 MOV R1,#0x9
0000000C 2300 MOV R3,#0x0
0000000E 1C1A MOV R2,R3
00000010 F7FF BL sd_Command?T ; T=0x0001 (1)
00000012 FFF6 BL sd_Command?T ; T=0x0001 (2)
300: do {
00000014 L_72:
301: cardresp = sd_Resp8b(iface);
00000014 1C28 MOV R0,R5 ; iface
00000016 F7FF BL sd_Resp8b?T ; T=0x0001 (1)
00000018 FFF3 BL sd_Resp8b?T ; T=0x0001 (2)
0000001A 1C06 MOV R6,R0 ; cardresp
0000001C ---- Variable 'cardresp' assigned to Register 'R6' ----
302: } while ( cardresp != 0xFE );
0000001C 1C30 MOV R0,R6 ; cardresp
0000001E 0600 LSL R0,R0,#0x18 ; cardresp
00000020 0E00 LSR R0,R0,#0x18
00000022 28FE CMP R0,#0xFE
00000024 D1F6 BNE L_72 ; T=0x00000014
304: DBG((TXT("CSD:")));
00000026 4800 LDR R0,=??S_18 ; ??S_18
00000028 F7FF BL lpc2000_debug_printf?T ; T=0x0001 (1)
0000002A FFEA BL lpc2000_debug_printf?T ; T=0x0001 (2)
305: for( i=0; i<16; i++) {
0000002C 2600 MOV R6,#0x0
0000002E ---- Variable 'i' assigned to Register 'R6' ----
0000002E E012 B L_78 ; T=0x00000056
00000030 L_79:
306: iob[i] = sd_Resp8b(iface);
00000030 1C28 MOV R0,R5 ; iface
00000032 F7FF BL sd_Resp8b?T ; T=0x0001 (1)
00000034 FFE5 BL sd_Resp8b?T ; T=0x0001 (2)
00000036 1C31 MOV R1,R6 ; i
00000038 060A LSL R2,R1,#0x18 ; i
0000003A 0E12 LSR R2,R2,#0x18
0000003C A900 ADD R1,R13,#0x0
0000003E 5488 STRB R0,[R1,R2]
307: DBG((TXT(" %02x"), iob[i]));
00000040 1C30 MOV R0,R6 ; i
00000042 0600 LSL R0,R0,#0x18 ; i
00000044 0E00 LSR R0,R0,#0x18
00000046 5C08 LDRB R0,[R1,R0]
00000048 1C01 MOV R1,R0
0000004A 4800 LDR R0,=??S_19 ; ??S_19
0000004C F7FF BL lpc2000_debug_printf?T ; T=0x0001 (1)
0000004E FFD8 BL lpc2000_debug_printf?T ; T=0x0001 (2)
308: }
00000050 3601 ADD R6,#0x1
00000052 0636 LSL R6,R6,#0x18
00000054 0E36 LSR R6,R6,#0x18
00000056 L_78:
ARM COMPILER V2.42, sd 27/03/06 10:45:52 PAGE 21
00000056 1C30 MOV R0,R6 ; i
00000058 0600 LSL R0,R0,#0x18 ; i
0000005A 0E00 LSR R0,R0,#0x18
0000005C 2810 CMP R0,#0x10
0000005E DBE7 BLT L_79 ; T=0x00000030
309: DBG((TXT("\n")));
00000060 4800 LDR R0,=??S_20 ; ??S_20
00000062 F7FF BL lpc2000_debug_printf?T ; T=0x0001 (1)
00000064 FFCD BL lpc2000_debug_printf?T ; T=0x0001 (2)
311: if_spiSend(iface,0xff);
00000066 1C28 MOV R0,R5 ; iface
00000068 21FF MOV R1,#0xFF
0000006A F7FF BL if_spiSend?T ; T=0x0001 (1)
0000006C FFC9 BL if_spiSend?T ; T=0x0001 (2)
312: if_spiSend(iface,0xff);
0000006E 1C28 MOV R0,R5 ; iface
00000070 21FF MOV R1,#0xFF
00000072 F7FF BL if_spiSend?T ; T=0x0001 (1)
00000074 FFC5 BL if_spiSend?T ; T=0x0001 (2)
314: c_size = iob[6] & 0x03; // bits 1..0
00000076 2006 MOV R0,#0x6
00000078 4468 ADD R0,R13
0000007A 7800 LDRB R0,[R0,#0x0] ; iob+6
0000007C 1C02 MOV R2,R0
0000007E 2003 MOV R0,#0x3
00000080 4002 AND R2,R0
00000082 0412 LSL R2,R2,#0x10
00000084 0C12 LSR R2,R2,#0x10
00000086 ---- Variable 'c_size' assigned to Register 'R2' ----
315: c_size <<= 10;
00000086 0292 LSL R2,R2,#0xA ; c_size
00000088 0412 LSL R2,R2,#0x10
0000008A 0C12 LSR R2,R2,#0x10
316: c_size += (euint16)iob[7]<<2;
0000008C 2107 MOV R1,#0x7
0000008E 4469 ADD R1,R13
00000090 7809 LDRB R1,[R1,#0x0] ; iob+7
00000092 0409 LSL R1,R1,#0x10
00000094 0C09 LSR R1,R1,#0x10
00000096 0089 LSL R1,R1,#0x2
00000098 0409 LSL R1,R1,#0x10
0000009A 0C09 LSR R1,R1,#0x10
0000009C 1852 ADD R2,R1 ; c_size
0000009E 0412 LSL R2,R2,#0x10
000000A0 0C12 LSR R2,R2,#0x10
317: c_size += iob[8]>>6;
000000A2 A902 ADD R1,R13,#0x8
000000A4 7809 LDRB R1,[R1,#0x0] ; iob+8
000000A6 0989 LSR R1,R1,#0x6
000000A8 0409 LSL R1,R1,#0x10
000000AA 0C09 LSR R1,R1,#0x10
000000AC 1852 ADD R2,R1 ; c_size
000000AE 0412 LSL R2,R2,#0x10
000000B0 0C12 LSR R2,R2,#0x10
319: by= iob[5] & 0x0F;
000000B2 2105 MOV R1,#0x5
000000B4 4469 ADD R1,R13
000000B6 7809 LDRB R1,[R1,#0x0] ; iob+5
000000B8 1C0D MOV R5,R1
000000BA 210F MOV R1,#0xF
000000BC 400D AND R5,R1
000000BE 062D LSL R5,R5,#0x18
000000C0 0E2D LSR R5,R5,#0x18
000000C2 ---- Variable 'by' assigned to Register 'R5' ----
320: read_bl_len = 1;
000000C2 2301 MOV R3,#0x1
ARM COMPILER V2.42, sd 27/03/06 10:45:52 PAGE 22
000000C4 1C19 MOV R1,R3 ; read_bl_len
000000C6 ---- Variable 'read_bl_len' assigned to Register 'R1' ----
321: read_bl_len <<= by;
000000C6 062D LSL R5,R5,#0x18 ; by
000000C8 0E2D LSR R5,R5,#0x18
000000CA 40A9 LSL R1,R5
000000CC 0409 LSL R1,R1,#0x10
000000CE 0C09 LSR R1,R1,#0x10
323: by=iob[9] & 0x03;
000000D0 2509 MOV R5,#0x9
000000D2 446D ADD R5,R13
000000D4 782D LDRB R5,[R5,#0x0] ; iob+9
000000D6 4005 AND R5,R0
000000D8 062D LSL
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -