📄 sdi.txt
字号:
; generated by ARM C Compiler, ADS1.2 [Build 842]
; commandline [-errors .\err\sdi.err -O0 -asm -g+ -cpu 5TEJ -fs -Wd -Ec -I.\include "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
CODE32
AREA ||.text||, CODE, READONLY
Chk_CMDend PROC
;;;793 //0: Timeout
;;;794 {
|L1.0|
000000 e92d4070 STMFD sp!,{r4-r6,lr}
000004 e1a05000 MOV r5,r0
000008 e1a06001 MOV r6,r1
;;;795 int finish0;
;;;796
;;;797 if(!be_resp) // No response
00000c e3560000 CMP r6,#0
000010 1a00000c BNE |L1.72|
;;;798 {
;;;799 finish0=rSDICSTA;
000014 e3a00446 MOV r0,#0x46000000
000018 e5904010 LDR r4,[r0,#0x10]
;;;800 while((finish0&0x800)!=0x800) // Check cmd end
00001c e1a00000 NOP
|L1.32|
000020 e3140e80 TST r4,#0x800
000024 1a000003 BNE |L1.56|
;;;801 finish0=rSDICSTA;
000028 e3a00446 MOV r0,#0x46000000
00002c e5900010 LDR r0,[r0,#0x10]
000030 e1a04000 MOV r4,r0
000034 eafffff9 B |L1.32|
;;;802
;;;803 rSDICSTA=finish0;// Clear cmd end state
|L1.56|
000038 e3a00446 MOV r0,#0x46000000
00003c e5804010 STR r4,[r0,#0x10]
;;;804
;;;805 return 1;
000040 e3a00001 MOV r0,#1
;;;806 }
;;;807 else // With response
;;;808 {
;;;809 finish0=rSDICSTA;
;;;810 while( !( ((finish0&0x200)==0x200) | ((finish0&0x400)==0x400) )) // Check cmd/rsp end
;;;811 // while( !( ((finish0&0x200)==0x200) | ((finish0&0x400)==0x800) )) // Check cmd/rsp end
;;;812 // while((finish0&0x1800)!=0x1800) //YH 0811 Check cmd end
;;;813 // Uart_Printf("CMD%d:rSDICSTA=0x%x\n", cmd, rSDICSTA); //YH 0811
;;;814
;;;815 finish0=rSDICSTA;
;;;816
;;;817
;;;818
;;;819 //YH 0624 if(cmd==1 | cmd==9 | cmd==41) // CRC no check
;;;820 if(cmd==1 | cmd==41) // CRC no check, CMD9 is a long Resp. command.
;;;821
;;;822 {
;;;823 if( (finish0&0xf00) != 0xa00 ) // Check error
;;;824 {
;;;825 rSDICSTA=finish0; // Clear error state
;;;826
;;;827 if(((finish0&0x400)==0x400))
;;;828 return 0; // Timeout error
;;;829 }
;;;830 rSDICSTA=finish0; // Clear cmd & rsp end state
;;;831 }
;;;832 else // CRC check
;;;833 {
;;;834 if( (finish0&0x1f00) != 0xa00 ) // Check error
;;;835 {
;;;836 Uart_Printf("CMD%d:rSDICSTA=0x%x, rSDIRSP0=0x%x\n",cmd, rSDICSTA, rSDIRSP0);
;;;837 rSDICSTA=finish0; // Clear error state
;;;838
;;;839 if(((finish0&0x400)==0x400))
;;;840 return 0; // Timeout error
;;;841 }
;;;842 rSDICSTA=finish0;
;;;843 }
;;;844 return 1;
;;;845 }
;;;846 }
|L1.68|
000044 e8bd8070 LDMFD sp!,{r4-r6,pc}
|L1.72|
000048 e3a00446 MOV r0,#0x46000000 ;809
00004c e5904010 LDR r4,[r0,#0x10] ;809
000050 e1a00000 NOP ;810
|L1.84|
000054 e3a00001 MOV r0,#1 ;810
000058 e00004c4 AND r0,r0,r4,ASR #9 ;810
00005c e3a01001 MOV r1,#1 ;810
000060 e0011544 AND r1,r1,r4,ASR #10 ;810
000064 e1900001 ORRS r0,r0,r1 ;810
000068 1a000003 BNE |L1.124| ;810
00006c e3a00446 MOV r0,#0x46000000 ;815
000070 e5900010 LDR r0,[r0,#0x10] ;815
000074 e1a04000 MOV r4,r0 ;815
000078 eafffff5 B |L1.84| ;815
|L1.124|
00007c e3550001 CMP r5,#1 ;820
000080 1a000001 BNE |L1.140| ;820
000084 e3a00001 MOV r0,#1 ;820
000088 ea000000 B |L1.144| ;820
|L1.140|
00008c e3a00000 MOV r0,#0 ;820
|L1.144|
000090 e3550029 CMP r5,#0x29 ;820
000094 1a000001 BNE |L1.160| ;820
000098 e3a01001 MOV r1,#1 ;820
00009c ea000000 B |L1.164| ;820
|L1.160|
0000a0 e3a01000 MOV r1,#0 ;820
|L1.164|
0000a4 e1900001 ORRS r0,r0,r1 ;820
0000a8 0a00000b BEQ |L1.220| ;820
0000ac e2040ef0 AND r0,r4,#0xf00 ;823
0000b0 e3500ea0 CMP r0,#0xa00 ;823
0000b4 0a000005 BEQ |L1.208| ;823
0000b8 e3a00446 MOV r0,#0x46000000 ;825
0000bc e5804010 STR r4,[r0,#0x10] ;825
0000c0 e3140e40 TST r4,#0x400 ;827
0000c4 0a000001 BEQ |L1.208| ;827
0000c8 e3a00000 MOV r0,#0 ;828
0000cc eaffffdc B |L1.68| ;828
|L1.208|
0000d0 e3a00446 MOV r0,#0x46000000 ;830
0000d4 e5804010 STR r4,[r0,#0x10] ;830
0000d8 ea000013 B |L1.300| ;830
|L1.220|
0000dc e2040d7c AND r0,r4,#0x1f00 ;834
0000e0 e3500ea0 CMP r0,#0xa00 ;834
0000e4 0a00000e BEQ |L1.292| ;834
0000e8 e3a00446 MOV r0,#0x46000000 ;836
0000ec e5900014 LDR r0,[r0,#0x14] ;836
0000f0 e1a03000 MOV r3,r0 ;836
0000f4 e3a00446 MOV r0,#0x46000000 ;836
0000f8 e5900010 LDR r0,[r0,#0x10] ;836
0000fc e1a02000 MOV r2,r0 ;836
000100 e1a01005 MOV r1,r5 ;836
000104 e28f0028 ADR r0,|L1.308| ;836
000108 ebfffffe BL _printf ;836
00010c e3a00446 MOV r0,#0x46000000 ;837
000110 e5804010 STR r4,[r0,#0x10] ;837
000114 e3140e40 TST r4,#0x400 ;839
000118 0a000001 BEQ |L1.292| ;839
00011c e3a00000 MOV r0,#0 ;840
000120 eaffffc7 B |L1.68| ;840
|L1.292|
000124 e3a00446 MOV r0,#0x46000000 ;842
000128 e5804010 STR r4,[r0,#0x10] ;842
|L1.300|
00012c e3a00001 MOV r0,#1 ;844
000130 eaffffc3 B |L1.68| ;844
|L1.308|
000134 25444d43 DCB "CMD%" ;844
000138 53723a64 DCB "d:rS" ;844
00013c 53434944 DCB "DICS" ;844
000140 303d4154 DCB "TA=0" ;844
000144 2c782578 DCB "x%x," ;844
000148 44537220 DCB " rSD" ;844
00014c 50535249 DCB "IRSP" ;844
000150 78303d30 DCB "0=0x" ;844
000154 000a7825 DCB "%x\n\0" ;844
ENDP
CMD9 PROC
;;;987 int CMD9(void)//SEND_CSD
;;;988 {
000158 e92d4008 STMFD sp!,{r3,lr}
;;;989 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 e3a01446 MOV r1,#0x46000000
00016c e5810008 STR r0,[r1,#8]
;;;990 rSDICCON=(0x1<<10)|(0x1<<9)|(0x1<<8)|0x49; // long_resp, wait_resp, start, CMD9
000170 e59f006c LDR r0,|L1.484|
000174 e3a01446 MOV r1,#0x46000000
000178 e581000c STR r0,[r1,#0xc]
;;;991
;;;992 Uart_Printf("\n****CSD register****\n");
00017c e28f0064 ADR r0,|L1.488|
000180 ebfffffe BL _printf
;;;993 //-- Check end of CMD9
;;;994 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|
;;;995 return 0;
000198 e3a00000 MOV r0,#0
;;;996
;;;997 Uart_Printf(" SDIRSP0=0x%x\n SDIRSP1=0x%x\n SDIRSP2=0x%x\n SDIRSP3=0x%x\n", rSDIRSP0,rSDIRSP1,rSDIRSP2,rSDIRSP3);
;;;998 return 1;
;;;999 }
|L1.412|
00019c e8bd8008 LDMFD sp!,{r3,pc}
|L1.416|
0001a0 e3a00446 MOV r0,#0x46000000 ;997
0001a4 e5903020 LDR r3,[r0,#0x20] ;997
0001a8 e3a00446 MOV r0,#0x46000000 ;997
0001ac e58d3000 STR r3,[sp,#0] ;997
0001b0 e590001c LDR r0,[r0,#0x1c] ;997
0001b4 e1a03000 MOV r3,r0 ;997
0001b8 e3a00446 MOV r0,#0x46000000 ;997
0001bc e5900018 LDR r0,[r0,#0x18] ;997
0001c0 e1a02000 MOV r2,r0 ;997
0001c4 e3a00446 MOV r0,#0x46000000 ;997
0001c8 e5900014 LDR r0,[r0,#0x14] ;997
0001cc e1a01000 MOV r1,r0 ;997
0001d0 e28f0028 ADR r0,|L1.512| ;997
0001d4 ebfffffe BL _printf ;997
0001d8 e3a00001 MOV r0,#1 ;998
0001dc eaffffee B |L1.412| ;998
|L1.480|
0001e0 00000030 DCD ||.bss$2|| + 48 ;998
|L1.484|
0001e4 00000749 DCD 0x00000749 ;998
|L1.488|
0001e8 2a2a2a0a DCB "\n***" ;998
0001ec 4453432a DCB "*CSD" ;998
0001f0 67657220 DCB " reg" ;998
0001f4 65747369 DCB "iste" ;998
0001f8 2a2a2a72 DCB "r***" ;998
0001fc 00000a2a DCB "*\n\0\0" ;998
|L1.512|
000200 49445320 DCB " SDI" ;998
000204 30505352 DCB "RSP0" ;998
000208 2578303d DCB "=0x%" ;998
00020c 53200a78 DCB "x\n S" ;998
000210 53524944 DCB "DIRS" ;998
000214 303d3150 DCB "P1=0" ;998
000218 0a782578 DCB "x%x\n" ;998
00021c 49445320 DCB " SDI" ;998
000220 32505352 DCB "RSP2" ;998
000224 2578303d DCB "=0x%" ;998
000228 53200a78 DCB "x\n S" ;998
00022c 53524944 DCB "DIRS" ;998
000230 303d3350 DCB "P3=0" ;998
000234 0a782578 DCB "x%x\n" ;998
000238 00000000 DCB "\0\0\0\0" ;998
ENDP
Card_sel_desel PROC
;;;244 void Card_sel_desel(char sel_desel)
;;;245 {
00023c e92d4010 STMFD sp!,{r4,lr}
000240 e1a04000 MOV r4,r0
;;;246 //-- Card select or deselect
;;;247 if(sel_desel)
000244 e3540000 CMP r4,#0
000248 0a000016 BEQ |L1.680|
;;;248 {
;;;249 RECMDS7:
00024c e1a00000 NOP
;;;250 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 e3a01446 MOV r1,#0x46000000
000260 e5810008 STR r0,[r1,#8]
;;;251 rSDICCON= (0x1<<9)|(0x1<<8)|0x47; // sht_resp, wait_resp, start, CMD7
000264 e59f013c LDR r0,|L1.936|
000268 e3a01446 MOV r1,#0x46000000
00026c e581000c STR r0,[r1,#0xc]
;;;252
;;;253 //-- Check end of CMD7
;;;254 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|
;;;255 goto RECMDS7;
000284 eafffff1 B |L1.592|
;;;256 rSDICSTA=0xa00; // Clear cmd_end(with rsp)
|L1.648|
000288 e3a00ea0 MOV r0,#0xa00
00028c e3a01446 MOV r1,#0x46000000
000290 e5810010 STR r0,[r1,#0x10]
;;;257
;;;258 //--State(transfer) check
;;;259 if( rSDIRSP0 & 0x1e00!=0x800 )
000294 e3a00446 MOV r0,#0x46000000
000298 e5900014 LDR r0,[r0,#0x14]
00029c e3100001 TST r0,#1
0002a0 0a000010 BEQ |L1.744|
;;;260 goto RECMDS7;
0002a4 eaffffe9 B |L1.592|
;;;261 }
;;;262 else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -