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

📄 usbmain.txt

📁 s3c24a0固件测试代码 ? ? ? ? ?啊 
💻 TXT
字号:
; generated by ARM C Compiler, ADS1.2 [Build 842]

; commandline [-errors .\err\usbmain.err -O0 -asm -g+ -cpu 5TEJ -fs -Wd -Ec -I.\include "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
                          CODE32

                          AREA ||.text||, CODE, READONLY

                  UsbdMain PROC
;;;28     void UsbdMain(void)
;;;29     {
                  |L1.0|
000000  e92d4008          STMFD    sp!,{r3,lr}
;;;30         int i;
;;;31         
;;;32         //ChangeUPllValue(0x48,0x3,0x2);  //UCLK=48Mhz     
;;;33         //ChangeUPllValue(40,1,2);  //UCLK=48Mhz   
;;;34        //   ChangeUPllValue(120,2,3); //jcs
;;;35     //    InitDescriptorTable();
;;;36         //ResetUsbd();
;;;37         
;;;38         ConfigUsbd(); 
000004  ebfffffe          BL       ConfigUsbd
;;;39     
;;;40     //     PrepareEp1Fifo(); 
;;;41     #if 0
;;;42         while(1)
;;;43         {
;;;44         	if(DbgPrintfLoop())continue;
;;;45         	
;;;46         	Delay(5000);
;;;47         	if((i++%2)==0)Led_Display(0x8);
;;;48         	else Led_Display(0x0);
;;;49         }
;;;50     #endif    
;;;51     }
000008  e8bd8008          LDMFD    sp!,{r3,pc}
                          ENDP

                  DbgPrintf PROC
;;;170    void DbgPrintf(char *fmt,...)
;;;171    {
00000c  e12fff1e          BX       lr
;;;172    }
                          ENDP

                  IsrUsbd PROC
;;;54     void __irq IsrUsbd(void)
;;;55     {
000010  e92d507f          STMFD    sp!,{r0-r6,r12,lr}
000014  e24dd004          SUB      sp,sp,#4
;;;56         U8 usbdIntpnd,epIntpnd;
;;;57         U8 saveIndexReg=rINDEX_REG;
000018  e59f0120          LDR      r0,|L1.320|
00001c  e5d00178          LDRB     r0,[r0,#0x178]
000020  e1a06000          MOV      r6,r0
;;;58         usbdIntpnd=rUSB_INT_REG;
000024  e59f0114          LDR      r0,|L1.320|
000028  e5d00158          LDRB     r0,[r0,#0x158]
00002c  e1a05000          MOV      r5,r0
;;;59         epIntpnd=rEP_INT_REG;
000030  e59f0108          LDR      r0,|L1.320|
000034  e5d00148          LDRB     r0,[r0,#0x148]
000038  e1a04000          MOV      r4,r0
;;;60         //DbgPrintf( "[INT:EP_I=%x,USBI=%x]",epIntpnd,usbIntpnd );
;;;61         
;;;62     	
;;;63         if(usbdIntpnd&SUSPEND_INT)
00003c  e3150001          TST      r5,#1
000040  0a000004          BEQ      |L1.88|
;;;64         {
;;;65         	rUSB_INT_REG=SUSPEND_INT;
000044  e3a00001          MOV      r0,#1
000048  e59f10f0          LDR      r1,|L1.320|
00004c  e5c10158          STRB     r0,[r1,#0x158]
;;;66         	DbgPrintf( "<SUS]");
000050  e28f00ec          ADR      r0,|L1.324|
000054  ebfffffe          BL       DbgPrintf
;;;67         }
;;;68         if(usbdIntpnd&RESUME_INT)
                  |L1.88|
000058  e3150002          TST      r5,#2
00005c  0a000004          BEQ      |L1.116|
;;;69         {
;;;70         	rUSB_INT_REG=RESUME_INT;
000060  e3a00002          MOV      r0,#2
000064  e59f10d4          LDR      r1,|L1.320|
000068  e5c10158          STRB     r0,[r1,#0x158]
;;;71         	DbgPrintf("<RSM]");
00006c  e28f00d8          ADR      r0,|L1.332|
000070  ebfffffe          BL       DbgPrintf
;;;72         }
;;;73         if(usbdIntpnd&RESET_INT)
                  |L1.116|
000074  e3150004          TST      r5,#4
000078  0a000005          BEQ      |L1.148|
;;;74         {
;;;75         	DbgPrintf( "<RST]");  
00007c  e28f00d0          ADR      r0,|L1.340|
000080  ebfffffe          BL       DbgPrintf
;;;76         	
;;;77         	//ResetUsbd();
;;;78        	ReconfigUsbd();
000084  ebfffffe          BL       ReconfigUsbd
;;;79           
;;;80         	rUSB_INT_REG=RESET_INT;  //RESET_INT should be cleared after ResetUsbd().   	
000088  e3a00004          MOV      r0,#4
00008c  e59f10ac          LDR      r1,|L1.320|
000090  e5c10158          STRB     r0,[r1,#0x158]
;;;81     
;;;82     //       PrepareEp1Fifo(); 
;;;83         }
;;;84     
;;;85         if(epIntpnd&EP0_INT)
                  |L1.148|
000094  e3140001          TST      r4,#1
000098  0a000002          BEQ      |L1.168|
;;;86         {
;;;87            rEP_INT_REG=EP0_INT;  
00009c  e3a00001          MOV      r0,#1
0000a0  e59f1098          LDR      r1,|L1.320|
0000a4  e5c10148          STRB     r0,[r1,#0x148]
;;;88     //    	Ep0Handler();
;;;89         }
;;;90         if(epIntpnd&EP1_INT)
                  |L1.168|
0000a8  e3140002          TST      r4,#2
0000ac  0a000002          BEQ      |L1.188|
;;;91         {
;;;92         	rEP_INT_REG=EP1_INT;  
0000b0  e3a00002          MOV      r0,#2
0000b4  e59f1084          LDR      r1,|L1.320|
0000b8  e5c10148          STRB     r0,[r1,#0x148]
;;;93     //    	Ep1Handler();
;;;94         }
;;;95     
;;;96         if(epIntpnd&EP2_INT)
                  |L1.188|
0000bc  e3140004          TST      r4,#4
0000c0  0a000004          BEQ      |L1.216|
;;;97         {
;;;98         	rEP_INT_REG=EP2_INT;  
0000c4  e3a00004          MOV      r0,#4
0000c8  e59f1070          LDR      r1,|L1.320|
0000cc  e5c10148          STRB     r0,[r1,#0x148]
;;;99         	DbgPrintf("<2:TBD]");   //not implemented yet	
0000d0  e28f0084          ADR      r0,|L1.348|
0000d4  ebfffffe          BL       DbgPrintf
;;;100        	//Ep2Handler();
;;;101        }
;;;102    
;;;103        if(epIntpnd&EP3_INT)
                  |L1.216|
0000d8  e3140008          TST      r4,#8
0000dc  0a000003          BEQ      |L1.240|
;;;104        {
;;;105           
;;;106        	rEP_INT_REG=EP3_INT;
0000e0  e3a00008          MOV      r0,#8
0000e4  e59f1054          LDR      r1,|L1.320|
0000e8  e5c10148          STRB     r0,[r1,#0x148]
;;;107        	Ep3Handler();
0000ec  ebfffffe          BL       Ep3Handler
;;;108        }
;;;109    
;;;110        if(epIntpnd&EP4_INT)
                  |L1.240|
0000f0  e3140010          TST      r4,#0x10
0000f4  0a000004          BEQ      |L1.268|
;;;111        {
;;;112        	rEP_INT_REG=EP4_INT;
0000f8  e3a00010          MOV      r0,#0x10
0000fc  e59f103c          LDR      r1,|L1.320|
000100  e5c10148          STRB     r0,[r1,#0x148]
;;;113        	DbgPrintf("<4:TBD]");   //not implemented yet	
000104  e28f0058          ADR      r0,|L1.356|
000108  ebfffffe          BL       DbgPrintf
;;;114        	//Ep4Handler();
;;;115        }
;;;116    
;;;117        ClearPending(BIT_USBD);	 
                  |L1.268|
00010c  e3a00780          MOV      r0,#0x2000000
000110  e59f1054          LDR      r1,|L1.364|
000114  e5810000          STR      r0,[r1,#0]
000118  e1c10000          BIC      r0,r1,r0
00011c  e5900010          LDR      r0,[r0,#0x10]
000120  e5810010          STR      r0,[r1,#0x10]
000124  e1a00001          MOV      r0,r1
000128  e5900010          LDR      r0,[r0,#0x10]
;;;118        
;;;119        rINDEX_REG=saveIndexReg;
00012c  e2810648          ADD      r0,r1,#0x4800000
000130  e5c06178          STRB     r6,[r0,#0x178]
;;;120    }
000134  e28dd004          ADD      sp,sp,#4
000138  e8bd507f          LDMFD    sp!,{r0-r6,r12,lr}
00013c  e25ef004          SUBS     pc,lr,#4
                  |L1.320|
000140  44a00000          DCD      0x44a00000
                  |L1.324|
000144  5355533c          DCB      "<SUS"
000148  0000005d          DCB      "]\0\0\0"
                  |L1.332|
00014c  4d53523c          DCB      "<RSM"
000150  0000005d          DCB      "]\0\0\0"
                  |L1.340|
000154  5453523c          DCB      "<RST"
000158  0000005d          DCB      "]\0\0\0"
                  |L1.348|
00015c  543a323c          DCB      "<2:T"
000160  005d4442          DCB      "BD]\0"
                  |L1.356|
000164  543a343c          DCB      "<4:T"
000168  005d4442          DCB      "BD]\0"
                  |L1.364|
00016c  40200000          DCD      0x40200000
                          ENDP

                  _WrDbgStrFifo PROC
;;;134    void _WrDbgStrFifo(U8 c)
;;;135    {
000170  e59f10a4          LDR      r1,|L1.540|
;;;136        dbgStrFifo[dbgStrWrPt++]=c;
000174  e5911000          LDR      r1,[r1,#0]  ; dbgStrWrPt
000178  e2812001          ADD      r2,r1,#1
00017c  e59f1098          LDR      r1,|L1.540|
000180  e5913000          LDR      r3,[r1,#0]  ; dbgStrWrPt
000184  e5812000          STR      r2,[r1,#0]  ; dbgStrWrPt
000188  e59f1090          LDR      r1,|L1.544|
00018c  e7c10003          STRB     r0,[r1,r3]
;;;137        if(dbgStrWrPt==DBGSTR_LENGTH)dbgStrWrPt=0;
000190  e59f1084          LDR      r1,|L1.540|
000194  e5911000          LDR      r1,[r1,#0]  ; dbgStrWrPt
000198  e3510d40          CMP      r1,#0x1000
00019c  1a000002          BNE      |L1.428|
0001a0  e3a01000          MOV      r1,#0
0001a4  e59f2070          LDR      r2,|L1.540|
0001a8  e5821000          STR      r1,[r2,#0]  ; dbgStrWrPt
;;;138    
;;;139    }
                  |L1.428|
0001ac  e12fff1e          BX       lr
                          ENDP

                  DbgPrintfLoop PROC
;;;142    int DbgPrintfLoop(void)
;;;143    {
0001b0  e92d4008          STMFD    sp!,{r3,lr}
;;;144        if(dbgStrRdPt==dbgStrWrPt)return 0;
0001b4  e59f0068          LDR      r0,|L1.548|
0001b8  e5900000          LDR      r0,[r0,#0]  ; dbgStrRdPt
0001bc  e59f1058          LDR      r1,|L1.540|
0001c0  e5911000          LDR      r1,[r1,#0]  ; dbgStrWrPt
0001c4  e1500001          CMP      r0,r1
0001c8  1a000001          BNE      |L1.468|
0001cc  e3a00000          MOV      r0,#0
;;;145        Uart_SendByte(dbgStrFifo[dbgStrRdPt++]);
;;;146    
;;;147        if(dbgStrRdPt==DBGSTR_LENGTH)dbgStrRdPt=0;
;;;148        return 1;
;;;149    }
                  |L1.464|
0001d0  e8bd8008          LDMFD    sp!,{r3,pc}
                  |L1.468|
0001d4  e59f1048          LDR      r1,|L1.548|           ;145
0001d8  e5911000          LDR      r1,[r1,#0]            ;145  ; dbgStrRdPt
0001dc  e2812001          ADD      r2,r1,#1              ;145
0001e0  e59f103c          LDR      r1,|L1.548|           ;145
0001e4  e5913000          LDR      r3,[r1,#0]            ;145  ; dbgStrRdPt
0001e8  e5812000          STR      r2,[r1,#0]            ;145  ; dbgStrRdPt
0001ec  e59f102c          LDR      r1,|L1.544|           ;145
0001f0  e7d10003          LDRB     r0,[r1,r3]            ;145
0001f4  ebfffffe          BL       Uart_SendByte         ;145
0001f8  e59f0024          LDR      r0,|L1.548|           ;147
0001fc  e5900000          LDR      r0,[r0,#0]            ;147  ; dbgStrRdPt
000200  e3500d40          CMP      r0,#0x1000            ;147
000204  1a000002          BNE      |L1.532|              ;147
000208  e3a00000          MOV      r0,#0                 ;147
00020c  e59f1010          LDR      r1,|L1.548|           ;147
000210  e5810000          STR      r0,[r1,#0]            ;147  ; dbgStrRdPt
                  |L1.532|
000214  e3a00001          MOV      r0,#1                 ;148
000218  eaffffec          B        |L1.464|              ;148
                  |L1.540|
00021c  00000004          DCD      ||.bss$2|| + 4        ;148
                  |L1.544|
000220  00000008          DCD      ||.bss$2|| + 8        ;148
                  |L1.548|
000224  00000000          DCD      ||.bss$2||            ;148
                          ENDP



                          AREA ||.bss||, NOINIT, ALIGN=2

                  dbgStrRdPt
                  ||.bss$2||
                          % 4
                  dbgStrWrPt
                          % 4
                  dbgStrFifo
                          % 4096


        END

⌨️ 快捷键说明

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