📄 usbcore.lst
字号:
USB_Interface_Event();
#endif
541 5 break;
542 5 default:
543 5 goto stall_i;
544 5 }
545 4 break;
546 4
547 4 default:
548 4 goto stall_i;
549 4
550 4 }
551 3 break;
552 3
553 3 case REQUEST_CLASS:
554 3 #if USB_CLASS
555 3 switch (SetupPacket.bmRequestType.BM.Recipient) {
556 4 case REQUEST_TO_INTERFACE:
557 4 // break;
558 4 default:
559 4 goto stall_i;
560 4 }
561 3 #else
goto stall_i;
#endif /* USB_CLASS */
564 3
565 3 case REQUEST_VENDOR:
566 3 #if USB_VCOM
567 3 UARTSettingCmd = SetupPacket.bRequest & 0xFF;
568 3 UARTSettingData = SetupPacket.wValue.WB.L;
569 3 if (!VCOM_SetSIOSetup( UARTSettingCmd, UARTSettingData )) {
570 4 goto stall_i;
571 4 }
572 3 USB_DataInStage();
573 3 #endif
574 3 break;
575 3
576 3 default:
577 3 stall_i: USB_SetStallEP(0x80);
578 3 EP0Data.Count = 0;
579 3 break;
580 3
581 3 }
582 2 break;
583 2
584 2 case USB_EVT_OUT:
585 2 if (SetupPacket.bmRequestType.BM.Dir == 0) {
586 3 if (EP0Data.Count) {
ARM COMPILER V2.53, usbcore 09/06/07 15:42:24 PAGE 10
587 4 USB_DataOutStage();
588 4 if (EP0Data.Count == 0) {
589 5 switch (*((WORD *)&SetupPacket)) {
590 6 default:
591 6 goto stall_i;
592 6 }
593 5 USB_StatusInStage();
594 5 }
595 4 }
596 3 } else {
597 3 USB_StatusOutStage();
598 3 }
599 2 break;
600 2
601 2 case USB_EVT_IN:
602 2 if (SetupPacket.bmRequestType.BM.Dir == 1) {
603 3 if (EP0Data.Count) {
604 4 USB_DataInStage();
605 4 }
606 3 } else {
607 3 if (USB_DeviceAddress & 0x80) {
608 4 USB_DeviceAddress &= 0x7F;
609 4 USB_SetAddress(USB_DeviceAddress);
610 4 }
611 3 }
612 2 break;
613 2
614 2 case USB_EVT_IN_STALL:
615 2 USB_ClrStallEP(0x80);
616 2 break;
617 2
618 2 case USB_EVT_OUT_STALL:
619 2 USB_ClrStallEP(0x00);
620 2 break;
621 2
622 2 }
623 1 }
ARM COMPILER V2.53, usbcore 09/06/07 15:42:24 PAGE 11
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN CODE16 (USB_WakeUpCfg?T)
EXTERN CODE16 (USB_SetAddress?T)
EXTERN CODE16 (USB_Configure?T)
EXTERN CODE16 (USB_ConfigEP?T)
EXTERN CODE16 (USB_DirCtrlEP?T)
EXTERN CODE16 (USB_EnableEP?T)
EXTERN CODE16 (USB_DisableEP?T)
EXTERN CODE16 (USB_ResetEP?T)
EXTERN CODE16 (USB_SetStallEP?T)
EXTERN CODE16 (USB_ClrStallEP?T)
EXTERN CODE16 (USB_ReadEP?T)
EXTERN CODE16 (USB_WriteEP?T)
EXTERN DATA (USB_DeviceDescriptor)
EXTERN DATA (USB_ConfigDescriptor)
EXTERN DATA (USB_StringDescriptor)
EXTERN CODE16 (USB_Configure_Event?T)
EXTERN CODE16 (VCOM_SetSIOSetup?T)
*** PUBLICS:
PUBLIC USB_ResetCore?T
PUBLIC USB_EndPoint0?T
PUBLIC USB_SetupStage?T
PUBLIC USB_DataInStage?T
PUBLIC USB_DataOutStage?T
PUBLIC USB_StatusInStage?T
PUBLIC USB_StatusOutStage?T
PUBLIC USB_DeviceStatus
PUBLIC USB_DeviceAddress
PUBLIC USB_Configuration
PUBLIC USB_EndPointMask
PUBLIC USB_EndPointHalt
PUBLIC USB_AltSetting
PUBLIC EP0Buf
PUBLIC SetupPacket
PUBLIC USB_NumInterfaces
PUBLIC EP0Data
*** DATA SEGMENT '?DT0?usbcore':
00000000 USB_EndPointMask:
00000000 DS 4
00000004 USB_EndPointHalt:
00000004 DS 4
00000008 EP0Data:
00000008 DS 8
00000010 USB_DeviceStatus:
00000010 DS 2
00000012 SetupPacket:
00000012 DS 8
0000001A USB_DeviceAddress:
0000001A DS 1
0000001B USB_Configuration:
0000001B DS 1
0000001C USB_AltSetting:
0000001C DS 4
00000020 EP0Buf:
00000020 DS 64
00000060 USB_NumInterfaces:
00000060 DS 1
*** CODE SEGMENT '?PR?USB_ResetCore?T?usbcore':
53: USB_DeviceStatus = USB_POWER;
00000000 2100 MOV R1,#0x0
ARM COMPILER V2.53, usbcore 09/06/07 15:42:24 PAGE 12
00000002 4800 LDR R0,=USB_DeviceStatus ; USB_DeviceStatus
00000004 8001 STRH R1,[R0,#0x0] ; USB_DeviceStatus
54: USB_DeviceAddress = 0;
00000006 2100 MOV R1,#0x0
00000008 4800 LDR R0,=USB_DeviceAddress ; USB_DeviceAddress
0000000A 7001 STRB R1,[R0,#0x0] ; USB_DeviceAddress
55: USB_Configuration = 0;
0000000C 4800 LDR R0,=USB_Configuration ; USB_Configuration
0000000E 7001 STRB R1,[R0,#0x0] ; USB_Configuration
56: USB_EndPointMask = 0x00010001;
00000010 4800 LDR R1,=0x10001
00000012 4800 LDR R0,=USB_EndPointMask ; USB_EndPointMask
00000014 6001 STR R1,[R0,#0x0] ; USB_EndPointMask
57: USB_EndPointHalt = 0x00000000;
00000016 2100 MOV R1,#0x0
00000018 4800 LDR R0,=USB_EndPointHalt ; USB_EndPointHalt
0000001A 6001 STR R1,[R0,#0x0] ; USB_EndPointHalt
58: }
0000001C 4770 BX R14
0000001E ENDP ; 'USB_ResetCore?T'
*** CODE SEGMENT '?PR?USB_SetupStage?T?usbcore':
68: void USB_SetupStage (void) {
00000000 B500 PUSH {LR}
69: 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)
70: }
0000000A BC08 POP {R3}
0000000C 4718 BX R3
0000000E ENDP ; 'USB_SetupStage?T'
*** CODE SEGMENT '?PR?USB_DataInStage?T?usbcore':
79: void USB_DataInStage (void) {
00000000 B510 PUSH {R4,LR}
00000002 ---- Variable 'cnt' assigned to Register 'R4' ----
00000002 ; SCOPE-START
82: 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
83: cnt = USB_MAX_PACKET0;
0000000C 2440 MOV R4,#0x40
84: } else {
0000000E E000 B L_2 ; T=0x00000012
00000010 L_1:
85: cnt = EP0Data.Count;
00000010 1C04 MOV R4,R0
86: }
00000012 L_2:
87: 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
88: EP0Data.pData += cnt;
00000020 1C22 MOV R2,R4 ; cnt
00000022 4800 LDR R0,=EP0Data ; EP0Data
00000024 6801 LDR R1,[R0,#0x0] ; EP0Data
00000026 1889 ADD R1,R2
00000028 6001 STR R1,[R0,#0x0] ; EP0Data
ARM COMPILER V2.53, usbcore 09/06/07 15:42:24 PAGE 13
89: 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
90: }
00000038 BC10 POP {R4}
0000003A BC08 POP {R3}
0000003C 4718 BX R3
0000003E ENDP ; 'USB_DataInStage?T'
*** CODE SEGMENT '?PR?USB_DataOutStage?T?usbcore':
99: void USB_DataOutStage (void) {
00000000 B500 PUSH {LR}
00000002 ; SCOPE-START
102: 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' ----
103: 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
104: 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
105: }
00000024 BC08 POP {R3}
00000026 4718 BX R3
00000028 ENDP ; 'USB_DataOutStage?T'
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -