⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usblib.txt

📁 支持三星原产的S3C24A0开发板
💻 TXT
📖 第 1 页 / 共 2 页
字号:
                          ENDP

                  WrPktEp1 PROC
;;;129    void WrPktEp1(U8 *buf,int num)
;;;130    {
000208  e3a02000          MOV      r2,#0
;;;131        int i;
;;;132        	
;;;133        for(i=0;i<num;i++)
                  |L1.524|
00020c  e1520001          CMP      r2,r1
000210  aa000006          BGE      |L1.560|
000214  ea000001          B        |L1.544|
                  |L1.536|
000218  e2822001          ADD      r2,r2,#1
00021c  eafffffa          B        |L1.524|
;;;134        {
;;;135            rEP1_FIFO=buf[i];	
                  |L1.544|
000220  e7d03002          LDRB     r3,[r0,r2]
000224  e59fc1a0          LDR      r12,|L1.972|
000228  e5cc31c4          STRB     r3,[r12,#0x1c4]
;;;136        }
00022c  eafffff9          B        |L1.536|
;;;137    }
                  |L1.560|
000230  e12fff1e          BX       lr
                          ENDP

                  WrPktEp2 PROC
;;;140    void WrPktEp2(U8 *buf,int num)
;;;141    {
000234  e3a02000          MOV      r2,#0
;;;142        int i;
;;;143        	
;;;144        for(i=0;i<num;i++)
                  |L1.568|
000238  e1520001          CMP      r2,r1
00023c  aa000006          BGE      |L1.604|
000240  ea000001          B        |L1.588|
                  |L1.580|
000244  e2822001          ADD      r2,r2,#1
000248  eafffffa          B        |L1.568|
;;;145        {
;;;146            rEP2_FIFO=buf[i];	
                  |L1.588|
00024c  e7d03002          LDRB     r3,[r0,r2]
000250  e59fc174          LDR      r12,|L1.972|
000254  e5cc31c8          STRB     r3,[r12,#0x1c8]
;;;147        }
000258  eafffff9          B        |L1.580|
;;;148    }
                  |L1.604|
00025c  e12fff1e          BX       lr
                          ENDP

                  RdPktEp3 PROC
;;;151    void RdPktEp3(U8 *buf,int num)
;;;152    {
000260  e3a02000          MOV      r2,#0
;;;153        int i;
;;;154        	
;;;155        for(i=0;i<num;i++)
                  |L1.612|
000264  e1520001          CMP      r2,r1
000268  aa000006          BGE      |L1.648|
00026c  ea000001          B        |L1.632|
                  |L1.624|
000270  e2822001          ADD      r2,r2,#1
000274  eafffffa          B        |L1.612|
;;;156        {
;;;157            buf[i]=(U8)rEP3_FIFO;	
                  |L1.632|
000278  e59f314c          LDR      r3,|L1.972|
00027c  e5d331cc          LDRB     r3,[r3,#0x1cc]
000280  e7c03002          STRB     r3,[r0,r2]
;;;158        }
000284  eafffff9          B        |L1.624|
;;;159    }
                  |L1.648|
000288  e12fff1e          BX       lr
                          ENDP

                  RdPktEp4 PROC
;;;162    void RdPktEp4(U8 *buf,int num)
;;;163    {
00028c  e3a02000          MOV      r2,#0
;;;164        int i;
;;;165        	
;;;166        for(i=0;i<num;i++)
                  |L1.656|
000290  e1520001          CMP      r2,r1
000294  aa000006          BGE      |L1.692|
000298  ea000001          B        |L1.676|
                  |L1.668|
00029c  e2822001          ADD      r2,r2,#1
0002a0  eafffffa          B        |L1.656|
;;;167        {
;;;168            buf[i]=(U8)rEP4_FIFO;	
                  |L1.676|
0002a4  e59f3120          LDR      r3,|L1.972|
0002a8  e5d331d0          LDRB     r3,[r3,#0x1d0]
0002ac  e7c03002          STRB     r3,[r0,r2]
;;;169        }
0002b0  eafffff9          B        |L1.668|
;;;170    }
                  |L1.692|
0002b4  e12fff1e          BX       lr
                          ENDP

                  ConfigEp3DmaMode PROC
;;;173    void ConfigEp3DmaMode(U32 bufAddr,U32 count)
;;;174    {
0002b8  e3a03003          MOV      r3,#3
;;;175        int i;
;;;176    
;;;177        rINDEX_REG=3;
0002bc  e59fc108          LDR      r12,|L1.972|
0002c0  e5cc3178          STRB     r3,[r12,#0x178]
;;;178        count=count&0xfffff; //transfer size should be <1MB
0002c4  e1a01601          MOV      r1,r1,LSL #12
0002c8  e1a01621          MOV      r1,r1,LSR #12
;;;179        
;;;180        rDISRCC2=(1<<1)|(1<<0);
0002cc  e3a03003          MOV      r3,#3
0002d0  e24cc644          SUB      r12,r12,#0x4400000
0002d4  e58c3004          STR      r3,[r12,#4]
;;;181        rDISRC2=ADDR_EP3_FIFO; //src=APB,fixed,src=EP3_FIFO 
0002d8  e59f30f4          LDR      r3,|L1.980|
0002dc  e1ccc1c3          BIC      r12,r12,r3,ASR #3
0002e0  e58c3000          STR      r3,[r12,#0]
;;;182        rDIDSTC2=(0<<1)|(0<<0);
0002e4  e3a03000          MOV      r3,#0
0002e8  e1ccc003          BIC      r12,r12,r3
0002ec  e58c300c          STR      r3,[r12,#0xc]
;;;183        rDIDST2=bufAddr;       //dst=AHB,increase,dst=bufAddr
0002f0  e1cc3003          BIC      r3,r12,r3
0002f4  e5830008          STR      r0,[r3,#8]
;;;184    #if USBDMA_DEMAND
;;;185        rDCON2=(count)|(0<<31)|(0<<30)|(1<<29)|(0<<28)|(0<<27)|(4<<24)|(1<<23)|(0<<22)|(0<<20); 
;;;186            //demand,requestor=APB,CURR_TC int enable,unit transfer,
;;;187            //single service,src=USBD,H/W request,autoreload,byte,CURR_TC
;;;188    #else
;;;189        rDCON2=(count)|(1<<31)|(0<<30)|(1<<29)|(0<<28)|(0<<27)|(4<<24)|(1<<23)|(0<<22)|(0<<20); 
0002f8  e3813480          ORR      r3,r1,#0x80000000
0002fc  e3833592          ORR      r3,r3,#0x24800000
000300  e58c3010          STR      r3,[r12,#0x10]
;;;190            //handshake,requestor=APB,CURR_TC int enable,unit transfer,
;;;191            //single service,src=USBD,H/W request,autoreload,byte,CURR_TC
;;;192    #endif        
;;;193        rDMASKTRIG2= (1<<1); 
000304  e3a03002          MOV      r3,#2
000308  e1ccc003          BIC      r12,r12,r3
00030c  e58c3020          STR      r3,[r12,#0x20]
;;;194            //DMA 2 on
;;;195    
;;;196        //rEP3_DMA_FIFO=0x40; //not needed for OUT operation. 	
;;;197    
;;;198        rEP3_DMA_TTC_L=0xff;
000310  e3a030ff          MOV      r3,#0xff
000314  e28cc644          ADD      r12,r12,#0x4400000
000318  e5cc324c          STRB     r3,[r12,#0x24c]
;;;199        rEP3_DMA_TTC_M=0xff;
00031c  e3a030ff          MOV      r3,#0xff
000320  e1ccc003          BIC      r12,r12,r3
000324  e5cc3250          STRB     r3,[r12,#0x250]
;;;200        rEP3_DMA_TTC_H=0x0f;
000328  e3a0300f          MOV      r3,#0xf
00032c  e1ccc003          BIC      r12,r12,r3
000330  e5cc3254          STRB     r3,[r12,#0x254]
;;;201    
;;;202        rOUT_CSR2_REG=rOUT_CSR2_REG|EPO_AUTO_CLR|EPO_OUT_DMA_INT_MASK; 
000334  e1cc3003          BIC      r3,r12,r3
000338  e5d33194          LDRB     r3,[r3,#0x194]
00033c  e38330a0          ORR      r3,r3,#0xa0
000340  e5cc3194          STRB     r3,[r12,#0x194]
;;;203        	//AUTO_CLR(OUT_PKT_READY is cleared automatically), interrupt_masking.
;;;204    #if USBDMA_DEMAND
;;;205        rEP3_DMA_UNIT=EP3_PKT_SIZE; //DMA transfer unit=64 bytes
;;;206        rEP3_DMA_CON=UDMA_DEMAND_MODE|UDMA_OUT_DMA_RUN|UDMA_DMA_MODE_EN; 
;;;207            // deamnd enable,out_dma_run=run,in_dma_run=stop,DMA mode enable
;;;208    #else        
;;;209        rEP3_DMA_UNIT=0x01; //DMA transfer unit=1byte
000344  e3a03001          MOV      r3,#1
000348  e1ccc003          BIC      r12,r12,r3
00034c  e5cc3244          STRB     r3,[r12,#0x244]
;;;210        rEP3_DMA_CON=UDMA_OUT_DMA_RUN|UDMA_DMA_MODE_EN;
000350  e3a03005          MOV      r3,#5
000354  e1ccc003          BIC      r12,r12,r3
000358  e5cc3240          STRB     r3,[r12,#0x240]
;;;211            // deamnd disable,out_dma_run=run,in_dma_run=stop,DMA mode enable
;;;212    #endif  
;;;213        //wait until DMA_CON is effective.
;;;214        rEP3_DMA_CON;
00035c  e1cc3003          BIC      r3,r12,r3
000360  e5d33240          LDRB     r3,[r3,#0x240]
;;;215        for(i=0;i<10;i++);    	
000364  e3a02000          MOV      r2,#0
                  |L1.872|
000368  e352000a          CMP      r2,#0xa
00036c  aa000001          BGE      |L1.888|
000370  e2822001          ADD      r2,r2,#1
000374  eafffffb          B        |L1.872|
;;;216    }
                  |L1.888|
000378  e12fff1e          BX       lr
                          ENDP

                  ConfigEp3IntMode PROC
;;;219    void ConfigEp3IntMode(void)
;;;220    {
00037c  e3a00003          MOV      r0,#3
;;;221        rINDEX_REG=3;
000380  e59f1044          LDR      r1,|L1.972|
000384  e5c10178          STRB     r0,[r1,#0x178]
;;;222        
;;;223        rDMASKTRIG2= (0<<1);  // EP3=DMA ch 2
000388  e3a00000          MOV      r0,#0
00038c  e2411644          SUB      r1,r1,#0x4400000
000390  e5810020          STR      r0,[r1,#0x20]
;;;224            //DMA channel off
;;;225        rOUT_CSR2_REG=rOUT_CSR2_REG&~(EPO_AUTO_CLR/*|EPO_OUT_DMA_INT_MASK*/); 
000394  e2810644          ADD      r0,r1,#0x4400000
000398  e5d00194          LDRB     r0,[r0,#0x194]
00039c  e3c00080          BIC      r0,r0,#0x80
0003a0  e2811644          ADD      r1,r1,#0x4400000
0003a4  e5c10194          STRB     r0,[r1,#0x194]
;;;226        	//AUTOCLEAR off,interrupt_enabled (???)
;;;227        rEP3_DMA_UNIT=1;	
0003a8  e3a00001          MOV      r0,#1
0003ac  e1c11000          BIC      r1,r1,r0
0003b0  e5c10244          STRB     r0,[r1,#0x244]
;;;228        rEP3_DMA_CON=0; 
0003b4  e3a00000          MOV      r0,#0
0003b8  e1c11000          BIC      r1,r1,r0
0003bc  e5c10240          STRB     r0,[r1,#0x240]
;;;229        	// deamnd disable,out_dma_run=stop,in_dma_run=stop,DMA mode disable
;;;230        //wait until DMA_CON is effective.
;;;231        rEP3_DMA_CON;
0003c0  e1c10000          BIC      r0,r1,r0
0003c4  e5d00240          LDRB     r0,[r0,#0x240]
;;;232        
;;;233    }
0003c8  e12fff1e          BX       lr
                  |L1.972|
0003cc  44a00000          DCD      0x44a00000
                  |L1.976|
0003d0  40200000          DCD      0x40200000
                  |L1.980|
0003d4  44a001cc          DCD      0x44a001cc
                          ENDP



        END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -