📄 usbcore.lst
字号:
68: USB_DeviceStatus = USB_POWER;
00000000 2100 MOV R1,#0x0
00000002 4800 LDR R0,=USB_DeviceStatus ; USB_DeviceStatus
00000004 8001 STRH R1,[R0,#0x0] ; USB_DeviceStatus
69: USB_DeviceAddress = 0;
00000006 2100 MOV R1,#0x0
00000008 4800 LDR R0,=USB_DeviceAddress ; USB_DeviceAddress
0000000A 7001 STRB R1,[R0,#0x0] ; USB_DeviceAddress
70: USB_Configuration = 0;
0000000C 4800 LDR R0,=USB_Configuration ; USB_Configuration
0000000E 7001 STRB R1,[R0,#0x0] ; USB_Configuration
71: USB_EndPointMask = 0x00010001;
00000010 4800 LDR R1,=0x10001
00000012 4800 LDR R0,=USB_EndPointMask ; USB_EndPointMask
00000014 6001 STR R1,[R0,#0x0] ; USB_EndPointMask
72: USB_EndPointHalt = 0x00000000;
00000016 2100 MOV R1,#0x0
00000018 4800 LDR R0,=USB_EndPointHalt ; USB_EndPointHalt
0000001A 6001 STR R1,[R0,#0x0] ; USB_EndPointHalt
73: }
0000001C 4770 BX R14
0000001E ENDP ; 'USB_ResetCore?T'
*** CODE SEGMENT '?PR?USB_SetupStage?T?usbcore':
82: void USB_SetupStage (void) {
00000000 B500 PUSH {LR}
83: USB_ReadEP(0x00, (BYTE *)&SetupPacket);
00000002 4800 LDR R1,=SetupPacket ; SetupPacket
00000004 2000 MOV R0,#0x0
00000006 F7FF BL USB_ReadEP?T ; T=0x0001 (1)
00000008 FFFB BL USB_ReadEP?T ; T=0x0001 (2)
84: }
0000000A BC08 POP {R3}
0000000C 4718 BX R3
0000000E ENDP ; 'USB_SetupStage?T'
*** CODE SEGMENT '?PR?USB_DataInStage?T?usbcore':
93: void USB_DataInStage (void) {
00000000 B510 PUSH {R4,LR}
00000002 ---- Variable 'cnt' assigned to Register 'R4' ----
00000002 ; SCOPE-START
96: if (EP0Data.Count > USB_MAX_PACKET0) {
00000002 4800 LDR R0,=EP0Data + 0x4 ; EP0Data+4
00000004 8800 LDRH R0,[R0,#0x0] ; EP0Data+4
00000006 1C01 MOV R1,R0
00000008 2940 CMP R1,#0x40
0000000A D901 BLS L_1 ; T=0x00000010
97: cnt = USB_MAX_PACKET0;
0000000C 2440 MOV R4,#0x40
98: } else {
0000000E E000 B L_2 ; T=0x00000012
00000010 L_1:
99: cnt = EP0Data.Count;
00000010 1C04 MOV R4,R0
100: }
00000012 L_2:
101: cnt = USB_WriteEP(0x80, EP0Data.pData, cnt);
00000012 4800 LDR R0,=EP0Data ; EP0Data
00000014 6801 LDR R1,[R0,#0x0] ; EP0Data
00000016 1C22 MOV R2,R4 ; cnt
00000018 2080 MOV R0,#0x80
0000001A F7FF BL USB_WriteEP?T ; T=0x0001 (1)
0000001C FFF1 BL USB_WriteEP?T ; T=0x0001 (2)
0000001E 1C04 MOV R4,R0 ; cnt
102: EP0Data.pData += cnt;
00000020 1C22 MOV R2,R4 ; cnt
00000022 4800 LDR R0,=EP0Data ; EP0Data
00000024 6801 LDR R1,[R0,#0x0] ; EP0Data
ARM COMPILER V2.50a, usbcore 27/03/06 17:22:53 PAGE 15
00000026 1889 ADD R1,R2
00000028 6001 STR R1,[R0,#0x0] ; EP0Data
103: EP0Data.Count -= cnt;
0000002A 1C22 MOV R2,R4 ; cnt
0000002C 0412 LSL R2,R2,#0x10 ; cnt
0000002E 0C12 LSR R2,R2,#0x10
00000030 4800 LDR R0,=EP0Data + 0x4 ; EP0Data+4
00000032 8801 LDRH R1,[R0,#0x0] ; EP0Data+4
00000034 1A89 SUB R1,R2
00000036 8001 STRH R1,[R0,#0x0] ; EP0Data+4
00000038 ; SCOPE-END
104: }
00000038 BC10 POP {R4}
0000003A BC08 POP {R3}
0000003C 4718 BX R3
0000003E ENDP ; 'USB_DataInStage?T'
*** CODE SEGMENT '?PR?USB_DataOutStage?T?usbcore':
113: void USB_DataOutStage (void) {
00000000 B500 PUSH {LR}
00000002 ; SCOPE-START
116: cnt = USB_ReadEP(0x00, EP0Data.pData);
00000002 4800 LDR R0,=EP0Data ; EP0Data
00000004 6801 LDR R1,[R0,#0x0] ; EP0Data
00000006 2000 MOV R0,#0x0
00000008 F7FF BL USB_ReadEP?T ; T=0x0001 (1)
0000000A FFFA BL USB_ReadEP?T ; T=0x0001 (2)
0000000C ---- Variable 'cnt' assigned to Register 'R0' ----
117: EP0Data.pData += cnt;
0000000C 1C03 MOV R3,R0 ; cnt
0000000E 4800 LDR R1,=EP0Data ; EP0Data
00000010 680A LDR R2,[R1,#0x0] ; EP0Data
00000012 18D2 ADD R2,R3
00000014 600A STR R2,[R1,#0x0] ; EP0Data
118: EP0Data.Count -= cnt;
00000016 1C02 MOV R2,R0 ; cnt
00000018 0412 LSL R2,R2,#0x10 ; cnt
0000001A 0C12 LSR R2,R2,#0x10
0000001C 4800 LDR R0,=EP0Data + 0x4 ; EP0Data+4
0000001E 8801 LDRH R1,[R0,#0x0] ; EP0Data+4
00000020 1A89 SUB R1,R2
00000022 8001 STRH R1,[R0,#0x0] ; EP0Data+4
00000024 ; SCOPE-END
119: }
00000024 BC08 POP {R3}
00000026 4718 BX R3
00000028 ENDP ; 'USB_DataOutStage?T'
*** CODE SEGMENT '?PR?USB_StatusInStage?T?usbcore':
128: void USB_StatusInStage (void) {
00000000 B500 PUSH {LR}
129: USB_WriteEP(0x80, NULL, 0);
00000002 2100 MOV R1,#0x0
00000004 2080 MOV R0,#0x80
00000006 2200 MOV R2,#0x0
00000008 F7FF BL USB_WriteEP?T ; T=0x0001 (1)
0000000A FFFA BL USB_WriteEP?T ; T=0x0001 (2)
130: }
0000000C BC08 POP {R3}
0000000E 4718 BX R3
00000010 ENDP ; 'USB_StatusInStage?T'
*** CODE SEGMENT '?PR?USB_StatusOutStage?T?usbcore':
139: void USB_StatusOutStage (void) {
00000000 B500 PUSH {LR}
140: USB_ReadEP(0x00, EP0Buf);
00000002 4800 LDR R1,=EP0Buf ; EP0Buf
00000004 2000 MOV R0,#0x0
00000006 F7FF BL USB_ReadEP?T ; T=0x0001 (1)
ARM COMPILER V2.50a, usbcore 27/03/06 17:22:53 PAGE 16
00000008 FFFB BL USB_ReadEP?T ; T=0x0001 (2)
141: }
0000000A BC08 POP {R3}
0000000C 4718 BX R3
0000000E ENDP ; 'USB_StatusOutStage?T'
*** CODE SEGMENT '?PR?USB_GetStatus?T?usbcore':
150: __inline BOOL USB_GetStatus (void) {
00000000 B500 PUSH {LR}
00000002 ; SCOPE-START
153: switch (SetupPacket.bmRequestType.BM.Recipient) {
00000002 4800 LDR R0,=SetupPacket ; SetupPacket
00000004 7800 LDRB R0,[R0,#0x0] ; SetupPacket
00000006 211F MOV R1,#0x1F
00000008 4008 AND R0,R1
0000000A 2801 CMP R0,#0x1
0000000C D009 BEQ L_6 ; T=0x00000022
0000000E 2802 CMP R0,#0x2
00000010 D01F BEQ L_7 ; T=0x00000052
00000012 2800 CMP R0,#0x0
00000014 D150 BNE L_5 ; T=0x000000B8
154: case REQUEST_TO_DEVICE:
00000016 L_4:
155: EP0Data.pData = (BYTE *)&USB_DeviceStatus;
00000016 4800 LDR R1,=USB_DeviceStatus ; USB_DeviceStatus
00000018 4800 LDR R0,=EP0Data ; EP0Data
0000001A 6001 STR R1,[R0,#0x0] ; EP0Data
156: USB_DataInStage();
0000001C F7FF BL USB_DataInStage?T ; T=0x0001 (1)
0000001E FFF0 BL USB_DataInStage?T ; T=0x0001 (2)
157: break;
00000020 E04C B L_3 ; T=0x000000BC
158: case REQUEST_TO_INTERFACE:
00000022 L_6:
159: if ((USB_Configuration != 0) && (SetupPacket.wIndex.WB.L < USB_NumInterfaces)) {
00000022 4800 LDR R0,=USB_Configuration ; USB_Configuration
00000024 7800 LDRB R0,[R0,#0x0] ; USB_Configuration
00000026 2800 CMP R0,#0x0
00000028 D011 BEQ L_8 ; T=0x0000004E
0000002A 4800 LDR R0,=USB_NumInterfaces ; USB_NumInterfaces
0000002C 7800 LDRB R0,[R0,#0x0] ; USB_NumInterfaces
0000002E 1C01 MOV R1,R0
00000030 4800 LDR R0,=SetupPacket + 0x4 ; SetupPacket+4
00000032 7800 LDRB R0,[R0,#0x0] ; SetupPacket+4
00000034 4288 CMP R0,R1
00000036 D20A BCS L_8 ; T=0x0000004E
160: *((__packed WORD *)EP0Buf) = 0;
00000038 2100 MOV R1,#0x0
0000003A 4800 LDR R0,=EP0Buf ; EP0Buf
0000003C 7001 STRB R1,[R0,#0x0] ; EP0Buf
0000003E 0A09 LSR R1,R1,#0x8
00000040 7041 STRB R1,[R0,#0x1] ; EP0Buf
161: EP0Data.pData = EP0Buf;
00000042 4800 LDR R1,=EP0Buf ; EP0Buf
00000044 4800 LDR R0,=EP0Data ; EP0Data
00000046 6001 STR R1,[R0,#0x0] ; EP0Data
162: USB_DataInStage();
00000048 F7FF BL USB_DataInStage?T ; T=0x0001 (1)
0000004A FFDA BL USB_DataInStage?T ; T=0x0001 (2)
163: } else {
0000004C E036 B L_3 ; T=0x000000BC
0000004E L_8:
164: return (FALSE);
0000004E 2000 MOV R0,#0x0
00000050 E035 B L_10 ; T=0x000000BE
167: case REQUEST_TO_ENDPOINT:
00000052 L_7:
ARM COMPILER V2.50a, usbcore 27/03/06 17:22:53 PAGE 17
168: n = SetupPacket.wIndex.WB.L & 0x8F;
00000052 4800 LDR R0,=SetupPacket + 0x4 ; SetupPacket+4
00000054 7800 LDRB R0,[R0,#0x0] ; SetupPacket+4
00000056 1C03 MOV R3,R0
00000058 208F MOV R0,#0x8F
0000005A 4003 AND R3,R0
0000005C ---- Variable 'n' assigned to Register 'R3' ----
169: m = (n & 0x80) ? ((1 << 16) << n) : (1 << n);
0000005C 1C18 MOV R0,R3 ; n
0000005E 2180 MOV R1,#0x80
00000060 4208 TST R0,R1 ; n
00000062 D003 BEQ L_11 ; T=0x0000006C
00000064 1C18 MOV R0,R3 ; n
00000066 4800 LDR R2,=0x10000
00000068 4082 LSL R2,R0
0000006A E002 B L_12 ; T=0x00000072
0000006C L_11:
0000006C 1C18 MOV R0,R3 ; n
0000006E 2201 MOV R2,#0x1
00000070 4082 LSL R2,R0
00000072 L_12:
00000072 ---- Variable 'm' assigned to Register 'R2' ----
170: if (((USB_Configuration != 0) || ((n & 0x0F) == 0)) && (USB_EndPointMask & m)) {
00000072 4800 LDR R0,=USB_Configuration ; USB_Configuration
00000074 7800 LDRB R0,[R0,#0x0] ; USB_Configuration
00000076 2800 CMP R0,#0x0
00000078 D103 BNE L_14 ; T=0x00000082
0000007A 1C18 MOV R0,R3 ; n
0000007C 210F MOV R1,#0xF
0000007E 4208 TST R0,R1 ; n
00000080 D118 BNE L_13 ; T=0x000000B4
00000082 L_14:
00000082 1C11 MOV R1,R2 ; m
00000084 4800 LDR R0,=USB_EndPointMask ; USB_EndPointMask
00000086 6800 LDR R0,[R0,#0x0] ; USB_EndPointMask
00000088 4008 AND R0,R1 ; m
0000008A 2800 CMP R0,#0x0
0000008C D012 BEQ L_13 ; T=0x000000B4
171: *((__packed WORD *)EP0Buf) = (USB_EndPointHalt & m) ? 1 : 0;
0000008E 1C11 MOV R1,R2 ; m
00000090 4800 LDR R0,=USB_EndPointHalt ; USB_EndPointHalt
00000092 6800 LDR R0,[R0,#0x0] ; USB_EndPointHalt
00000094 4008 AND R0,R1 ; m
00000096 2800 CMP R0,#0x0
00000098 D001 BEQ L_15 ; T=0x0000009E
0000009A 2101 MOV R1,#0x1
0000009C E000 B L_16 ; T=0x000000A0
0000009E L_15:
0000009E 2100 MOV R1,#0x0
000000A0 L_16:
000000A0 4800 LDR R0,=EP0Buf ; EP0Buf
000000A2 7001 STRB R1,[R0,#0x0] ; EP0Buf
000000A4 0A09 LSR R1,R1,#0x8
000000A6 7041 STRB R1,[R0,#0x1] ; EP0Buf
172: EP0Data.pData = EP0Buf;
000000A8 4800 LDR R1,=EP0Buf ; EP0Buf
000000AA 4800 LDR R0,=EP0Data ; EP0Data
000000AC 6001 STR R1,[R0,#0x0] ; EP0Data
173: USB_DataInStage();
000000AE F7FF BL USB_DataInStage?T ; T=0x0001 (1)
000000B0 FFA7 BL USB_DataInStage?T ; T=0x0001 (2)
174: } else {
000000B2 E003 B L_3 ; T=0x000000BC
000000B4 L_13:
175: return (FALSE);
000000B4 2000 MOV R0,#0x0
ARM COMPILER V2.50a, usbcore 27/03/06 17:22:53 PAGE 18
000000B6 E002 B L_10 ; T=0x000000BE
178: default:
000000B8 L_5:
179: return (FALSE);
000000B8 2000 MOV R0,#0x0
000000BA E000 B L_10 ; T=0x000000BE
180: }
000000BC L_3:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -