📄 sdi.txt
字号:
; generated by ARM C Compiler, ADS1.2 [Build 805]
; commandline [-errors .\err\sdi.err -O0 -asm -g+ -cpu ARM920T -fs "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
CODE32
AREA ||.text||, CODE, READONLY
Chk_CMDend PROC
;;;827 //0: Timeout
;;;828 {
|L1.0|
000000 e92d4070 STMFD sp!,{r4-r6,lr}
000004 e1a05000 MOV r5,r0
000008 e1a06001 MOV r6,r1
;;;829 int finish0;
;;;830
;;;831 if(!be_resp) // No response
00000c e3560000 CMP r6,#0
000010 1a00000c BNE |L1.72|
;;;832 {
;;;833 finish0=rSDICSTA;
000014 e3a0045a MOV r0,#0x5a000000
000018 e5904010 LDR r4,[r0,#0x10]
;;;834 while((finish0&0x800)!=0x800) // Check cmd end
00001c e1a00000 NOP
|L1.32|
000020 e3140e80 TST r4,#0x800
000024 1a000003 BNE |L1.56|
;;;835 finish0=rSDICSTA;
000028 e3a0045a MOV r0,#0x5a000000
00002c e5900010 LDR r0,[r0,#0x10]
000030 e1a04000 MOV r4,r0
000034 eafffff9 B |L1.32|
;;;836
;;;837 rSDICSTA=finish0;// Clear cmd end state
|L1.56|
000038 e3a0045a MOV r0,#0x5a000000
00003c e5804010 STR r4,[r0,#0x10]
;;;838
;;;839 return 1;
000040 e3a00001 MOV r0,#1
;;;840 }
;;;841 else // With response
;;;842 {
;;;843 finish0=rSDICSTA;
;;;844 while( !( ((finish0&0x200)==0x200) | ((finish0&0x400)==0x400) )) // Check cmd/rsp end
;;;845 // while( !( ((finish0&0x200)==0x200) | ((finish0&0x400)==0x800) )) // Check cmd/rsp end
;;;846 // while((finish0&0x1800)!=0x1800) //YH 0811 Check cmd end
;;;847 // Uart_Printf("CMD%d:rSDICSTA=0x%x\n", cmd, rSDICSTA); //YH 0811
;;;848
;;;849 finish0=rSDICSTA;
;;;850
;;;851
;;;852
;;;853 //YH 0624 if(cmd==1 | cmd==9 | cmd==41) // CRC no check
;;;854 if(cmd==1 | cmd==41) // CRC no check, CMD9 is a long Resp. command.
;;;855
;;;856 {
;;;857 if( (finish0&0xf00) != 0xa00 ) // Check error
;;;858 {
;;;859 rSDICSTA=finish0; // Clear error state
;;;860
;;;861 if(((finish0&0x400)==0x400))
;;;862 return 0; // Timeout error
;;;863 }
;;;864 rSDICSTA=finish0; // Clear cmd & rsp end state
;;;865 }
;;;866 else // CRC check
;;;867 {
;;;868 if( (finish0&0x1f00) != 0xa00 ) // Check error
;;;869 {
;;;870 Uart_Printf("CMD%d:rSDICSTA=0x%x, rSDIRSP0=0x%x\n",cmd, rSDICSTA, rSDIRSP0);
;;;871 rSDICSTA=finish0; // Clear error state
;;;872
;;;873 if(((finish0&0x400)==0x400))
;;;874 return 0; // Timeout error
;;;875 }
;;;876 rSDICSTA=finish0;
;;;877 }
;;;878 return 1;
;;;879 }
;;;880 }
|L1.68|
000044 e8bd8070 LDMFD sp!,{r4-r6,pc}
|L1.72|
000048 e3a0045a MOV r0,#0x5a000000 ;843
00004c e5904010 LDR r4,[r0,#0x10] ;843
000050 e1a00000 NOP ;844
|L1.84|
000054 e3a00001 MOV r0,#1 ;844
000058 e00004c4 AND r0,r0,r4,ASR #9 ;844
00005c e3a01001 MOV r1,#1 ;844
000060 e0011544 AND r1,r1,r4,ASR #10 ;844
000064 e1900001 ORRS r0,r0,r1 ;844
000068 1a000003 BNE |L1.124| ;844
00006c e3a0045a MOV r0,#0x5a000000 ;849
000070 e5900010 LDR r0,[r0,#0x10] ;849
000074 e1a04000 MOV r4,r0 ;849
000078 eafffff5 B |L1.84| ;849
|L1.124|
00007c e3550001 CMP r5,#1 ;854
000080 1a000001 BNE |L1.140| ;854
000084 e3a00001 MOV r0,#1 ;854
000088 ea000000 B |L1.144| ;854
|L1.140|
00008c e3a00000 MOV r0,#0 ;854
|L1.144|
000090 e3550029 CMP r5,#0x29 ;854
000094 1a000001 BNE |L1.160| ;854
000098 e3a01001 MOV r1,#1 ;854
00009c ea000000 B |L1.164| ;854
|L1.160|
0000a0 e3a01000 MOV r1,#0 ;854
|L1.164|
0000a4 e1900001 ORRS r0,r0,r1 ;854
0000a8 0a00000b BEQ |L1.220| ;854
0000ac e2040ef0 AND r0,r4,#0xf00 ;857
0000b0 e3500ea0 CMP r0,#0xa00 ;857
0000b4 0a000005 BEQ |L1.208| ;857
0000b8 e3a0045a MOV r0,#0x5a000000 ;859
0000bc e5804010 STR r4,[r0,#0x10] ;859
0000c0 e3140e40 TST r4,#0x400 ;861
0000c4 0a000001 BEQ |L1.208| ;861
0000c8 e3a00000 MOV r0,#0 ;862
0000cc eaffffdc B |L1.68| ;862
|L1.208|
0000d0 e3a0045a MOV r0,#0x5a000000 ;864
0000d4 e5804010 STR r4,[r0,#0x10] ;864
0000d8 ea000013 B |L1.300| ;864
|L1.220|
0000dc e2040d7c AND r0,r4,#0x1f00 ;868
0000e0 e3500ea0 CMP r0,#0xa00 ;868
0000e4 0a00000e BEQ |L1.292| ;868
0000e8 e3a0045a MOV r0,#0x5a000000 ;870
0000ec e5900014 LDR r0,[r0,#0x14] ;870
0000f0 e1a03000 MOV r3,r0 ;870
0000f4 e3a0045a MOV r0,#0x5a000000 ;870
0000f8 e5900010 LDR r0,[r0,#0x10] ;870
0000fc e1a02000 MOV r2,r0 ;870
000100 e1a01005 MOV r1,r5 ;870
000104 e28f0028 ADR r0,|L1.308| ;870
000108 ebfffffe BL Uart_Printf ;870
00010c e3a0045a MOV r0,#0x5a000000 ;871
000110 e5804010 STR r4,[r0,#0x10] ;871
000114 e3140e40 TST r4,#0x400 ;873
000118 0a000001 BEQ |L1.292| ;873
00011c e3a00000 MOV r0,#0 ;874
000120 eaffffc7 B |L1.68| ;874
|L1.292|
000124 e3a0045a MOV r0,#0x5a000000 ;876
000128 e5804010 STR r4,[r0,#0x10] ;876
|L1.300|
00012c e3a00001 MOV r0,#1 ;878
000130 eaffffc3 B |L1.68| ;878
|L1.308|
000134 25444d43 DCB "CMD%" ;878
000138 53723a64 DCB "d:rS" ;878
00013c 53434944 DCB "DICS" ;878
000140 303d4154 DCB "TA=0" ;878
000144 2c782578 DCB "x%x," ;878
000148 44537220 DCB " rSD" ;878
00014c 50535249 DCB "IRSP" ;878
000150 78303d30 DCB "0=0x" ;878
000154 000a7825 DCB "%x\n\0" ;878
ENDP
CMD9 PROC
;;;1021 int CMD9(void)//SEND_CSD
;;;1022 {
000158 e92d4008 STMFD sp!,{r3,lr}
;;;1023 rSDICARG=RCA<<16; // CMD9(RCA,stuff bit)
00015c e59f007c LDR r0,|L1.480|
000160 e5900000 LDR r0,[r0,#0] ; RCA
000164 e1a00800 MOV r0,r0,LSL #16
000168 e3a0145a MOV r1,#0x5a000000
00016c e5810008 STR r0,[r1,#8]
;;;1024 rSDICCON=(0x1<<10)|(0x1<<9)|(0x1<<8)|0x49; // long_resp, wait_resp, start, CMD9
000170 e59f006c LDR r0,|L1.484|
000174 e3a0145a MOV r1,#0x5a000000
000178 e581000c STR r0,[r1,#0xc]
;;;1025
;;;1026 Uart_Printf("\n****CSD register****\n");
00017c e28f0064 ADR r0,|L1.488|
000180 ebfffffe BL Uart_Printf
;;;1027 //-- Check end of CMD9
;;;1028 if(!Chk_CMDend(9, 1))
000184 e3a01001 MOV r1,#1
000188 e3a00009 MOV r0,#9
00018c ebfffffe BL Chk_CMDend
000190 e3500000 CMP r0,#0
000194 1a000001 BNE |L1.416|
;;;1029 return 0;
000198 e3a00000 MOV r0,#0
;;;1030
;;;1031 Uart_Printf(" SDIRSP0=0x%x\n SDIRSP1=0x%x\n SDIRSP2=0x%x\n SDIRSP3=0x%x\n", rSDIRSP0,rSDIRSP1,rSDIRSP2,rSDIRSP3);
;;;1032 return 1;
;;;1033 }
|L1.412|
00019c e8bd8008 LDMFD sp!,{r3,pc}
|L1.416|
0001a0 e3a0045a MOV r0,#0x5a000000 ;1031
0001a4 e5903020 LDR r3,[r0,#0x20] ;1031
0001a8 e3a0045a MOV r0,#0x5a000000 ;1031
0001ac e58d3000 STR r3,[sp,#0] ;1031
0001b0 e590001c LDR r0,[r0,#0x1c] ;1031
0001b4 e1a03000 MOV r3,r0 ;1031
0001b8 e3a0045a MOV r0,#0x5a000000 ;1031
0001bc e5900018 LDR r0,[r0,#0x18] ;1031
0001c0 e1a02000 MOV r2,r0 ;1031
0001c4 e3a0045a MOV r0,#0x5a000000 ;1031
0001c8 e5900014 LDR r0,[r0,#0x14] ;1031
0001cc e1a01000 MOV r1,r0 ;1031
0001d0 e28f0028 ADR r0,|L1.512| ;1031
0001d4 ebfffffe BL Uart_Printf ;1031
0001d8 e3a00001 MOV r0,#1 ;1032
0001dc eaffffee B |L1.412| ;1032
|L1.480|
0001e0 00000030 DCD ||.bss$2|| + 48 ;1032
|L1.484|
0001e4 00000749 DCD 0x00000749 ;1032
|L1.488|
0001e8 2a2a2a0a DCB "\n***" ;1032
0001ec 4453432a DCB "*CSD" ;1032
0001f0 67657220 DCB " reg" ;1032
0001f4 65747369 DCB "iste" ;1032
0001f8 2a2a2a72 DCB "r***" ;1032
0001fc 00000a2a DCB "*\n\0\0" ;1032
|L1.512|
000200 49445320 DCB " SDI" ;1032
000204 30505352 DCB "RSP0" ;1032
000208 2578303d DCB "=0x%" ;1032
00020c 53200a78 DCB "x\n S" ;1032
000210 53524944 DCB "DIRS" ;1032
000214 303d3150 DCB "P1=0" ;1032
000218 0a782578 DCB "x%x\n" ;1032
00021c 49445320 DCB " SDI" ;1032
000220 32505352 DCB "RSP2" ;1032
000224 2578303d DCB "=0x%" ;1032
000228 53200a78 DCB "x\n S" ;1032
00022c 53524944 DCB "DIRS" ;1032
000230 303d3350 DCB "P3=0" ;1032
000234 0a782578 DCB "x%x\n" ;1032
000238 00000000 DCB "\0\0\0\0" ;1032
ENDP
Card_sel_desel PROC
;;;281 void Card_sel_desel(char sel_desel)
;;;282 {
00023c e92d4010 STMFD sp!,{r4,lr}
000240 e1a04000 MOV r4,r0
;;;283 //-- Card select or deselect
;;;284 if(sel_desel)
000244 e3540000 CMP r4,#0
000248 0a000016 BEQ |L1.680|
;;;285 {
;;;286 RECMDS7:
00024c e1a00000 NOP
;;;287 rSDICARG=RCA<<16; // CMD7(RCA,stuff bit)
|L1.592|
000250 e51f0078 LDR r0,|L1.480|
000254 e5900000 LDR r0,[r0,#0] ; RCA
000258 e1a00800 MOV r0,r0,LSL #16
00025c e3a0145a MOV r1,#0x5a000000
000260 e5810008 STR r0,[r1,#8]
;;;288 rSDICCON= (0x1<<9)|(0x1<<8)|0x47; // sht_resp, wait_resp, start, CMD7
000264 e59f0134 LDR r0,|L1.928|
000268 e3a0145a MOV r1,#0x5a000000
00026c e581000c STR r0,[r1,#0xc]
;;;289
;;;290 //-- Check end of CMD7
;;;291 if(!Chk_CMDend(7, 1))
000270 e3a01001 MOV r1,#1
000274 e3a00007 MOV r0,#7
000278 ebfffffe BL Chk_CMDend
00027c e3500000 CMP r0,#0
000280 1a000000 BNE |L1.648|
;;;292 goto RECMDS7;
000284 eafffff1 B |L1.592|
;;;293 rSDICSTA=0xa00; // Clear cmd_end(with rsp)
|L1.648|
000288 e3a00ea0 MOV r0,#0xa00
00028c e3a0145a MOV r1,#0x5a000000
000290 e5810010 STR r0,[r1,#0x10]
;;;294
;;;295 //--State(transfer) check
;;;296 if( rSDIRSP0 & 0x1e00!=0x800 )
000294 e3a0045a MOV r0,#0x5a000000
000298 e5900014 LDR r0,[r0,#0x14]
00029c e3100001 TST r0,#1
0002a0 0a000010 BEQ |L1.744|
;;;297 goto RECMDS7;
0002a4 eaffffe9 B |L1.592|
;;;298 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -