📄 usbcore.lst
字号:
000000D2 E005 B L_18 ; T=0x000000E0
000000D4 L_31:
210: return (FALSE);
000000D4 2000 MOV R0,#0x0
000000D6 E004 B L_27 ; T=0x000000E2
212: } else {
000000D8 L_30:
213: return (FALSE);
000000D8 2000 MOV R0,#0x0
000000DA E002 B L_27 ; T=0x000000E2
216: default:
000000DC L_20:
217: return (FALSE);
000000DC 2000 MOV R0,#0x0
000000DE E000 B L_27 ; T=0x000000E2
218: }
000000E0 L_18:
219: return (TRUE);
000000E0 2001 MOV R0,#0x1
000000E2 ; SCOPE-END
220: }
000000E2 L_27:
000000E2 BC70 POP {R4-R6}
000000E4 BC08 POP {R3}
000000E6 4718 BX R3
000000E8 ENDP ; 'USB_SetClrFeature?T'
*** CODE SEGMENT '?PR?USB_GetDescriptor?T?usbcore':
229: __inline BOOL USB_GetDescriptor (void) {
00000000 B530 PUSH {R4-R5,LR}
00000002 ---- Variable 'pD' assigned to Register 'R5' ----
00000002 ---- Variable 'len' assigned to Register 'R4' ----
00000002 ; SCOPE-START
233: 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 D040 BEQ L_39 ; T=0x00000090
0000000E 2800 CMP R0,#0x0
00000010 D140 BNE L_38 ; T=0x00000094
234: case REQUEST_TO_DEVICE:
00000012 L_37:
235: switch (SetupPacket.wValue.WB.H) {
ARM COMPILER V2.50a, usbcore 14/02/06 09:59:07 PAGE 19
00000012 4800 LDR R0,=SetupPacket + 0x3 ; SetupPacket+3
00000014 7800 LDRB R0,[R0,#0x0] ; SetupPacket+3
00000016 2802 CMP R0,#0x2
00000018 D008 BEQ L_43 ; T=0x0000002C
0000001A 2803 CMP R0,#0x3
0000001C D02C BEQ L_44 ; T=0x00000078
0000001E 2801 CMP R0,#0x1
00000020 D134 BNE L_42 ; T=0x0000008C
236: case USB_DEVICE_DESCRIPTOR_TYPE:
00000022 L_41:
237: EP0Data.pData = (BYTE *)USB_DeviceDescriptor;
00000022 4800 LDR R1,=USB_DeviceDescriptor ; USB_DeviceDescriptor
00000024 4800 LDR R0,=EP0Data ; EP0Data
00000026 6001 STR R1,[R0,#0x0] ; EP0Data
238: len = USB_DEVICE_DESC_SIZE;
00000028 2412 MOV R4,#0x12
239: break;
0000002A E035 B L_36 ; T=0x00000098
240: case USB_CONFIGURATION_DESCRIPTOR_TYPE:
0000002C L_43:
241: pD = (BYTE *)USB_ConfigDescriptor;
0000002C 4800 LDR R5,=USB_ConfigDescriptor ; USB_ConfigDescriptor
242: for (n = 0; n != SetupPacket.wValue.WB.L; n++) {
0000002E 2000 MOV R0,#0x0
00000030 ---- Variable 'n' assigned to Register 'R0' ----
00000030 E00B B L_47 ; T=0x0000004A
00000032 L_48:
243: if (((USB_CONFIGURATION_DESCRIPTOR *)pD)->bLength != 0) {
00000032 1C29 MOV R1,R5 ; pD
00000034 7809 LDRB R1,[R1,#0x0] ; pD
00000036 2900 CMP R1,#0x0
00000038 D006 BEQ L_45 ; T=0x00000048
244: pD += ((USB_CONFIGURATION_DESCRIPTOR *)pD)->wTotalLength;
0000003A 1C2A MOV R2,R5 ; pD
0000003C 3202 ADD R2,#0x2
0000003E 7811 LDRB R1,[R2,#0x0]
00000040 7853 LDRB R3,[R2,#0x1]
00000042 021B LSL R3,R3,#0x8
00000044 4319 ORR R1,R3
00000046 186D ADD R5,R1 ; pD
246: }
00000048 L_45:
00000048 3001 ADD R0,#0x1
0000004A L_47:
0000004A 4800 LDR R1,=SetupPacket + 0x2 ; SetupPacket+2
0000004C 7809 LDRB R1,[R1,#0x0] ; SetupPacket+2
0000004E 1C0A MOV R2,R1
00000050 1C01 MOV R1,R0 ; n
00000052 4291 CMP R1,R2 ; n
00000054 D1ED BNE L_48 ; T=0x00000032
247: if (((USB_CONFIGURATION_DESCRIPTOR *)pD)->bLength == 0) {
00000056 1C28 MOV R0,R5 ; pD
00000058 7800 LDRB R0,[R0,#0x0] ; pD
0000005A 2800 CMP R0,#0x0
0000005C D101 BNE L_51 ; T=0x00000062
248: return (FALSE);
0000005E 2000 MOV R0,#0x0
00000060 E027 B L_52 ; T=0x000000B2
249: }
00000062 L_51:
250: EP0Data.pData = pD;
00000062 1C29 MOV R1,R5 ; pD
00000064 4800 LDR R0,=EP0Data ; EP0Data
00000066 6001 STR R1,[R0,#0x0] ; EP0Data
251: len = ((USB_CONFIGURATION_DESCRIPTOR *)pD)->wTotalLength;
00000068 1C29 MOV R1,R5 ; pD
ARM COMPILER V2.50a, usbcore 14/02/06 09:59:07 PAGE 20
0000006A 3102 ADD R1,#0x2
0000006C 7808 LDRB R0,[R1,#0x0]
0000006E 784A LDRB R2,[R1,#0x1]
00000070 0212 LSL R2,R2,#0x8
00000072 4310 ORR R0,R2
00000074 1C04 MOV R4,R0
252: break;
00000076 E00F B L_36 ; T=0x00000098
253: case USB_STRING_DESCRIPTOR_TYPE:
00000078 L_44:
254: EP0Data.pData = (BYTE *)USB_StringDescriptor + SetupPacket.wValue.WB.L;
00000078 4800 LDR R0,=SetupPacket + 0x2 ; SetupPacket+2
0000007A 7800 LDRB R0,[R0,#0x0] ; SetupPacket+2
0000007C 4800 LDR R1,=USB_StringDescriptor ; USB_StringDescriptor
0000007E 1809 ADD R1,R0 ; USB_StringDescriptor
00000080 4800 LDR R0,=EP0Data ; EP0Data
00000082 6001 STR R1,[R0,#0x0] ; EP0Data
255: len = ((USB_STRING_DESCRIPTOR *)EP0Data.pData)->bLength;
00000084 4800 LDR R0,=EP0Data ; EP0Data
00000086 6800 LDR R0,[R0,#0x0] ; EP0Data
00000088 7804 LDRB R4,[R0,#0x0]
256: break;
0000008A E005 B L_36 ; T=0x00000098
257: default:
0000008C L_42:
258: return (FALSE);
0000008C 2000 MOV R0,#0x0
0000008E E010 B L_52 ; T=0x000000B2
261: case REQUEST_TO_INTERFACE:
00000090 L_39:
264: return (FALSE);
00000090 2000 MOV R0,#0x0
00000092 E00E B L_52 ; T=0x000000B2
267: default:
00000094 L_38:
268: return (FALSE);
00000094 2000 MOV R0,#0x0
00000096 E00C B L_52 ; T=0x000000B2
269: }
00000098 L_36:
271: if (EP0Data.Count > len) {
00000098 4800 LDR R0,=EP0Data + 0x4 ; EP0Data+4
0000009A 8800 LDRH R0,[R0,#0x0] ; EP0Data+4
0000009C 1C21 MOV R1,R4 ; len
0000009E 4288 CMP R0,R1 ; len
000000A0 D904 BLS L_56 ; T=0x000000AC
272: EP0Data.Count = len;
000000A2 1C21 MOV R1,R4 ; len
000000A4 0409 LSL R1,R1,#0x10 ; len
000000A6 0C09 LSR R1,R1,#0x10
000000A8 4800 LDR R0,=EP0Data + 0x4 ; EP0Data+4
000000AA 8001 STRH R1,[R0,#0x0] ; EP0Data+4
273: }
000000AC L_56:
274: USB_DataInStage();
000000AC F7FF BL USB_DataInStage?T ; T=0x0001 (1)
000000AE FFA8 BL USB_DataInStage?T ; T=0x0001 (2)
276: return (TRUE);
000000B0 2001 MOV R0,#0x1
000000B2 ; SCOPE-END
277: }
000000B2 L_52:
000000B2 BC30 POP {R4-R5}
000000B4 BC08 POP {R3}
000000B6 4718 BX R3
000000B8 ENDP ; 'USB_GetDescriptor?T'
ARM COMPILER V2.50a, usbcore 14/02/06 09:59:07 PAGE 21
*** CODE SEGMENT '?PR?USB_SetConfiguration?T?usbcore':
286: __inline BOOL USB_SetConfiguration (void) {
00000000 B5F0 PUSH {R4-R7,LR}
00000002 ---- Variable 'n' assigned to Register 'R5' ----
00000002 ---- Variable 'alt' assigned to Register 'R4' ----
00000002 ; SCOPE-START
290: if (SetupPacket.wValue.WB.L) {
00000002 4800 LDR R0,=SetupPacket + 0x2 ; SetupPacket+2
00000004 7800 LDRB R0,[R0,#0x0] ; SetupPacket+2
00000006 2800 CMP R0,#0x0
00000008 D100 BEQ $+4
0000000A E090 B L_57 ; T=0x0000012E
291: pD = (USB_COMMON_DESCRIPTOR *)USB_ConfigDescriptor;
0000000E 4800 LDR R6,=USB_ConfigDescriptor ; USB_ConfigDescriptor
00000010 ---- Variable 'pD' assigned to Register 'R6' ----
292: while (pD->bLength) {
00000010 E087 B L_58 ; T=0x00000122
00000012 L_60:
293: switch (pD->bDescriptorType) {
00000012 1C30 MOV R0,R6 ; pD
00000014 7840 LDRB R0,[R0,#0x1]
00000016 2804 CMP R0,#0x4
00000018 D05A BEQ L_64 ; T=0x000000D0
0000001A 2805 CMP R0,#0x5
0000001C D05C BEQ L_65 ; T=0x000000D8
0000001E 2802 CMP R0,#0x2
00000020 D17C BNE L_62 ; T=0x0000011C
294: case USB_CONFIGURATION_DESCRIPTOR_TYPE:
00000022 L_63:
295: if (((USB_CONFIGURATION_DESCRIPTOR *)pD)->bConfigurationValue == SetupPacket.wValue.WB.L) {
00000022 1C30 MOV R0,R6 ; pD
00000024 7940 LDRB R0,[R0,#0x5]
00000026 4800 LDR R1,=SetupPacket + 0x2 ; SetupPacket+2
00000028 7809 LDRB R1,[R1,#0x0] ; SetupPacket+2
0000002A 4288 CMP R0,R1
0000002C D148 BNE L_66 ; T=0x000000C0
296: USB_Configuration = SetupPacket.wValue.WB.L;
0000002E 4800 LDR R0,=SetupPacket + 0x2 ; SetupPacket+2
00000030 7801 LDRB R1,[R0,#0x0] ; SetupPacket+2
00000032 4800 LDR R0,=USB_Configuration ; USB_Configuration
00000034 7001 STRB R1,[R0,#0x0] ; USB_Configuration
297: USB_NumInterfaces = ((USB_CONFIGURATION_DESCRIPTOR *)pD)->bNumInterfaces;
00000036 1C30 MOV R0,R6 ; pD
00000038 7901 LDRB R1,[R0,#0x4]
0000003A 4800 LDR R0,=USB_NumInterfaces ; USB_NumInterfaces
0000003C 7001 STRB R1,[R0,#0x0] ; USB_NumInterfaces
298: for (n = 0; n < USB_IF_NUM; n++) {
0000003E 2500 MOV R5,#0x0
00000040 L_70:
299: USB_AltSetting[n] = 0;
00000040 2000 MOV R0,#0x0
00000042 1C2A MOV R2,R5 ; n
00000044 4800 LDR R1,=USB_AltSetting ; USB_AltSetting
00000046 5488 STRB R0,[R1,R2]
300: }
00000048 3501 ADD R5,#0x1
0000004A 1C28 MOV R0,R5 ; n
0000004C 2804 CMP R0,#0x4 ; n
0000004E D3F7 BCC L_70 ; T=0x00000040
301: for (n = 1; n < 16; n++) {
00000050 2501 MOV R5,#0x1
00000052 L_75:
302: if (USB_EndPointMask & (1 << n)) {
00000052 1C28 MOV R0,R5 ; n
00000054 2101 MOV R1,#0x1
00000056 4081 LSL R1,R0
ARM COMPILER V2.50a, usbcore 14/02/06 09:59:07 PAGE 22
00000058 4800 LDR R0,=USB_EndPointMask ; USB_EndPointMask
0000005A 6800 LDR R0,[R0,#0x0] ; USB_EndPointMask
0000005C 4008 AND R0,R1
0000005E 2800 CMP R0,#0x0
00000060 D001 BEQ L_77 ; T=0x00000066
303: USB_DisableEP(n);
00000062 1C28 MOV R0,R5 ; n
00000064 F7FF BL USB_DisableEP?T ; T=0x0001 (1)
00000066 FFCC BL USB_DisableEP?T ; T=0x0001 (2)
304: }
00000068 L_77:
305: if (USB_EndPointMask & ((1 << 16) << n)) {
00000068 1C28 MOV R0,R5 ; n
0000006A 4800 LDR R1,=0x10000
0000006C 4081 LSL R1,R0
0000006E 4800 LDR R0,=USB_EndPointMask ; USB_EndPointMask
00000070 6800 LDR R0,[R0,#0x0] ; USB_EndPointMask
00000072 4008 AND R0,R1
00000074 2800 CMP R0,#0x0
00000076 D003 BEQ L_72 ; T=0x00000080
306: USB_DisableEP(n | 0x80);
00000078 1C28 MOV R0,R5 ; n
0000007A 2180 MOV R1,#0x80
0000007C 4308 ORR R0,R1
0000007E F7FF BL USB_DisableEP?T ; T=0x0001 (1)
00000080 FFBF BL USB_DisableEP?T ; T=0x0001 (2)
308: }
00000082 L_72:
00000082 3501 ADD R5,#0x1
00000084 1C28 MOV R0,R5 ; n
00000086 2810 CMP R0,#0x10 ; n
00000088 D3E3 BCC L_75 ; T=0x00000052
309: USB_EndPointMask = 0x00010001;
0000008A 4800 LDR R1,=0x10001
0000008C 4800 LDR R0,=USB_EndPointMask ; USB_EndPointMask
0000008E 6001 STR R1,[R0,#0x0] ; USB_EndPointMask
310: USB_EndPointHalt = 0x00000000;
00000090 2100 MOV
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -