📄 usbmain.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 + -