📄 usbcore.lst
字号:
563 5 default:
564 5 goto stall_i;
565 5 }
566 4 break;
567 4
568 4 default:
569 4 goto stall_i;
570 4
571 4 }
572 3 break;
573 3
574 3 case REQUEST_CLASS:
575 3 #if USB_CLASS
576 3 switch (SetupPacket.bmRequestType.BM.Recipient) {
577 4 case REQUEST_TO_INTERFACE:
578 4 #if USB_HID
if (SetupPacket.wIndex.WB.L == USB_HID_IF_NUM) {
switch (SetupPacket.bRequest) {
case HID_REQUEST_GET_REPORT:
if (HID_GetReport()) {
EP0Data.pData = EP0Buf;
USB_DataInStage();
goto class_ok;
}
ARM COMPILER V2.50a, usbcore 04/04/06 11:13:56 PAGE 10
break;
case HID_REQUEST_SET_REPORT:
EP0Data.pData = EP0Buf;
goto class_ok;
case HID_REQUEST_GET_IDLE:
if (HID_GetIdle()) {
EP0Data.pData = EP0Buf;
USB_DataInStage();
goto class_ok;
}
break;
case HID_REQUEST_SET_IDLE:
if (HID_SetIdle()) {
USB_StatusInStage();
goto class_ok;
}
break;
case HID_REQUEST_GET_PROTOCOL:
if (HID_GetProtocol()) {
EP0Data.pData = EP0Buf;
USB_DataInStage();
goto class_ok;
}
break;
case HID_REQUEST_SET_PROTOCOL:
if (HID_SetProtocol()) {
USB_StatusInStage();
goto class_ok;
}
break;
}
}
#endif /* USB_HID */
620 4 #if USB_MSC
621 4 if (SetupPacket.wIndex.WB.L == USB_MSC_IF_NUM) {
622 5 switch (SetupPacket.bRequest) {
623 6 case MSC_REQUEST_RESET:
624 6 if (MSC_Reset()) {
625 7 USB_StatusInStage();
626 7 goto class_ok;
627 7 }
628 6 break;
629 6 case MSC_REQUEST_GET_MAX_LUN:
630 6 if (MSC_GetMaxLUN()) {
631 7 EP0Data.pData = EP0Buf;
632 7 USB_DataInStage();
633 7 goto class_ok;
634 7 }
635 6 break;
636 6 }
637 5 }
638 4 #endif /* USB_MSC */
639 4 #if USB_AUDIO
if ((SetupPacket.wIndex.WB.L == USB_ADC_CIF_NUM) ||
(SetupPacket.wIndex.WB.L == USB_ADC_SIF1_NUM) ||
(SetupPacket.wIndex.WB.L == USB_ADC_SIF2_NUM)) {
if (SetupPacket.bmRequestType.BM.Dir) {
if (ADC_IF_GetRequest()) {
EP0Data.pData = EP0Buf;
USB_DataInStage();
goto class_ok;
}
} else {
EP0Data.pData = EP0Buf;
goto class_ok;
}
ARM COMPILER V2.50a, usbcore 04/04/06 11:13:56 PAGE 11
}
#endif /* USB_AUDIO */
655 4 goto stall_i;
656 4 #if USB_AUDIO
case REQUEST_TO_ENDPOINT:
if (SetupPacket.bmRequestType.BM.Dir) {
if (ADC_EP_GetRequest()) {
EP0Data.pData = EP0Buf;
USB_DataInStage();
goto class_ok;
}
} else {
EP0Data.pData = EP0Buf;
goto class_ok;
}
goto stall_i;
#endif /* USB_AUDIO */
670 4 default:
671 4 goto stall_i;
672 4 }
673 3 class_ok: break;
674 3 #else
goto stall_i;
#endif /* USB_CLASS */
677 3
678 3 case REQUEST_VENDOR:
679 3 goto stall_i;
680 3
681 3 default:
682 3 stall_i: USB_SetStallEP(0x80);
683 3 EP0Data.Count = 0;
684 3 break;
685 3
686 3 }
687 2 break;
688 2
689 2 case USB_EVT_OUT:
690 2 if (SetupPacket.bmRequestType.BM.Dir == 0) {
691 3 if (EP0Data.Count) {
692 4 USB_DataOutStage();
693 4 if (EP0Data.Count == 0) {
694 5 switch (SetupPacket.bmRequestType.BM.Type) {
695 6 case REQUEST_STANDARD:
696 6 goto stall_i;
697 6 #if (USB_CLASS)
698 6 case REQUEST_CLASS:
699 6 switch (SetupPacket.bmRequestType.BM.Recipient) {
700 7 case REQUEST_TO_INTERFACE:
701 7 #if USB_HID
if (SetupPacket.wIndex.WB.L == USB_HID_IF_NUM) {
if (!HID_SetReport()) {
goto stall_i;
}
break;
}
#endif
709 7 #if USB_AUDIO
if ((SetupPacket.wIndex.WB.L == USB_ADC_CIF_NUM) ||
(SetupPacket.wIndex.WB.L == USB_ADC_SIF1_NUM) ||
(SetupPacket.wIndex.WB.L == USB_ADC_SIF2_NUM)) {
if (!ADC_IF_SetRequest()) {
goto stall_i;
}
break;
}
#endif
ARM COMPILER V2.50a, usbcore 04/04/06 11:13:56 PAGE 12
719 7 goto stall_i;
720 7 case REQUEST_TO_ENDPOINT:
721 7 #if USB_AUDIO
if (ADC_EP_SetRequest()) break;
#endif
724 7 goto stall_i;
725 7 default:
726 7 goto stall_i;
727 7 }
728 6 break;
729 6 #endif
730 6 default:
731 6 goto stall_i;
732 6 }
733 5 USB_StatusInStage();
734 5 }
735 4 }
736 3 } else {
737 3 USB_StatusOutStage();
738 3 }
739 2 break;
740 2
741 2 case USB_EVT_IN:
742 2 if (SetupPacket.bmRequestType.BM.Dir == 1) {
743 3 USB_DataInStage();
744 3 } else {
745 3 if (USB_DeviceAddress & 0x80) {
746 4 USB_DeviceAddress &= 0x7F;
747 4 USB_SetAddress(USB_DeviceAddress);
748 4 }
749 3 }
750 2 break;
751 2
752 2 case USB_EVT_IN_STALL:
753 2 USB_ClrStallEP(0x80);
754 2 break;
755 2
756 2 case USB_EVT_OUT_STALL:
757 2 USB_ClrStallEP(0x00);
758 2 break;
759 2
760 2 }
761 1 }
ARM COMPILER V2.50a, usbcore 04/04/06 11:13:56 PAGE 13
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 (MSC_Reset?T)
EXTERN CODE16 (MSC_GetMaxLUN?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 EP0Data
PUBLIC SetupPacket
PUBLIC USB_NumInterfaces
*** 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':
58: USB_DeviceStatus = USB_POWER;
ARM COMPILER V2.50a, usbcore 04/04/06 11:13:56 PAGE 14
00000000 2100 MOV R1,#0x0
00000002 4800 LDR R0,=USB_DeviceStatus ; USB_DeviceStatus
00000004 8001 STRH R1,[R0,#0x0] ; USB_DeviceStatus
59: USB_DeviceAddress = 0;
00000006 2100 MOV R1,#0x0
00000008 4800 LDR R0,=USB_DeviceAddress ; USB_DeviceAddress
0000000A 7001 STRB R1,[R0,#0x0] ; USB_DeviceAddress
60: USB_Configuration = 0;
0000000C 4800 LDR R0,=USB_Configuration ; USB_Configuration
0000000E 7001 STRB R1,[R0,#0x0] ; USB_Configuration
61: USB_EndPointMask = 0x00010001;
00000010 4800 LDR R1,=0x10001
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -