📄 usbhw.lst
字号:
0000002E 6001 STR R1,[R0,#0x0]
273: }
00000030 BC08 POP {R3}
00000032 4718 BX R3
00000034 ENDP ; 'USB_Configure?T'
*** CODE SEGMENT '?PR?USB_ConfigEP?T?usbhw':
282: void USB_ConfigEP (USB_ENDPOINT_DESCRIPTOR *pEPD) {
00000000 B510 PUSH {R4,LR}
00000002 1C04 MOV R4,R0 ; pEPD
00000004 ---- Variable 'pEPD' assigned to Register 'R4' ----
00000004 ; SCOPE-START
285: num = EPAdr(pEPD->bEndpointAddress);
00000004 1C20 MOV R0,R4 ; pEPD
00000006 7880 LDRB R0,[R0,#0x2]
00000008 F7FF BL EPAdr?T ; T=0x0001 (1)
0000000A FFFA BL EPAdr?T ; T=0x0001 (2)
0000000C ---- Variable 'num' assigned to Register 'R0' ----
286: REALIZE_EP |= (1 << num);
0000000C 1C01 MOV R1,R0 ; num
0000000E 2301 MOV R3,#0x1
00000010 408B LSL R3,R1
00000012 4800 LDR R1,=0xE0090044
00000014 680A LDR R2,[R1,#0x0]
00000016 431A ORR R2,R3
00000018 600A STR R2,[R1,#0x0]
287: EP_INDEX = num;
0000001A 1C01 MOV R1,R0 ; num
0000001C 4800 LDR R0,=0xE0090048
0000001E 6001 STR R1,[R0,#0x0]
288: MAXPACKET_SIZE = pEPD->wMaxPacketSize;
00000020 1C21 MOV R1,R4 ; pEPD
00000022 3104 ADD R1,#0x4
00000024 7808 LDRB R0,[R1,#0x0]
00000026 784A LDRB R2,[R1,#0x1]
00000028 0212 LSL R2,R2,#0x8
0000002A 4310 ORR R0,R2
0000002C 1C01 MOV R1,R0
0000002E 4800 LDR R0,=0xE009004C
00000030 6001 STR R1,[R0,#0x0]
289: while ((DEV_INT_STAT & EP_RLZED_INT) == 0);
00000032 L_41:
00000032 4800 LDR R0,=0xE0090000
00000034 6800 LDR R0,[R0,#0x0]
00000036 4940 LDR R1,=0x100
00000038 4208 TST R0,R1
0000003A D0FA BEQ L_41 ; T=0x00000032
290: DEV_INT_CLR = EP_RLZED_INT;
0000003C 4800 LDR R0,=0xE0090008
0000003E 6001 STR R1,[R0,#0x0]
00000040 ; SCOPE-END
291: }
00000040 BC10 POP {R4}
00000042 BC08 POP {R3}
00000044 4718 BX R3
00000046 ENDP ; 'USB_ConfigEP?T'
*** CODE SEGMENT '?PR?USB_DirCtrlEP?T?usbhw':
302: }
00000000 4770 BX R14
00000002 ENDP ; 'USB_DirCtrlEP?T'
*** CODE SEGMENT '?PR?USB_EnableEP?T?usbhw':
313: void USB_EnableEP (DWORD EPNum) {
00000000 B500 PUSH {LR}
00000002 1C01 MOV R1,R0 ; EPNum
00000004 ---- Variable 'EPNum' assigned to Register 'R1' ----
314: WrCmdDat(CMD_SET_EP_STAT(EPAdr(EPNum)), DAT_WR_BYTE(0));
ARM COMPILER V2.42b, usbhw 02/01/06 23:45:15 PAGE 20
00000004 1C08 MOV R0,R1 ; EPNum
00000006 F7FF BL EPAdr?T ; T=0x0001 (1)
00000008 FFFB BL EPAdr?T ; T=0x0001 (2)
0000000A 0400 LSL R0,R0,#0x10 ; EPAdr?T
0000000C 4800 LDR R1,=0x400500
0000000E 4308 ORR R0,R1
00000010 4940 LDR R1,=0x100
00000012 F7FF BL WrCmdDat?T ; T=0x0001 (1)
00000014 FFF5 BL WrCmdDat?T ; T=0x0001 (2)
315: }
00000016 BC08 POP {R3}
00000018 4718 BX R3
0000001A ENDP ; 'USB_EnableEP?T'
*** CODE SEGMENT '?PR?USB_DisableEP?T?usbhw':
326: void USB_DisableEP (DWORD EPNum) {
00000000 B500 PUSH {LR}
00000002 1C01 MOV R1,R0 ; EPNum
00000004 ---- Variable 'EPNum' assigned to Register 'R1' ----
327: WrCmdDat(CMD_SET_EP_STAT(EPAdr(EPNum)), DAT_WR_BYTE(EP_STAT_DA));
00000004 1C08 MOV R0,R1 ; EPNum
00000006 F7FF BL EPAdr?T ; T=0x0001 (1)
00000008 FFFB BL EPAdr?T ; T=0x0001 (2)
0000000A 0400 LSL R0,R0,#0x10 ; EPAdr?T
0000000C 4800 LDR R1,=0x400500
0000000E 4308 ORR R0,R1
00000010 4800 LDR R1,=0x200100
00000012 F7FF BL WrCmdDat?T ; T=0x0001 (1)
00000014 FFF5 BL WrCmdDat?T ; T=0x0001 (2)
328: }
00000016 BC08 POP {R3}
00000018 4718 BX R3
0000001A ENDP ; 'USB_DisableEP?T'
*** CODE SEGMENT '?PR?USB_ResetEP?T?usbhw':
339: void USB_ResetEP (DWORD EPNum) {
00000000 B500 PUSH {LR}
00000002 1C01 MOV R1,R0 ; EPNum
00000004 ---- Variable 'EPNum' assigned to Register 'R1' ----
340: WrCmdDat(CMD_SET_EP_STAT(EPAdr(EPNum)), DAT_WR_BYTE(0));
00000004 1C08 MOV R0,R1 ; EPNum
00000006 F7FF BL EPAdr?T ; T=0x0001 (1)
00000008 FFFB BL EPAdr?T ; T=0x0001 (2)
0000000A 0400 LSL R0,R0,#0x10 ; EPAdr?T
0000000C 4800 LDR R1,=0x400500
0000000E 4308 ORR R0,R1
00000010 4940 LDR R1,=0x100
00000012 F7FF BL WrCmdDat?T ; T=0x0001 (1)
00000014 FFF5 BL WrCmdDat?T ; T=0x0001 (2)
341: }
00000016 BC08 POP {R3}
00000018 4718 BX R3
0000001A ENDP ; 'USB_ResetEP?T'
*** CODE SEGMENT '?PR?USB_SetStallEP?T?usbhw':
352: void USB_SetStallEP (DWORD EPNum) {
00000000 B500 PUSH {LR}
00000002 1C01 MOV R1,R0 ; EPNum
00000004 ---- Variable 'EPNum' assigned to Register 'R1' ----
353: WrCmdDat(CMD_SET_EP_STAT(EPAdr(EPNum)), DAT_WR_BYTE(EP_STAT_ST));
00000004 1C08 MOV R0,R1 ; EPNum
00000006 F7FF BL EPAdr?T ; T=0x0001 (1)
00000008 FFFB BL EPAdr?T ; T=0x0001 (2)
0000000A 0400 LSL R0,R0,#0x10 ; EPAdr?T
0000000C 4800 LDR R1,=0x400500
0000000E 4308 ORR R0,R1
00000010 4800 LDR R1,=0x10100
00000012 F7FF BL WrCmdDat?T ; T=0x0001 (1)
00000014 FFF5 BL WrCmdDat?T ; T=0x0001 (2)
ARM COMPILER V2.42b, usbhw 02/01/06 23:45:15 PAGE 21
354: }
00000016 BC08 POP {R3}
00000018 4718 BX R3
0000001A ENDP ; 'USB_SetStallEP?T'
*** CODE SEGMENT '?PR?USB_ClrStallEP?T?usbhw':
365: void USB_ClrStallEP (DWORD EPNum) {
00000000 B500 PUSH {LR}
00000002 1C01 MOV R1,R0 ; EPNum
00000004 ---- Variable 'EPNum' assigned to Register 'R1' ----
366: WrCmdDat(CMD_SET_EP_STAT(EPAdr(EPNum)), DAT_WR_BYTE(0));
00000004 1C08 MOV R0,R1 ; EPNum
00000006 F7FF BL EPAdr?T ; T=0x0001 (1)
00000008 FFFB BL EPAdr?T ; T=0x0001 (2)
0000000A 0400 LSL R0,R0,#0x10 ; EPAdr?T
0000000C 4800 LDR R1,=0x400500
0000000E 4308 ORR R0,R1
00000010 4940 LDR R1,=0x100
00000012 F7FF BL WrCmdDat?T ; T=0x0001 (1)
00000014 FFF5 BL WrCmdDat?T ; T=0x0001 (2)
367: }
00000016 BC08 POP {R3}
00000018 4718 BX R3
0000001A ENDP ; 'USB_ClrStallEP?T'
*** CODE SEGMENT '?PR?USB_ReadEP?T?usbhw':
379: DWORD USB_ReadEP (DWORD EPNum, BYTE *pData) {
00000000 B570 PUSH {R4-R6,LR}
00000002 ---- Variable 'pData' assigned to Register 'R1' ----
00000002 1C03 MOV R3,R0 ; EPNum
00000004 ---- Variable 'EPNum' assigned to Register 'R3' ----
00000004 ---- Variable 'cnt' assigned to Register 'R4' ----
00000004 ; SCOPE-START
382: USB_CTRL = ((EPNum & 0x0F) << 2) | CTRL_RD_EN;
00000004 1C1A MOV R2,R3 ; EPNum
00000006 200F MOV R0,#0xF
00000008 4002 AND R2,R0
0000000A 0092 LSL R2,R2,#0x2
0000000C 2001 MOV R0,#0x1
0000000E 4302 ORR R2,R0
00000010 4800 LDR R0,=0xE0090028
00000012 6002 STR R2,[R0,#0x0]
384: do {
00000014 L_45:
385: cnt = RX_PLENGTH;
00000014 4800 LDR R0,=0xE0090020
00000016 6804 LDR R4,[R0,#0x0]
386: } while ((cnt & PKT_RDY) == 0);
00000018 1C20 MOV R0,R4 ; cnt
0000001A 4800 LDR R2,=0x800
0000001C 4210 TST R0,R2 ; cnt
0000001E D0F9 BEQ L_45 ; T=0x00000014
387: cnt &= PKT_LNGTH_MASK;
00000020 4800 LDR R0,=0x3FF
00000022 4004 AND R4,R0
389: for (n = 0; n < (cnt + 3) / 4; n++) {
00000024 2000 MOV R0,#0x0
00000026 ---- Variable 'n' assigned to Register 'R0' ----
00000026 E00B B L_51 ; T=0x00000040
00000028 L_52:
390: *((__packed DWORD *)pData) = RX_DATA;
00000028 4800 LDR R2,=0xE0090018
0000002A 6816 LDR R6,[R2,#0x0]
0000002C 1C0D MOV R5,R1 ; pData
0000002E 702E STRB R6,[R5,#0x0] ; pData
00000030 0A36 LSR R6,R6,#0x8
00000032 706E STRB R6,[R5,#0x1] ; pData
00000034 0A36 LSR R6,R6,#0x8
ARM COMPILER V2.42b, usbhw 02/01/06 23:45:15 PAGE 22
00000036 70AE STRB R6,[R5,#0x2] ; pData
00000038 0A36 LSR R6,R6,#0x8
0000003A 70EE STRB R6,[R5,#0x3] ; pData
391: pData += 4;
0000003C 3104 ADD R1,#0x4
392: }
0000003E 3001 ADD R0,#0x1
00000040 L_51:
00000040 1C25 MOV R5,R4 ; cnt
00000042 3503 ADD R5,#0x3
00000044 08AD LSR R5,R5,#0x2
00000046 1C02 MOV R2,R0 ; n
00000048 42AA CMP R2,R5 ; n
0000004A D3ED BCC L_52 ; T=0x00000028
394: USB_CTRL = 0;
0000004C 2100 MOV R1,#0x0
0000004E 4800 LDR R0,=0xE0090028
00000050 6001 STR R1,[R0,#0x0]
396: if (((EP_MSK_ISO >> EPNum) & 1) == 0) { /* Non-Isochronous Endpoint */
00000052 1C19 MOV R1,R3 ; EPNum
00000054 4800 LDR R0,=0x1248
00000056 4108 ASR R0,R1
00000058 2101 MOV R1,#0x1
0000005A 4208 TST R0,R1
0000005C D10A BNE L_54 ; T=0x00000074
397: WrCmd(CMD_SEL_EP(EPAdr(EPNum)));
0000005E 1C18 MOV R0,R3 ; EPNum
00000060 F7FF BL EPAdr?T ; T=0x0001 (1)
00000062 FFCE BL EPAdr?T ; T=0x0001 (2)
00000064 0400 LSL R0,R0,#0x10 ; EPAdr?T
00000066 4800 LDR R1,=0x500
00000068 4308 ORR R0,R1
0000006A F7FF BL WrCmd?T ; T=0x0001 (1)
0000006C FFC9 BL WrCmd?T ; T=0x0001 (2)
398: WrCmd(CMD_CLR_BUF);
0000006E 4800 LDR R0,=0xF20500
00000070 F7FF BL WrCmd?T ; T=0x0001 (1)
00000072 FFC6 BL WrCmd?T ; T=0x0001 (2)
399: }
00000074 L_54:
401: return (cnt);
00000074 1C20 MOV R0,R4 ; cnt
00000076 ; SCOPE-END
402: }
00000076 BC70 POP {R4-R6}
00000078 BC08 POP {R3}
0000007A 4718 BX R3
0000007C ENDP ; 'USB_ReadEP?T'
*** CODE SEGMENT '?PR?USB_WriteEP?T?usbhw':
415: DWORD USB_WriteEP (DWORD EPNum, BYTE *pData, DWORD cnt) {
00000000 B570 PUSH {R4-R6,LR}
00000002 1C14 MOV R4,R2 ; cnt
00000004 ---- Variable 'cnt' assigned to Register 'R4' ----
00000004 ---- Variable 'pData' assigned to Register 'R1' ----
00000004 1C03 MOV R3,R0 ; EPNum
00000006 ---- Variable 'EPNum' assigned to Register 'R3' ----
00000006 ; SCOPE-START
418: USB_CTRL = ((EPNum & 0x0F) << 2) | CTRL_WR_EN;
00000006 1C1A MOV R2,R3 ; EPNum
00000008 200F MOV R0,#0xF
0000000A 4002 AND R2,R0
0000000C 0092 LSL R2,R2,#0x2
0000000E 2002 MOV R0,#0x2
00000010 4302 ORR R2,R0
00000012 4800 LDR R0,=0xE0090028
00000014 6002 STR R2,[R0,#0x0]
ARM COMPILER V2.42b, usbhw 02/01/06 23:45:15 PAGE 23
420: TX_PLENGTH = cnt;
00000016 1C22 MOV R2,R4 ; cnt
00000018 4800 LDR R0,=0xE0090024
0000001A 6002 STR R2,[R0,#0x0]
422: for (n = 0; n < (cnt + 3) / 4; n++) {
0000001C 2500 MOV R5,#0x0
0000001E ---- Variable 'n' assigned to Register 'R5' ----
0000001E E00E B L_58 ; T=0x0000003E
00000020 L_59:
423: TX_DATA = *((__packed DWORD *)pData);
00000020 1C0E MOV R6,R1 ; pData
00000022 7832 LDRB R2,[R6,#0x0] ; pData
00000024 7870 LDRB R0,[R6,#0x1] ; pData
00000026 0200 LSL R0,R0,#0x8
00000028 4302 ORR R2,R0
0000002A 78B0 LDRB R0,[R6,#0x2] ; pData
0000002C 0400 LSL R0,R0,#0x10
0000002E 4302 ORR R2,R0
00000030 78F0 LDRB R0,[R6,#0x3] ; pData
00000032 0600
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -