📄 sdi.txt
字号:
0004e4 e3c00c70 BIC r0,r0,#0x7000 ;561
0004e8 e3a0145a MOV r1,#0x5a000000 ;561
0004ec e581002c STR r0,[r1,#0x2c] ;561
0004f0 e1a00000 NOP ;563
|L1.1268|
0004f4 e3a0045a MOV r0,#0x5a000000 ;563
0004f8 e5900034 LDR r0,[r0,#0x34] ;563
0004fc e3100001 TST r0,#1 ;563
000500 1afffffb BNE |L1.1268| ;563
000504 e3a0045a MOV r0,#0x5a000000 ;564
000508 e5900034 LDR r0,[r0,#0x34] ;564
00050c e3500000 CMP r0,#0 ;564
000510 0a000004 BEQ |L1.1320| ;564
000514 e3a0045a MOV r0,#0x5a000000 ;565
000518 e5900034 LDR r0,[r0,#0x34] ;565
00051c e1a01000 MOV r1,r0 ;565
000520 e28f0f42 ADR r0,|L1.1584| ;565
000524 ebfffffe BL Uart_Printf ;565
|L1.1320|
000528 e3a000ff MOV r0,#0xff ;566
00052c e3a0145a MOV r1,#0x5a000000 ;566
000530 e5810034 STR r0,[r1,#0x34] ;566
000534 e1a00000 NOP ;568
|L1.1336|
000538 e3a00000 MOV r0,#0 ;570
00053c e3a0145a MOV r1,#0x5a000000 ;570
000540 e5810008 STR r0,[r1,#8] ;570
000544 e3a00fd3 MOV r0,#0x34c ;571
000548 e3a0145a MOV r1,#0x5a000000 ;571
00054c e581000c STR r0,[r1,#0xc] ;571
000550 e3a01001 MOV r1,#1 ;574
000554 e3a0000c MOV r0,#0xc ;574
000558 ebfffffe BL Chk_CMDend ;574
00055c e3500000 CMP r0,#0 ;574
000560 1a000000 BNE |L1.1384| ;574
000564 eafffff3 B |L1.1336| ;575
|L1.1384|
000568 e3a00ea0 MOV r0,#0xa00 ;576
00056c e3a0145a MOV r1,#0x5a000000 ;576
000570 e5810010 STR r0,[r1,#0x10] ;576
000574 e3a0045a MOV r0,#0x5a000000 ;577
000578 e5900038 LDR r0,[r0,#0x38] ;577
00057c e2000f80 AND r0,r0,#0x200 ;577
000580 e3a0145a MOV r1,#0x5a000000 ;577
000584 e5810038 STR r0,[r1,#0x38] ;577
000588 e3a0045a MOV r0,#0x5a000000 ;591
00058c e5900038 LDR r0,[r0,#0x38] ;591
000590 e1a01000 MOV r1,r0 ;591
000594 e28f00a4 ADR r0,|L1.1600| ;591
000598 ebfffffe BL Uart_Printf ;591
00059c e3a0045a MOV r0,#0x5a000000 ;592
0005a0 e5900038 LDR r0,[r0,#0x38] ;592
0005a4 e2000f80 AND r0,r0,#0x200 ;592
0005a8 e3a0145a MOV r1,#0x5a000000 ;592
0005ac e5810038 STR r0,[r1,#0x38] ;592
0005b0 e3a0045a MOV r0,#0x5a000000 ;593
0005b4 e5900038 LDR r0,[r0,#0x38] ;593
0005b8 e1a01000 MOV r1,r0 ;593
0005bc e28f008c ADR r0,|L1.1616| ;593
0005c0 ebfffffe BL Uart_Printf ;593
0005c4 e28f0094 ADR r0,|L1.1632| ;595
0005c8 ebfffffe BL Uart_Printf ;595
0005cc eaffff91 B |L1.1048|
|L1.1488|
0005d0 00000008 DCD ||.bss$2|| + 8
|L1.1492|
0005d4 65727453 DCB "Stre"
0005d8 72206d61 DCB "am r"
0005dc 20646165 DCB "ead "
0005e0 6d6d6f63 DCB "comm"
0005e4 20646e61 DCB "and "
0005e8 70707573 DCB "supp"
0005ec 7374726f DCB "orts"
0005f0 6c6e6f20 DCB " onl"
0005f4 4d4d2079 DCB "y MM"
0005f8 000a2143 DCB "C!\n\0"
|L1.1532|
0005fc 74535b0a DCB "\n[St"
000600 6d616572 DCB "ream"
000604 61657220 DCB " rea"
000608 65742064 DCB "d te"
00060c 0a5d7473 DCB "st]\n"
000610 00000000 DCB "\0\0\0\0"
|L1.1556|
000614 00886000 DCD 0x00886000
|L1.1560|
000618 0000034b DCD 0x0000034b
|L1.1564|
00061c 61657252 DCB "Rrea"
000620 69742064 DCB "d ti"
000624 756f656d DCB "meou"
000628 72652074 DCB "t er"
00062c 00726f72 DCB "ror\0"
|L1.1584|
000630 49445372 DCB "rSDI"
000634 41545344 DCB "DSTA"
000638 2578303d DCB "=0x%"
00063c 00000a78 DCB "x\n\0\0"
|L1.1600|
000640 49445372 DCB "rSDI"
000644 41545346 DCB "FSTA"
000648 78303d31 DCB "1=0x"
00064c 000a7825 DCB "%x\n\0"
|L1.1616|
000650 49445372 DCB "rSDI"
000654 41545346 DCB "FSTA"
000658 78303d32 DCB "2=0x"
00065c 000a7825 DCB "%x\n\0"
|L1.1632|
000660 452d2d0a DCB "\n--E"
000664 7320646e DCB "nd s"
000668 61657274 DCB "trea"
00066c 6572206d DCB "m re"
000670 74206461 DCB "ad t"
000674 0a747365 DCB "est\n"
000678 00000000 DCB "\0\0\0\0"
ENDP
Chk_BUSYend PROC
;;;900 int Chk_BUSYend(void)
;;;901 {
00067c e92d4010 STMFD sp!,{r4,lr}
;;;902 int finish;
;;;903
;;;904 finish=rSDIDSTA;
000680 e3a0045a MOV r0,#0x5a000000
000684 e5900034 LDR r0,[r0,#0x34]
000688 e1a04000 MOV r4,r0
;;;905 while( !( ((finish&0x08)==0x08) | ((finish&0x20)==0x20) ))
00068c e1a00000 NOP
|L1.1680|
000690 e3a00001 MOV r0,#1
000694 e00001c4 AND r0,r0,r4,ASR #3
000698 e3a01001 MOV r1,#1
00069c e00112c4 AND r1,r1,r4,ASR #5
0006a0 e1900001 ORRS r0,r0,r1
0006a4 1a000003 BNE |L1.1720|
;;;906 finish=rSDIDSTA;
0006a8 e3a0045a MOV r0,#0x5a000000
0006ac e5900034 LDR r0,[r0,#0x34]
0006b0 e1a04000 MOV r4,r0
0006b4 eafffff5 B |L1.1680|
;;;907
;;;908 if( (finish&0xfc) != 0x08 )
|L1.1720|
0006b8 e20400fc AND r0,r4,#0xfc
0006bc e3500008 CMP r0,#8
0006c0 0a000007 BEQ |L1.1764|
;;;909 {
;;;910 Uart_Printf("DATA:finish=0x%x\n", finish);
0006c4 e1a01004 MOV r1,r4
0006c8 e28f001c ADR r0,|L1.1772|
0006cc ebfffffe BL Uart_Printf
;;;911 rSDIDSTA=0xf4; //clear error state
0006d0 e3a000f4 MOV r0,#0xf4
0006d4 e3a0145a MOV r1,#0x5a000000
0006d8 e5810034 STR r0,[r1,#0x34]
;;;912 return 0;
0006dc e3a00000 MOV r0,#0
;;;913 }
;;;914 return 1;
;;;915 }
|L1.1760|
0006e0 e8bd8010 LDMFD sp!,{r4,pc}
|L1.1764|
0006e4 e3a00001 MOV r0,#1 ;914
0006e8 eafffffc B |L1.1760| ;914
|L1.1772|
0006ec 41544144 DCB "DATA" ;914
0006f0 6e69663a DCB ":fin" ;914
0006f4 3d687369 DCB "ish=" ;914
0006f8 78257830 DCB "0x%x" ;914
0006fc 0000000a DCB "\n\0\0\0" ;914
ENDP
Wt_Stream PROC
;;;760 void Wt_Stream(void) // only for MMC, 3blk write
;;;761 {
000700 e92d4038 STMFD sp!,{r3-r5,lr}
;;;762 int status, wt_cnt=0;
000704 e3a04000 MOV r4,#0
;;;763
;;;764 if(MMC!=1)
000708 e51f0140 LDR r0,|L1.1488|
00070c e5900000 LDR r0,[r0,#0] ; MMC
000710 e3500001 CMP r0,#1
000714 0a000002 BEQ |L1.1828|
;;;765 {
;;;766 Uart_Printf("Stream write command supports only MMC!\n");
000718 e28f0f65 ADR r0,|L1.2228|
00071c ebfffffe BL Uart_Printf
;;;767 return;
;;;768 }
;;;769 Uart_Printf("\n[Stream write test]\n");
;;;770 RECMD20:
;;;771 // rSDIDCON=(2<<22)|(1<<20)|(0<<17)|(0<<16)|(3<<12); // stream mode
;;;772 rSDIDCON=(2<<22)|(1<<20)|(0<<17)|(0<<16)|(1<<14)|(3<<12); // stream mode
;;;773
;;;774
;;;775 rSDICARG=0x0; // CMD20(addr)
;;;776 rSDICCON=(0x1<<9)|(0x1<<8)|0x54; //sht_resp, wait_resp, dat, start, CMD20
;;;777
;;;778 //-- Check end of CMD25
;;;779 if(!Chk_CMDend(20, 1))
;;;780 goto RECMD20;
;;;781 rSDICSTA=0xa00; // Clear cmd_end(with rsp)
;;;782
;;;783 while(wt_cnt<128*block)
;;;784 {
;;;785 status=rSDIFSTA;
;;;786 if((status&0x2000)==0x2000)
;;;787 rSDIDAT=Tx_buffer[wt_cnt++];
;;;788 }
;;;789
;;;790 //-- Check end of DATA
;;;791 while( rSDIFSTA&0x400 );
;;;792 Delay(10); // for the empty of DATA line(Hardware)
;;;793 // rSDIDCON=(1<<20)|(0<<17)|(0<<16)|(1<<14)|(0<<12);
;;;794 rSDIDCON=(1<<20)|(0<<17)|(0<<16); //YH 040220
;;;795 rSDIDCON=rSDIDCON&~(7<<12); //YH 040220, no operation, data ready
;;;796
;;;797 while( (rSDIDSTA&0x3)!=0x0 );
;;;798 if(rSDIDSTA!=0x0)
;;;799 Uart_Printf("rSDIDSTA=0x%x\n", rSDIDSTA);
;;;800
;;;801 rSDIDSTA=0xff; //Clear rSDIDSTA
;;;802
;;;803 STWCMD12:
;;;804 //--Stop cmd(CMD12)
;;;805 // rSDIDCON=(1<<18)|(1<<17)|(0<<16)|(1<<12);
;;;806 rSDIDCON=(1<<18)|(1<<17)|(0<<16)|(1<<14)|(1<<12);
;;;807
;;;808
;;;809 rSDICARG=0x0; //CMD12(stuff bit)
;;;810 rSDICCON=(0x1<<9)|(0x1<<8)|0x4c; //sht_resp, wait_resp, start, CMD12
;;;811
;;;812 //-- Check end of CMD12
;;;813 if(!Chk_CMDend(12, 1))
;;;814 goto STWCMD12;
;;;815 rSDICSTA=0xa00; // Clear cmd_end(with rsp)
;;;816
;;;817 //-- Check end of DATA(with busy state)
;;;818 if(!Chk_BUSYend())
;;;819 Uart_Printf("error\n");
;;;820 rSDIDSTA=0x08;
;;;821
;;;822 Uart_Printf("\n--End Stream write test\n");
;;;823 }
|L1.1824|
000720 e8bd8038 LDMFD sp!,{r3-r5,pc}
|L1.1828|
000724 e28f0f6d ADR r0,|L1.2272| ;769
000728 ebfffffe BL Uart_Printf ;769
00072c e1a00000 NOP ;770
|L1.1840|
000730 e59f01c0 LDR r0,|L1.2296| ;772
000734 e3a0145a MOV r1,#0x5a000000 ;772
000738 e581002c STR r0,[r1,#0x2c] ;772
00073c e3a00000 MOV r0,#0 ;775
000740 e3a0145a MOV r1,#0x5a000000 ;775
000744 e5810008 STR r0,[r1,#8] ;775
000748 e3a00fd5 MOV r0,#0x354 ;776
00074c e3a0145a MOV r1,#0x5a000000 ;776
000750 e581000c STR r0,[r1,#0xc] ;776
000754 e3a01001 MOV r1,#1 ;779
000758 e3a00014 MOV r0,#0x14 ;779
00075c ebfffffe BL Chk_CMDend ;779
000760 e3500000 CMP r0,#0 ;779
000764 1a000000 BNE |L1.1900| ;779
000768 eafffff0 B |L1.1840| ;780
|L1.1900|
00076c e3a00ea0 MOV r0,#0xa00 ;781
000770 e3a0145a MOV r1,#0x5a000000 ;781
000774 e5810010 STR r0,[r1,#0x10] ;781
000778 e1a00000 NOP ;783
|L1.1916|
00077c e51f03c4 LDR r0,|L1.960| ;783
000780 e5900000 LDR r0,[r0,#0] ;783 ; block
000784 e1540380 CMP r4,r0,LSL #7 ;783
000788 2a00000b BCS |L1.1980| ;783
00078c e3a0045a MOV r0,#0x5a000000 ;785
000790 e5905038 LDR r5,[r0,#0x38] ;785
000794 e3150d80 TST r5,#0x2000 ;786
000798 0a000006 BEQ |L1.1976| ;786
00079c e1a00004 MOV r0,r4 ;787
0007a0 e2844001 ADD r4,r4,#1 ;787
0007a4 e51f1404 LDR r1,|L1.936| ;787
0007a8 e5911000 LDR r1,[r1,#0] ;787 ; Tx_buffer
0007ac e7910100 LDR r0,[r1,r0,LSL #2] ;787
0007b0 e3a0145a MOV r1,#0x5a000000 ;787
0007b4 e5810040 STR r0,[r1,#0x40] ;787
|L1.1976|
0007b8 eaffffef B |L1.1916| ;788
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -