📄 usbhw.lst
字号:
46: }
00000016 4770 BX R14
00000018 ENDP ; 'EPAdr?T'
*** CODE SEGMENT '?PR?WrCmd?T?usbhw':
ARM COMPILER V2.53, usbhw 09/06/07 15:42:23 PAGE 10
55: void WrCmd (DWORD cmd) {
00000000 ---- Variable 'cmd' assigned to Register 'R0' ----
57: CMD_CODE = cmd;
00000000 1C01 MOV R1,R0 ; cmd
00000002 4800 LDR R0,=0xE0090010
00000004 6001 STR R1,[R0,#0x0]
58: while ((DEV_INT_STAT & CCEMTY_INT) == 0);
00000006 L_3:
00000006 4800 LDR R0,=0xE0090000
00000008 6800 LDR R0,[R0,#0x0]
0000000A 2110 MOV R1,#0x10
0000000C 4208 TST R0,R1
0000000E D0FA BEQ L_3 ; T=0x00000006
59: DEV_INT_CLR = CCEMTY_INT;
00000010 4800 LDR R0,=0xE0090008
00000012 6001 STR R1,[R0,#0x0]
60: }
00000014 4770 BX R14
00000016 ENDP ; 'WrCmd?T'
*** CODE SEGMENT '?PR?WrCmdDat?T?usbhw':
70: void WrCmdDat (DWORD cmd, DWORD val) {
00000000 1C0A MOV R2,R1 ; val
00000002 ---- Variable 'val' assigned to Register 'R2' ----
00000002 ---- Variable 'cmd' assigned to Register 'R0' ----
72: CMD_CODE = cmd;
00000002 1C01 MOV R1,R0 ; cmd
00000004 4800 LDR R0,=0xE0090010
00000006 6001 STR R1,[R0,#0x0]
73: while ((DEV_INT_STAT & CCEMTY_INT) == 0);
00000008 L_7:
00000008 4800 LDR R0,=0xE0090000
0000000A 6800 LDR R0,[R0,#0x0]
0000000C 2110 MOV R1,#0x10
0000000E 4208 TST R0,R1
00000010 D0FA BEQ L_7 ; T=0x00000008
74: DEV_INT_CLR = CCEMTY_INT;
00000012 4800 LDR R0,=0xE0090008
00000014 6001 STR R1,[R0,#0x0]
75: CMD_CODE = val;
00000016 1C11 MOV R1,R2 ; val
00000018 4800 LDR R0,=0xE0090010
0000001A 6001 STR R1,[R0,#0x0]
76: while ((DEV_INT_STAT & CCEMTY_INT) == 0);
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
77: DEV_INT_CLR = CCEMTY_INT;
00000026 4800 LDR R0,=0xE0090008
00000028 6001 STR R1,[R0,#0x0]
78: }
0000002A 4770 BX R14
0000002C ENDP ; 'WrCmdDat?T'
*** CODE SEGMENT '?PR?RdCmdDat?T?usbhw':
87: DWORD RdCmdDat (DWORD cmd) {
00000000 ---- Variable 'cmd' assigned to Register 'R0' ----
00000000 ; SCOPE-START
90: DEV_INT_CLR = CDFULL_INT;
00000000 2220 MOV R2,#0x20
00000002 4800 LDR R1,=0xE0090008
00000004 600A STR R2,[R1,#0x0]
91: CMD_CODE = cmd;
00000006 1C01 MOV R1,R0 ; cmd
00000008 4800 LDR R0,=0xE0090010
ARM COMPILER V2.53, usbhw 09/06/07 15:42:23 PAGE 11
0000000A 6001 STR R1,[R0,#0x0]
92: 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
93: DEV_INT_CLR = CCEMTY_INT;
00000016 4800 LDR R0,=0xE0090008
00000018 6001 STR R1,[R0,#0x0]
94: 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
95: val = CMD_DATA;
00000024 4800 LDR R0,=0xE0090014
00000026 6801 LDR R1,[R0,#0x0]
00000028 ---- Variable 'val' assigned to Register 'R1' ----
96: DEV_INT_CLR = CDFULL_INT;
00000028 4800 LDR R0,=0xE0090008
0000002A 6002 STR R2,[R0,#0x0]
97: return (val);
0000002C 1C08 MOV R0,R1 ; val
0000002E ; SCOPE-END
98: }
0000002E 4770 BX R14
00000030 ENDP ; 'RdCmdDat?T'
*** CODE SEGMENT '?PR?USB_Init?T?usbhw':
106: void USB_Init (void) {
00000000 B500 PUSH {LR}
108: 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]
111: PLL48CFG = 0x23; /* M = 4, P = 2 */
0000000C 2123 MOV R1,#0x23
0000000E 4800 LDR R0,=0xE01FC0A4
00000010 6001 STR R1,[R0,#0x0]
112: PLL48CON = PLLCON_PLLE; /* PLL Enable */
00000012 2101 MOV R1,#0x1
00000014 4800 LDR R0,=0xE01FC0A0
00000016 6001 STR R1,[R0,#0x0]
113: PLL48FEED = 0xAA; /* Feed Sequence 1 */
00000018 21AA MOV R1,#0xAA
0000001A 4800 LDR R0,=0xE01FC0AC
0000001C 6001 STR R1,[R0,#0x0]
114: PLL48FEED = 0x55; /* Feed Sequence 2 */
0000001E 2155 MOV R1,#0x55
00000020 4800 LDR R0,=0xE01FC0AC
00000022 6001 STR R1,[R0,#0x0]
116: 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
0000002A 4208 TST R0,R1
0000002C D0FA BEQ L_24 ; T=0x00000024
118: PLL48CON = PLLCON_PLLE | PLLCON_PLLC; /* PLL Enable & Connect */
0000002E 2103 MOV R1,#0x3
00000030 4800 LDR R0,=0xE01FC0A0
ARM COMPILER V2.53, usbhw 09/06/07 15:42:23 PAGE 12
00000032 6001 STR R1,[R0,#0x0]
119: PLL48FEED = 0xAA; /* Feed Sequence 1 */
00000034 21AA MOV R1,#0xAA
00000036 4800 LDR R0,=0xE01FC0AC
00000038 6001 STR R1,[R0,#0x0]
120: PLL48FEED = 0x55; /* Feed Sequence 2 */
0000003A 2155 MOV R1,#0x55
0000003C 4800 LDR R0,=0xE01FC0AC
0000003E 6001 STR R1,[R0,#0x0]
122: 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]
123: VICVectCntl0 = 0x20 | 22; /* USB Interrupt -> IRQ Slot 0 */
00000046 2136 MOV R1,#0x36
00000048 4800 LDR R0,=0xFFFFF200
0000004A 6001 STR R1,[R0,#0x0]
124: VICIntEnable = 1 << 22; /* Enable USB Interrupt */
0000004C 4800 LDR R1,=0x400000
0000004E 4800 LDR R0,=0xFFFFF010
00000050 6001 STR R1,[R0,#0x0]
126: 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]
129: USB_Reset();
00000058 F7FF BL USB_Reset?T ; T=0x0001 (1)
0000005A FFD2 BL USB_Reset?T ; T=0x0001 (2)
130: 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)
132: }
00000062 BC08 POP {R3}
00000064 4718 BX R3
00000066 ENDP ; 'USB_Init?T'
*** CODE SEGMENT '?PR?USB_Connect?T?usbhw':
141: void USB_Connect (BOOL con) {
00000000 B500 PUSH {LR}
00000002 1C01 MOV R1,R0 ; con
00000004 ---- Variable 'con' assigned to Register 'R1' ----
142: 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)
143: }
0000001C BC08 POP {R3}
0000001E 4718 BX R3
00000020 ENDP ; 'USB_Connect?T'
*** CODE SEGMENT '?PR?USB_Reset?T?usbhw':
153: EP_INDEX = 0;
00000000 2100 MOV R1,#0x0
00000002 4800 LDR R0,=0xE0090048
00000004 6001 STR R1,[R0,#0x0]
154: MAXPACKET_SIZE = USB_MAX_PACKET0;
ARM COMPILER V2.53, usbhw 09/06/07 15:42:23 PAGE 13
00000006 2140 MOV R1,#0x40
00000008 4800 LDR R0,=0xE009004C
0000000A 6001 STR R1,[R0,#0x0]
155: EP_INDEX = 1;
0000000C 2201 MOV R2,#0x1
0000000E 4800 LDR R0,=0xE0090048
00000010 6002 STR R2,[R0,#0x0]
156: MAXPACKET_SIZE = USB_MAX_PACKET0;
00000012 4800 LDR R0,=0xE009004C
00000014 6001 STR R1,[R0,#0x0]
157: 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
159: EP_INT_CLR = 0xFFFFFFFF;
00000020 4800 LDR R1,=0xFFFFFFFF
00000022 4800 LDR R0,=0xE0090038
00000024 6001 STR R1,[R0,#0x0]
160: EP_INT_EN = 0xFFFFFFFF;
00000026 4800 LDR R0,=0xE0090034
00000028 6001 STR R1,[R0,#0x0]
161: DEV_INT_CLR = 0xFFFFFFFF;
0000002A 4800 LDR R0,=0xE0090008
0000002C 6001 STR R1,[R0,#0x0]
162: 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]
165: }
00000034 4770 BX R14
00000036 ENDP ; 'USB_Reset?T'
*** CODE SEGMENT '?PR?USB_Suspend?T?usbhw':
175: }
00000000 4770 BX R14
00000002 ENDP ; 'USB_Suspend?T'
*** CODE SEGMENT '?PR?USB_Resume?T?usbhw':
185: }
00000000 4770 BX R14
00000002 ENDP ; 'USB_Resume?T'
*** CODE SEGMENT '?PR?USB_WakeUp?T?usbhw':
193: void USB_WakeUp (void) {
00000000 B500 PUSH {LR}
195: 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
196: 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)
197: }
00000014 L_34:
198: }
00000014 BC08 POP {R3}
00000016 4718 BX R3
00000018 ENDP ; 'USB_WakeUp?T'
*** CODE SEGMENT '?PR?USB_WakeUpCfg?T?usbhw':
209: }
00000000 4770 BX R14
00000002 ENDP ; 'USB_WakeUpCfg?T'
ARM COMPILER V2.53, usbhw 09/06/07 15:42:23 PAGE 14
*** CODE SEGMENT '?PR?USB_SetAddress?T?usbhw':
218: void USB_SetAddress (BYTE adr) {
00000000 B500 PUSH {LR}
00000002 1C03 MOV R3,R0 ; adr
00000004 ---- Variable 'adr' assigned to Register 'R3' ----
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -