?? usbhw.lst
字號:
*** CODE SEGMENT '?PR?USB_Connect?T?usbhw':
69: void USB_Connect (BOOL con) {
00000000 1C01 MOV R1,R0 ; con
00000002 ---- Variable 'con' assigned to Register 'R1' ----
71: if (con) {
00000002 1C08 MOV R0,R1 ; con
00000004 2800 CMP R0,#0x0 ; con
00000006 D003 BEQ L_1 ; T=0x00000010
73: AT91C_BASE_PIOA->PIO_CODR = AT91C_PIO_PA16;
00000008 4800 LDR R1,=0x10000
0000000A 4800 LDR R0,=0xFFFFF434
0000000C 6001 STR R1,[R0,#0x0]
74: } else {
0000000E E002 B L_2 ; T=0x00000016
00000010 L_1:
76: AT91C_BASE_PIOA->PIO_SODR = AT91C_PIO_PA16;
00000010 4800 LDR R1,=0x10000
00000012 4800 LDR R0,=0xFFFFF430
00000014 6001 STR R1,[R0,#0x0]
77: }
00000016 L_2:
78: }
00000016 4770 BX R14
00000018 ENDP ; 'USB_Connect?T'
*** CODE SEGMENT '?PR?USB_Reset?T?usbhw':
87: void USB_Reset (void) {
00000000 ; SCOPE-START
91: pUDP->UDP_GLBSTATE &= ~(AT91C_UDP_FADDEN | AT91C_UDP_CONFG | AT91C_UDP_RMWUPE);
00000000 4800 LDR R0,=pUDP ; pUDP
00000002 6801 LDR R1,[R0,#0x0] ; pUDP
00000004 6848 LDR R0,[R1,#0x4]
00000006 2213 MOV R2,#0x13
00000008 4390 BIC R0,R2
0000000A 6048 STR R0,[R1,#0x4]
92: pUDP->UDP_FADDR = AT91C_UDP_FEN;
0000000C 4840 LDR R0,=0x100
ARM COMPILER V2.53, usbhw 02/11/07 08:22:50 PAGE 11
0000000E 4800 LDR R1,=pUDP ; pUDP
00000010 6809 LDR R1,[R1,#0x0] ; pUDP
00000012 6088 STR R0,[R1,#0x8]
93: pUDP->UDP_ICR = 0xFFFFFFFF;
00000014 4800 LDR R0,=0xFFFFFFFF
00000016 4800 LDR R1,=pUDP ; pUDP
00000018 6809 LDR R1,[R1,#0x0] ; pUDP
0000001A 6208 STR R0,[R1,#0x20]
96: for (n = 0; n < USB_EP_NUM; n++) {
0000001C 2000 MOV R0,#0x0
0000001E ---- Variable 'n' assigned to Register 'R0' ----
0000001E L_6:
97: pUDP->UDP_CSR[n] = 0;
0000001E 2100 MOV R1,#0x0
00000020 1C03 MOV R3,R0 ; n
00000022 009B LSL R3,R3,#0x2 ; n
00000024 4800 LDR R2,=pUDP ; pUDP
00000026 6812 LDR R2,[R2,#0x0] ; pUDP
00000028 18D2 ADD R2,R3
0000002A 6311 STR R1,[R2,#0x30]
98: RxDataBank[n] = 0;
0000002C 2100 MOV R1,#0x0
0000002E 1C03 MOV R3,R0 ; n
00000030 4800 LDR R2,=RxDataBank ; RxDataBank
00000032 54D1 STRB R1,[R2,R3]
99: TxDataBank[n] = 0;
00000034 1C03 MOV R3,R0 ; n
00000036 4800 LDR R2,=TxDataBank ; TxDataBank
00000038 54D1 STRB R1,[R2,R3]
100: }
0000003A 3001 ADD R0,#0x1
0000003C 1C01 MOV R1,R0 ; n
0000003E 2904 CMP R1,#0x4 ; n
00000040 D3ED BCC L_6 ; T=0x0000001E
101: pUDP->UDP_RSTEP = 0xFFFFFFFF;
00000042 4800 LDR R0,=0xFFFFFFFF
00000044 4800 LDR R1,=pUDP ; pUDP
00000046 6809 LDR R1,[R1,#0x0] ; pUDP
00000048 6288 STR R0,[R1,#0x28]
102: pUDP->UDP_RSTEP = 0;
0000004A 2000 MOV R0,#0x0
0000004C 4800 LDR R1,=pUDP ; pUDP
0000004E 6809 LDR R1,[R1,#0x0] ; pUDP
00000050 6288 STR R0,[R1,#0x28]
106: AT91C_UDP_SOFINT | (2^USB_EP_NUM - 1);
00000052 4800 LDR R0,=0xF01
00000054 4800 LDR R1,=pUDP ; pUDP
00000056 6809 LDR R1,[R1,#0x0] ; pUDP
00000058 6108 STR R0,[R1,#0x10]
109: pUDP->UDP_CSR[0] = AT91C_UDP_EPEDS | AT91C_UDP_EPTYPE_CTRL;
0000005A 4800 LDR R0,=0x8000
0000005C 4800 LDR R1,=pUDP ; pUDP
0000005E 6809 LDR R1,[R1,#0x0] ; pUDP
00000060 6308 STR R0,[R1,#0x30]
00000062 ; SCOPE-END
110: }
00000062 4770 BX R14
00000064 ENDP ; 'USB_Reset?T'
*** CODE SEGMENT '?PR?USB_Suspend?T?usbhw':
120: }
00000000 4770 BX R14
00000002 ENDP ; 'USB_Suspend?T'
*** CODE SEGMENT '?PR?USB_Resume?T?usbhw':
130: }
00000000 4770 BX R14
00000002 ENDP ; 'USB_Resume?T'
ARM COMPILER V2.53, usbhw 02/11/07 08:22:50 PAGE 12
*** CODE SEGMENT '?PR?USB_WakeUp?T?usbhw':
140: }
00000000 4770 BX R14
00000002 ENDP ; 'USB_WakeUp?T'
*** CODE SEGMENT '?PR?USB_WakeUpCfg?T?usbhw':
148: void USB_WakeUpCfg (BOOL cfg) {
00000000 1C01 MOV R1,R0 ; cfg
00000002 ---- Variable 'cfg' assigned to Register 'R1' ----
150: if (cfg) {
00000002 1C08 MOV R0,R1 ; cfg
00000004 2800 CMP R0,#0x0 ; cfg
00000006 D006 BEQ L_8 ; T=0x00000016
151: pUDP->UDP_GLBSTATE |= AT91C_UDP_RMWUPE;
00000008 4800 LDR R0,=pUDP ; pUDP
0000000A 6801 LDR R1,[R0,#0x0] ; pUDP
0000000C 6848 LDR R0,[R1,#0x4]
0000000E 2210 MOV R2,#0x10
00000010 4310 ORR R0,R2
00000012 6048 STR R0,[R1,#0x4]
152: } else {
00000014 E005 B L_9 ; T=0x00000022
00000016 L_8:
153: pUDP->UDP_GLBSTATE &= ~AT91C_UDP_RMWUPE;
00000016 4800 LDR R0,=pUDP ; pUDP
00000018 6801 LDR R1,[R0,#0x0] ; pUDP
0000001A 6848 LDR R0,[R1,#0x4]
0000001C 2210 MOV R2,#0x10
0000001E 4390 BIC R0,R2
00000020 6048 STR R0,[R1,#0x4]
154: }
00000022 L_9:
155: }
00000022 4770 BX R14
00000024 ENDP ; 'USB_WakeUpCfg?T'
*** CODE SEGMENT '?PR?USB_SetAddress?T?usbhw':
164: void USB_SetAddress (DWORD adr) {
00000000 1C01 MOV R1,R0 ; adr
00000002 ---- Variable 'adr' assigned to Register 'R1' ----
166: pUDP->UDP_FADDR = AT91C_UDP_FEN | adr;
00000002 1C08 MOV R0,R1 ; adr
00000004 4A40 LDR R2,=0x100
00000006 4310 ORR R0,R2
00000008 4800 LDR R2,=pUDP ; pUDP
0000000A 6812 LDR R2,[R2,#0x0] ; pUDP
0000000C 6090 STR R0,[R2,#0x8]
167: if (adr) {
0000000E 1C08 MOV R0,R1 ; adr
00000010 2800 CMP R0,#0x0 ; adr
00000012 D006 BEQ L_10 ; T=0x00000022
168: pUDP->UDP_GLBSTATE |= AT91C_UDP_FADDEN;
00000014 4800 LDR R0,=pUDP ; pUDP
00000016 6801 LDR R1,[R0,#0x0] ; pUDP
00000018 6848 LDR R0,[R1,#0x4]
0000001A 2201 MOV R2,#0x1
0000001C 4310 ORR R0,R2
0000001E 6048 STR R0,[R1,#0x4]
169: } else {
00000020 E005 B L_11 ; T=0x0000002E
00000022 L_10:
170: pUDP->UDP_GLBSTATE &= ~AT91C_UDP_FADDEN;
00000022 4800 LDR R0,=pUDP ; pUDP
00000024 6801 LDR R1,[R0,#0x0] ; pUDP
00000026 6848 LDR R0,[R1,#0x4]
00000028 2201 MOV R2,#0x1
0000002A 4390 BIC R0,R2
0000002C 6048 STR R0,[R1,#0x4]
ARM COMPILER V2.53, usbhw 02/11/07 08:22:50 PAGE 13
171: }
0000002E L_11:
172: }
0000002E 4770 BX R14
00000030 ENDP ; 'USB_SetAddress?T'
*** CODE SEGMENT '?PR?USB_Configure?T?usbhw':
181: void USB_Configure (BOOL cfg) {
00000000 1C01 MOV R1,R0 ; cfg
00000002 ---- Variable 'cfg' assigned to Register 'R1' ----
183: if (cfg) {
00000002 1C08 MOV R0,R1 ; cfg
00000004 2800 CMP R0,#0x0 ; cfg
00000006 D006 BEQ L_12 ; T=0x00000016
184: pUDP->UDP_GLBSTATE |= AT91C_UDP_CONFG;
00000008 4800 LDR R0,=pUDP ; pUDP
0000000A 6801 LDR R1,[R0,#0x0] ; pUDP
0000000C 6848 LDR R0,[R1,#0x4]
0000000E 2202 MOV R2,#0x2
00000010 4310 ORR R0,R2
00000012 6048 STR R0,[R1,#0x4]
185: } else {
00000014 E005 B L_13 ; T=0x00000022
00000016 L_12:
186: pUDP->UDP_GLBSTATE &= ~AT91C_UDP_CONFG;
00000016 4800 LDR R0,=pUDP ; pUDP
00000018 6801 LDR R1,[R0,#0x0] ; pUDP
0000001A 6848 LDR R0,[R1,#0x4]
0000001C 2202 MOV R2,#0x2
0000001E 4390 BIC R0,R2
00000020 6048 STR R0,[R1,#0x4]
187: }
00000022 L_13:
188: }
00000022 4770 BX R14
00000024 ENDP ; 'USB_Configure?T'
*** CODE SEGMENT '?PR?USB_ConfigEP?T?usbhw':
197: void USB_ConfigEP (USB_ENDPOINT_DESCRIPTOR *pEPD) {
00000000 B410 PUSH {R4}
00000002 1C03 MOV R3,R0 ; pEPD
00000004 ---- Variable 'pEPD' assigned to Register 'R3' ----
00000004 ; SCOPE-START
200: num = pEPD->bEndpointAddress & 0x0F;
00000004 1C18 MOV R0,R3 ; pEPD
00000006 7880 LDRB R0,[R0,#0x2]
00000008 1C02 MOV R2,R0
0000000A 210F MOV R1,#0xF
0000000C 4011 AND R1,R2
0000000E ---- Variable 'num' assigned to Register 'R1' ----
201: dir = pEPD->bEndpointAddress & USB_ENDPOINT_DIRECTION_MASK;
0000000E 2080 MOV R0,#0x80
00000010 4002 AND R2,R0
00000012 ---- Variable 'dir' assigned to Register 'R2' ----
203: switch (pEPD->bmAttributes & USB_ENDPOINT_TYPE_MASK) {
00000012 1C18 MOV R0,R3 ; pEPD
00000014 78C0 LDRB R0,[R0,#0x3]
00000016 2303 MOV R3,#0x3
00000018 4018 AND R0,R3
0000001A 2801 CMP R0,#0x1
0000001C D00D BEQ L_17 ; T=0x0000003A
0000001E 2802 CMP R0,#0x2
00000020 D01E BEQ L_18 ; T=0x00000060
00000022 2803 CMP R0,#0x3
00000024 D02F BEQ L_19 ; T=0x00000086
00000026 2800 CMP R0,#0x0
00000028 D140 BNE L_16 ; T=0x000000AC
204: case USB_ENDPOINT_TYPE_CONTROL:
ARM COMPILER V2.53, usbhw 02/11/07 08:22:50 PAGE 14
0000002A L_15:
205: pUDP->UDP_CSR[num] = AT91C_UDP_EPTYPE_CTRL;
0000002A 2000 MOV R0,#0x0
0000002C 1C0C MOV R4,R1 ; num
0000002E 00A4 LSL R4,R4,#0x2 ; num
00000030 4800 LDR R3,=pUDP ; pUDP
00000032 681B LDR R3,[R3,#0x0] ; pUDP
00000034 191B ADD R3,R4
00000036 6318 STR R0,[R3,#0x30]
206: break;
00000038 E03F B L_14 ; T=0x000000BA
207: case USB_ENDPOINT_TYPE_ISOCHRONOUS:
0000003A L_17:
208: if (dir) {
0000003A 1C10 MOV R0,R2 ; dir
0000003C 2800 CMP R0,#0x0 ; dir
0000003E D007 BEQ L_20 ; T=0x00000050
209: pUDP->UDP_CSR[num] = AT91C_UDP_EPTYPE_ISO_IN;
00000040 4800 LDR R0,=0x500
00000042 1C0C MOV R4,R1 ; num
00000044 00A4 LSL R4,R4,#0x2 ; num
00000046 4800 LDR R3,=pUDP ; pUDP
00000048 681B LDR R3,[R3,#0x0] ; pUDP
0000004A 191B ADD R3,R4
0000004C 6318 STR R0,[R3,#0x30]
210: } else {
0000004E E034 B L_14 ; T=0x000000BA
00000050 L_20:
211: pUDP->UDP_CSR[num] = AT91C_UDP_EPTYPE_ISO_OUT;
00000050 4840 LDR R0,=0x100
00000052 1C0C MOV R4,R1 ; num
00000054 00A4 LSL R4,R4,#0x2 ; num
00000056 4800 LDR R3,=pUDP ; pUDP
00000058 681B LDR R3,[R3,#0x0] ; pUDP
0000005A 191B ADD R3,R4
0000005C 6318 STR R0,[R3,#0x30]
213: break;
0000005E E02C B L_14 ; T=0x000000BA
214: case USB_ENDPOINT_TYPE_BULK:
00000060 L_18:
215: if (dir) {
00000060 1C10 MOV R0,R2 ; dir
00000062 2800 CMP R0,#0x0 ; dir
00000064 D007 BEQ L_22 ; T=0x00000076
216: pUDP->UDP_CSR[num] = AT91C_UDP_EPTYPE_BULK_IN;
00000066 4800 LDR R0,=0x600
00000068 1C0C MOV R4,R1 ; num
0000006A 00A4 LSL R4,R4,#0x2 ; num
0000006C 4800 LDR R3,=pUDP ; pUDP
0000006E 681B LDR R3,[R3,#0x0] ; pUDP
00000070 191B ADD R3,R4
00000072 6318 STR R0,[R3,#0x30]
217: } else {
00000074 E021 B L_14 ; T=0x000000BA
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -