📄 usbhw.lst
字号:
0000000E 4800 LDR R0,=0xE0090000
00000010 6800 LDR R0,[R0,#0x0]
00000012 2110 MOV R1,#0x10
00000014 4208 TST R0,R1
00000016 D0FA BEQ L_7 ; T=0x0000000E
92: DEV_INT_CLR = CCEMTY_INT;
00000018 4800 LDR R0,=0xE0090008
0000001A 6001 STR R1,[R0,#0x0]
93: CMD_CODE = val;
0000001C 1C11 MOV R1,R2 ; val
0000001E 4800 LDR R0,=0xE0090010
00000020 6001 STR R1,[R0,#0x0]
94: while ((DEV_INT_STAT & CCEMTY_INT) == 0);
00000022 L_11:
00000022 4800 LDR R0,=0xE0090000
00000024 6800 LDR R0,[R0,#0x0]
00000026 2110 MOV R1,#0x10
00000028 4208 TST R0,R1
0000002A D0FA BEQ L_11 ; T=0x00000022
95: }
0000002C 4770 BX R14
0000002E ENDP ; 'WrCmdDat?T'
*** CODE SEGMENT '?PR?RdCmdDat?T?usbhw':
104: DWORD RdCmdDat (DWORD cmd) {
00000000 ---- Variable 'cmd' assigned to Register 'R0' ----
106: DEV_INT_CLR = CCEMTY_INT | CDFULL_INT;
00000000 2230 MOV R2,#0x30
00000002 4800 LDR R1,=0xE0090008
ARM COMPILER V2.53, usbhw 05/09/06 14:20:49 PAGE 15
00000004 600A STR R2,[R1,#0x0]
107: CMD_CODE = cmd;
00000006 1C01 MOV R1,R0 ; cmd
00000008 4800 LDR R0,=0xE0090010
0000000A 6001 STR R1,[R0,#0x0]
108: while ((DEV_INT_STAT & CDFULL_INT) == 0);
0000000C L_15:
0000000C 4800 LDR R0,=0xE0090000
0000000E 6800 LDR R0,[R0,#0x0]
00000010 2120 MOV R1,#0x20
00000012 4208 TST R0,R1
00000014 D0FA BEQ L_15 ; T=0x0000000C
109: return (CMD_DATA);
00000016 4800 LDR R0,=0xE0090014
00000018 6800 LDR R0,[R0,#0x0]
110: }
0000001A 4770 BX R14
0000001C ENDP ; 'RdCmdDat?T'
*** CODE SEGMENT '?PR?USB_Init?T?usbhw':
119: void USB_Init (void) {
00000000 B500 PUSH {LR}
121: PINSEL1 &= ~0xC000C000;
00000002 4800 LDR R2,=0x3FFF3FFF
00000004 4800 LDR R0,=0xE002C004
00000006 6801 LDR R1,[R0,#0x0]
00000008 4011 AND R1,R2
0000000A 6001 STR R1,[R0,#0x0]
122: PINSEL1 |= 0x40004000; /* Select USB Link, VBUS */
0000000C 4800 LDR R2,=0x40004000
0000000E 4800 LDR R0,=0xE002C004
00000010 6801 LDR R1,[R0,#0x0]
00000012 4311 ORR R1,R2
00000014 6001 STR R1,[R0,#0x0]
124: PCONP |= 0x80000000; /* Turn On USB PCLK */
00000016 4800 LDR R2,=0x80000000
00000018 4800 LDR R0,=0xE01FC0C4
0000001A 6801 LDR R1,[R0,#0x0]
0000001C 4311 ORR R1,R2
0000001E 6001 STR R1,[R0,#0x0]
127: PLL48CFG = 0x23; /* M = 4, P = 2 */
00000020 2123 MOV R1,#0x23
00000022 4800 LDR R0,=0xE01FC0A4
00000024 6001 STR R1,[R0,#0x0]
128: PLL48CON = PLLCON_PLLE; /* PLL Enable */
00000026 2101 MOV R1,#0x1
00000028 4800 LDR R0,=0xE01FC0A0
0000002A 6001 STR R1,[R0,#0x0]
129: PLL48FEED = 0xAA; /* Feed Sequence 1 */
0000002C 21AA MOV R1,#0xAA
0000002E 4800 LDR R0,=0xE01FC0AC
00000030 6001 STR R1,[R0,#0x0]
130: PLL48FEED = 0x55; /* Feed Sequence 2 */
00000032 2155 MOV R1,#0x55
00000034 4800 LDR R0,=0xE01FC0AC
00000036 6001 STR R1,[R0,#0x0]
132: while ((PLL48STAT & PLLSTAT_PLOCK) == 0); /* Wait for PLL Lock */
00000038 L_20:
00000038 4800 LDR R0,=0xE01FC0A8
0000003A 6800 LDR R0,[R0,#0x0]
0000003C 4800 LDR R1,=0x400
0000003E 4208 TST R0,R1
00000040 D0FA BEQ L_20 ; T=0x00000038
134: PLL48CON = PLLCON_PLLE | PLLCON_PLLC; /* PLL Enable & Connect */
00000042 2103 MOV R1,#0x3
00000044 4800 LDR R0,=0xE01FC0A0
00000046 6001 STR R1,[R0,#0x0]
ARM COMPILER V2.53, usbhw 05/09/06 14:20:49 PAGE 16
135: PLL48FEED = 0xAA; /* Feed Sequence 1 */
00000048 21AA MOV R1,#0xAA
0000004A 4800 LDR R0,=0xE01FC0AC
0000004C 6001 STR R1,[R0,#0x0]
136: PLL48FEED = 0x55; /* Feed Sequence 2 */
0000004E 2155 MOV R1,#0x55
00000050 4800 LDR R0,=0xE01FC0AC
00000052 6001 STR R1,[R0,#0x0]
138: VICVectAddr0 = (unsigned long)USB_ISR; /* USB Interrupt -> Vector 0 */
00000054 4900 LDR R1,=USB_ISR?A ; USB_ISR?A
00000056 4800 LDR R0,=0xFFFFF100
00000058 6001 STR R1,[R0,#0x0]
139: VICVectCntl0 = 0x20 | 22; /* USB Interrupt -> IRQ Slot 0 */
0000005A 2136 MOV R1,#0x36
0000005C 4800 LDR R0,=0xFFFFF200
0000005E 6001 STR R1,[R0,#0x0]
140: VICIntEnable = 1 << 22; /* Enable USB Interrupt */
00000060 4800 LDR R1,=0x400000
00000062 4800 LDR R0,=0xFFFFF010
00000064 6001 STR R1,[R0,#0x0]
142: DEV_INT_EN = DEV_STAT_INT; /* Enable Device Status Interrupt */
00000066 2108 MOV R1,#0x8
00000068 4800 LDR R0,=0xE0090004
0000006A 6001 STR R1,[R0,#0x0]
145: USB_Reset();
0000006C F7FF BL USB_Reset?T ; T=0x0001 (1)
0000006E FFC8 BL USB_Reset?T ; T=0x0001 (2)
146: USB_SetAddress(0);
00000070 2000 MOV R0,#0x0
00000072 F7FF BL USB_SetAddress?T ; T=0x0001 (1)
00000074 FFC5 BL USB_SetAddress?T ; T=0x0001 (2)
148: }
00000076 BC08 POP {R3}
00000078 4718 BX R3
0000007A ENDP ; 'USB_Init?T'
*** CODE SEGMENT '?PR?USB_Connect?T?usbhw':
158: void USB_Connect (BOOL con) {
00000000 B500 PUSH {LR}
00000002 1C01 MOV R1,R0 ; con
00000004 ---- Variable 'con' assigned to Register 'R1' ----
159: 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_24 ; T=0x0000000E
0000000A 2101 MOV R1,#0x1
0000000C E000 B L_25 ; T=0x00000010
0000000E L_24:
0000000E 2100 MOV R1,#0x0
00000010 L_25:
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)
160: }
0000001C BC08 POP {R3}
0000001E 4718 BX R3
00000020 ENDP ; 'USB_Connect?T'
*** CODE SEGMENT '?PR?USB_Reset?T?usbhw':
174: EP_INDEX = 0;
00000000 2100 MOV R1,#0x0
00000002 4800 LDR R0,=0xE0090048
00000004 6001 STR R1,[R0,#0x0]
175: MAXPACKET_SIZE = USB_MAX_PACKET0;
00000006 2140 MOV R1,#0x40
ARM COMPILER V2.53, usbhw 05/09/06 14:20:49 PAGE 17
00000008 4800 LDR R0,=0xE009004C
0000000A 6001 STR R1,[R0,#0x0]
176: EP_INDEX = 1;
0000000C 2201 MOV R2,#0x1
0000000E 4800 LDR R0,=0xE0090048
00000010 6002 STR R2,[R0,#0x0]
177: MAXPACKET_SIZE = USB_MAX_PACKET0;
00000012 4800 LDR R0,=0xE009004C
00000014 6001 STR R1,[R0,#0x0]
178: while ((DEV_INT_STAT & EP_RLZED_INT) == 0);
00000016 L_26:
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_26 ; T=0x00000016
180: EP_INT_CLR = 0xFFFFFFFF;
00000020 4800 LDR R1,=0xFFFFFFFF
00000022 4800 LDR R0,=0xE0090038
00000024 6001 STR R1,[R0,#0x0]
181: EP_INT_EN = 0xFFFFFFFF ^ USB_DMA_EP;
00000026 4800 LDR R2,=0xFFFFFFBF
00000028 4800 LDR R0,=0xE0090034
0000002A 6002 STR R2,[R0,#0x0]
182: DEV_INT_CLR = 0xFFFFFFFF;
0000002C 4800 LDR R0,=0xE0090008
0000002E 6001 STR R1,[R0,#0x0]
183: DEV_INT_EN = DEV_STAT_INT | EP_SLOW_INT |
00000030 210D MOV R1,#0xD
00000032 4800 LDR R0,=0xE0090004
00000034 6001 STR R1,[R0,#0x0]
203: }
00000036 4770 BX R14
00000038 ENDP ; 'USB_Reset?T'
*** CODE SEGMENT '?PR?USB_Suspend?T?usbhw':
214: }
00000000 4770 BX R14
00000002 ENDP ; 'USB_Suspend?T'
*** CODE SEGMENT '?PR?USB_Resume?T?usbhw':
225: }
00000000 4770 BX R14
00000002 ENDP ; 'USB_Resume?T'
*** CODE SEGMENT '?PR?USB_WakeUp?T?usbhw':
234: void USB_WakeUp (void) {
00000000 B500 PUSH {LR}
236: 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_30 ; T=0x00000014
237: 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)
238: }
00000014 L_30:
239: }
00000014 BC08 POP {R3}
00000016 4718 BX R3
00000018 ENDP ; 'USB_WakeUp?T'
*** CODE SEGMENT '?PR?USB_WakeUpCfg?T?usbhw':
250: }
00000000 4770 BX R14
00000002 ENDP ; 'USB_WakeUpCfg?T'
ARM COMPILER V2.53, usbhw 05/09/06 14:20:49 PAGE 18
*** CODE SEGMENT '?PR?USB_SetAddress?T?usbhw':
259: void USB_SetAddress (DWORD adr) {
00000000 B510 PUSH {R4,LR}
00000002 1C04 MOV R4,R0 ; adr
00000004 ---- Variable 'adr' assigned to Register 'R4' ----
260: WrCmdDat(CMD_SET_ADDR, DAT_WR_BYTE(DEV_EN | adr)); /* Don't wait for next */
00000004 1C21 MOV R1,R4 ; 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)
261: WrCmdDat(CMD_SET_ADDR, DAT_WR_BYTE(DEV_EN | adr)); /* Setup Status Phase */
00000016 1C21 MOV R1,R4 ; 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)
262: }
00000028 BC10 POP {R4}
0000002A BC08 POP {R3}
0000002C 4718 BX R3
0000002E ENDP ; 'USB_SetAddress?T'
*** CODE SEGMENT '?PR?USB_Configure?T?usbhw':
271: void USB_Configure (BOOL cfg) {
00000000 B500 PUSH {LR}
00000002 1C01 MOV R1,R0 ; cfg
00000004 ---- Variable 'cfg' assigned to Register 'R1' ----
273: 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_31 ; T=0x0000000E
0000000A 2101 MOV R1,#0x1
0000000C E000 B L_32 ; T=0x00000010
0000000E L_31:
0000000E 2100 MOV R1,#0x0
00000010 L_32:
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)
275: REALIZE_EP = 0x00000003;
0000001C 2103 MOV R1,#0x3
0000001E 4800 LDR R0,=0xE0090044
00000020 6001 STR R1,[R0,#0x0]
276: while ((DEV_INT_STAT & EP_RLZED_INT) == 0);
00000022 L_33:
00000022 4800 LDR R0,=0xE0090000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -