📄 usbhw.lst
字号:
0000001C L_11:
0000001C 4800 LDR R0,=0xE0090000
0000001E 6800 LDR R0,[R0,#0x0]
00000020 2110 MOV R1,#0x10
00000022 4208 TST R0,R1
00000024 D0FA BEQ L_11 ; T=0x0000001C
87: DEV_INT_CLR = CCEMTY_INT;
00000026 4800 LDR R0,=0xE0090008
00000028 6001 STR R1,[R0,#0x0]
88: }
0000002A 4770 BX R14
0000002C ENDP ; 'WrCmdDat?T'
*** CODE SEGMENT '?PR?RdCmdDat?T?usbhw':
97: DWORD RdCmdDat (DWORD cmd) {
00000000 ---- Variable 'cmd' assigned to Register 'R0' ----
00000000 ; SCOPE-START
100: DEV_INT_CLR = CDFULL_INT;
00000000 2220 MOV R2,#0x20
ARM COMPILER V2.42b, usbhw 02/01/06 23:45:15 PAGE 15
00000002 4800 LDR R1,=0xE0090008
00000004 600A STR R2,[R1,#0x0]
101: CMD_CODE = cmd;
00000006 1C01 MOV R1,R0 ; cmd
00000008 4800 LDR R0,=0xE0090010
0000000A 6001 STR R1,[R0,#0x0]
102: while ((DEV_INT_STAT & CCEMTY_INT) == 0);
0000000C L_15:
0000000C 4800 LDR R0,=0xE0090000
0000000E 6800 LDR R0,[R0,#0x0]
00000010 2110 MOV R1,#0x10
00000012 4208 TST R0,R1
00000014 D0FA BEQ L_15 ; T=0x0000000C
103: DEV_INT_CLR = CCEMTY_INT;
00000016 4800 LDR R0,=0xE0090008
00000018 6001 STR R1,[R0,#0x0]
104: while ((DEV_INT_STAT & CDFULL_INT) == 0);
0000001A L_19:
0000001A 4800 LDR R0,=0xE0090000
0000001C 6800 LDR R0,[R0,#0x0]
0000001E 2220 MOV R2,#0x20
00000020 4210 TST R0,R2
00000022 D0FA BEQ L_19 ; T=0x0000001A
105: val = CMD_DATA;
00000024 4800 LDR R0,=0xE0090014
00000026 6801 LDR R1,[R0,#0x0]
00000028 ---- Variable 'val' assigned to Register 'R1' ----
106: DEV_INT_CLR = CDFULL_INT;
00000028 4800 LDR R0,=0xE0090008
0000002A 6002 STR R2,[R0,#0x0]
107: return (val);
0000002C 1C08 MOV R0,R1 ; val
0000002E ; SCOPE-END
108: }
0000002E 4770 BX R14
00000030 ENDP ; 'RdCmdDat?T'
*** CODE SEGMENT '?PR?USB_Init?T?usbhw':
117: void USB_Init (void) {
00000000 B500 PUSH {LR}
119: PCONP |= 0x80000000; /* Turn On USB PCLK */
00000002 4800 LDR R2,=0x80000000
00000004 4800 LDR R0,=0xE01FC0C4
00000006 6801 LDR R1,[R0,#0x0]
00000008 4311 ORR R1,R2
0000000A 6001 STR R1,[R0,#0x0]
122: PLL48CFG = 0x23; /* M = 4, P = 2 */
0000000C 2123 MOV R1,#0x23
0000000E 4800 LDR R0,=0xE01FC0A4
00000010 6001 STR R1,[R0,#0x0]
123: PLL48CON = PLLCON_PLLE; /* PLL Enable */
00000012 2101 MOV R1,#0x1
00000014 4800 LDR R0,=0xE01FC0A0
00000016 6001 STR R1,[R0,#0x0]
124: PLL48FEED = 0xAA; /* Feed Sequence 1 */
00000018 21AA MOV R1,#0xAA
0000001A 4800 LDR R0,=0xE01FC0AC
0000001C 6001 STR R1,[R0,#0x0]
125: PLL48FEED = 0x55; /* Feed Sequence 2 */
0000001E 2155 MOV R1,#0x55
00000020 4800 LDR R0,=0xE01FC0AC
00000022 6001 STR R1,[R0,#0x0]
127: while ((PLL48STAT & PLLSTAT_PLOCK) == 0); /* Wait for PLL Lock */
00000024 L_24:
00000024 4800 LDR R0,=0xE01FC0A8
00000026 6800 LDR R0,[R0,#0x0]
00000028 4800 LDR R1,=0x400
ARM COMPILER V2.42b, usbhw 02/01/06 23:45:15 PAGE 16
0000002A 4208 TST R0,R1
0000002C D0FA BEQ L_24 ; T=0x00000024
129: PLL48CON = PLLCON_PLLE | PLLCON_PLLC; /* PLL Enable & Connect */
0000002E 2103 MOV R1,#0x3
00000030 4800 LDR R0,=0xE01FC0A0
00000032 6001 STR R1,[R0,#0x0]
130: PLL48FEED = 0xAA; /* Feed Sequence 1 */
00000034 21AA MOV R1,#0xAA
00000036 4800 LDR R0,=0xE01FC0AC
00000038 6001 STR R1,[R0,#0x0]
131: PLL48FEED = 0x55; /* Feed Sequence 2 */
0000003A 2155 MOV R1,#0x55
0000003C 4800 LDR R0,=0xE01FC0AC
0000003E 6001 STR R1,[R0,#0x0]
133: VICVectAddr0 = (unsigned long)USB_ISR; /* USB Interrupt -> Vector 0 */
00000040 4900 LDR R1,=USB_ISR?A ; USB_ISR?A
00000042 4800 LDR R0,=0xFFFFF100
00000044 6001 STR R1,[R0,#0x0]
134: VICVectCntl0 = 0x20 | 22; /* USB Interrupt -> IRQ Slot 0 */
00000046 2136 MOV R1,#0x36
00000048 4800 LDR R0,=0xFFFFF200
0000004A 6001 STR R1,[R0,#0x0]
135: VICIntEnable = 1 << 22; /* Enable USB Interrupt */
0000004C 4800 LDR R1,=0x400000
0000004E 4800 LDR R0,=0xFFFFF010
00000050 6001 STR R1,[R0,#0x0]
137: DEV_INT_EN = DEV_STAT_INT; /* Enable Device Status Interrupt */
00000052 2108 MOV R1,#0x8
00000054 4800 LDR R0,=0xE0090004
00000056 6001 STR R1,[R0,#0x0]
140: USB_Reset();
00000058 F7FF BL USB_Reset?T ; T=0x0001 (1)
0000005A FFD2 BL USB_Reset?T ; T=0x0001 (2)
141: USB_SetAddress(0);
0000005C 2000 MOV R0,#0x0
0000005E F7FF BL USB_SetAddress?T ; T=0x0001 (1)
00000060 FFCF BL USB_SetAddress?T ; T=0x0001 (2)
143: }
00000062 BC08 POP {R3}
00000064 4718 BX R3
00000066 ENDP ; 'USB_Init?T'
*** CODE SEGMENT '?PR?USB_Connect?T?usbhw':
153: void USB_Connect (BOOL con) {
00000000 B500 PUSH {LR}
00000002 1C01 MOV R1,R0 ; con
00000004 ---- Variable 'con' assigned to Register 'R1' ----
154: WrCmdDat(CMD_SET_DEV_STAT, DAT_WR_BYTE(con ? DEV_CON : 0));
00000004 1C08 MOV R0,R1 ; con
00000006 2800 CMP R0,#0x0 ; con
00000008 D001 BEQ L_28 ; T=0x0000000E
0000000A 2101 MOV R1,#0x1
0000000C E000 B L_29 ; T=0x00000010
0000000E L_28:
0000000E 2100 MOV R1,#0x0
00000010 L_29:
00000010 0409 LSL R1,R1,#0x10
00000012 4840 LDR R0,=0x100
00000014 4301 ORR R1,R0
00000016 4800 LDR R0,=0xFE0500
00000018 F7FF BL WrCmdDat?T ; T=0x0001 (1)
0000001A FFF2 BL WrCmdDat?T ; T=0x0001 (2)
155: }
0000001C BC08 POP {R3}
0000001E 4718 BX R3
00000020 ENDP ; 'USB_Connect?T'
*** CODE SEGMENT '?PR?USB_Reset?T?usbhw':
ARM COMPILER V2.42b, usbhw 02/01/06 23:45:15 PAGE 17
169: EP_INDEX = 0;
00000000 2100 MOV R1,#0x0
00000002 4800 LDR R0,=0xE0090048
00000004 6001 STR R1,[R0,#0x0]
170: MAXPACKET_SIZE = USB_MAX_PACKET0;
00000006 2140 MOV R1,#0x40
00000008 4800 LDR R0,=0xE009004C
0000000A 6001 STR R1,[R0,#0x0]
171: EP_INDEX = 1;
0000000C 2201 MOV R2,#0x1
0000000E 4800 LDR R0,=0xE0090048
00000010 6002 STR R2,[R0,#0x0]
172: MAXPACKET_SIZE = USB_MAX_PACKET0;
00000012 4800 LDR R0,=0xE009004C
00000014 6001 STR R1,[R0,#0x0]
173: while ((DEV_INT_STAT & EP_RLZED_INT) == 0);
00000016 L_30:
00000016 4800 LDR R0,=0xE0090000
00000018 6800 LDR R0,[R0,#0x0]
0000001A 4940 LDR R1,=0x100
0000001C 4208 TST R0,R1
0000001E D0FA BEQ L_30 ; T=0x00000016
175: EP_INT_CLR = 0xFFFFFFFF;
00000020 4800 LDR R1,=0xFFFFFFFF
00000022 4800 LDR R0,=0xE0090038
00000024 6001 STR R1,[R0,#0x0]
176: EP_INT_EN = 0xFFFFFFFF ^ USB_DMA_EP;
00000026 4800 LDR R0,=0xE0090034
00000028 6001 STR R1,[R0,#0x0]
177: DEV_INT_CLR = 0xFFFFFFFF;
0000002A 4800 LDR R0,=0xE0090008
0000002C 6001 STR R1,[R0,#0x0]
178: DEV_INT_EN = DEV_STAT_INT | EP_SLOW_INT |
0000002E 210C MOV R1,#0xC
00000030 4800 LDR R0,=0xE0090004
00000032 6001 STR R1,[R0,#0x0]
198: }
00000034 4770 BX R14
00000036 ENDP ; 'USB_Reset?T'
*** CODE SEGMENT '?PR?USB_Suspend?T?usbhw':
209: }
00000000 4770 BX R14
00000002 ENDP ; 'USB_Suspend?T'
*** CODE SEGMENT '?PR?USB_Resume?T?usbhw':
220: }
00000000 4770 BX R14
00000002 ENDP ; 'USB_Resume?T'
*** CODE SEGMENT '?PR?USB_WakeUp?T?usbhw':
229: void USB_WakeUp (void) {
00000000 B500 PUSH {LR}
231: if (USB_DeviceStatus & USB_GETSTATUS_REMOTE_WAKEUP) {
00000002 4800 LDR R0,=USB_DeviceStatus ; USB_DeviceStatus
00000004 8800 LDRH R0,[R0,#0x0] ; USB_DeviceStatus
00000006 2102 MOV R1,#0x2
00000008 4208 TST R0,R1
0000000A D003 BEQ L_34 ; T=0x00000014
232: WrCmdDat(CMD_SET_DEV_STAT, DAT_WR_BYTE(DEV_CON));
0000000C 4800 LDR R0,=0xFE0500
0000000E 4800 LDR R1,=0x10100
00000010 F7FF BL WrCmdDat?T ; T=0x0001 (1)
00000012 FFF6 BL WrCmdDat?T ; T=0x0001 (2)
233: }
00000014 L_34:
234: }
00000014 BC08 POP {R3}
00000016 4718 BX R3
ARM COMPILER V2.42b, usbhw 02/01/06 23:45:15 PAGE 18
00000018 ENDP ; 'USB_WakeUp?T'
*** CODE SEGMENT '?PR?USB_WakeUpCfg?T?usbhw':
245: }
00000000 4770 BX R14
00000002 ENDP ; 'USB_WakeUpCfg?T'
*** CODE SEGMENT '?PR?USB_SetAddress?T?usbhw':
254: void USB_SetAddress (DWORD adr) {
00000000 B500 PUSH {LR}
00000002 1C03 MOV R3,R0 ; adr
00000004 ---- Variable 'adr' assigned to Register 'R3' ----
255: WrCmdDat(CMD_SET_ADDR, DAT_WR_BYTE(DEV_EN | adr)); /* Don't wait for next */
00000004 1C19 MOV R1,R3 ; adr
00000006 2080 MOV R0,#0x80
00000008 4301 ORR R1,R0
0000000A 0409 LSL R1,R1,#0x10
0000000C 4840 LDR R0,=0x100
0000000E 4301 ORR R1,R0
00000010 4800 LDR R0,=0xD00500
00000012 F7FF BL WrCmdDat?T ; T=0x0001 (1)
00000014 FFF5 BL WrCmdDat?T ; T=0x0001 (2)
256: WrCmdDat(CMD_SET_ADDR, DAT_WR_BYTE(DEV_EN | adr)); /* Setup Status Phase */
00000016 1C19 MOV R1,R3 ; adr
00000018 2080 MOV R0,#0x80
0000001A 4301 ORR R1,R0
0000001C 0409 LSL R1,R1,#0x10
0000001E 4840 LDR R0,=0x100
00000020 4301 ORR R1,R0
00000022 4800 LDR R0,=0xD00500
00000024 F7FF BL WrCmdDat?T ; T=0x0001 (1)
00000026 FFEC BL WrCmdDat?T ; T=0x0001 (2)
257: }
00000028 BC08 POP {R3}
0000002A 4718 BX R3
0000002C ENDP ; 'USB_SetAddress?T'
*** CODE SEGMENT '?PR?USB_Configure?T?usbhw':
266: void USB_Configure (BOOL cfg) {
00000000 B500 PUSH {LR}
00000002 1C01 MOV R1,R0 ; cfg
00000004 ---- Variable 'cfg' assigned to Register 'R1' ----
268: WrCmdDat(CMD_CFG_DEV, DAT_WR_BYTE(cfg ? CONF_DVICE : 0));
00000004 1C08 MOV R0,R1 ; cfg
00000006 2800 CMP R0,#0x0 ; cfg
00000008 D001 BEQ L_35 ; T=0x0000000E
0000000A 2101 MOV R1,#0x1
0000000C E000 B L_36 ; T=0x00000010
0000000E L_35:
0000000E 2100 MOV R1,#0x0
00000010 L_36:
00000010 0409 LSL R1,R1,#0x10
00000012 4840 LDR R0,=0x100
00000014 4301 ORR R1,R0
00000016 4800 LDR R0,=0xD80500
00000018 F7FF BL WrCmdDat?T ; T=0x0001 (1)
0000001A FFF2 BL WrCmdDat?T ; T=0x0001 (2)
270: REALIZE_EP = 0x00000003;
0000001C 2103 MOV R1,#0x3
0000001E 4800 LDR R0,=0xE0090044
00000020 6001 STR R1,[R0,#0x0]
271: while ((DEV_INT_STAT & EP_RLZED_INT) == 0);
00000022 L_37:
00000022 4800 LDR R0,=0xE0090000
00000024 6800 LDR R0,[R0,#0x0]
00000026 4940 LDR R1,=0x100
00000028 4208 TST R0,R1
0000002A D0FA BEQ L_37 ; T=0x00000022
272: DEV_INT_CLR = EP_RLZED_INT;
ARM COMPILER V2.42b, usbhw 02/01/06 23:45:15 PAGE 19
0000002C 4800 LDR R0,=0xE0090008
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -