?? usbcore.lst
字號(hào):
goto stall_i;
#endif
562 3 case REQUEST_VENDOR:
563 3 goto stall_i;
564 3
565 3 default:
566 3 stall_i: USB_SetStallEP(0x80);
567 3 EP0Data.Count = 0;
568 3 break;
569 3
570 3 }
571 2 break;
572 2
573 2 case USB_EVT_OUT:
574 2 if (SetupPacket.bmRequestType.BM.Dir == 0) {
575 3 if (EP0Data.Count) {
576 4 USB_DataOutStage();
577 4 if (EP0Data.Count == 0) {
578 5 switch (SetupPacket.bmRequestType.BM.Type) {
579 6 case REQUEST_STANDARD:
580 6 goto stall_i;
581 6 #if (USB_CLASS)
582 6 case REQUEST_CLASS:
583 6 switch (SetupPacket.bmRequestType.BM.Recipient) {
584 7 case REQUEST_TO_INTERFACE:
585 7 goto stall_i;
586 7 case REQUEST_TO_ENDPOINT:
587 7 goto stall_i;
ARM COMPILER V2.53, usbcore 02/11/07 08:22:52 PAGE 10
588 7 default:
589 7 goto stall_i;
590 7 }
591 6 break;
592 6 #endif
593 6 default:
594 6 goto stall_i;
595 6 }
596 5 USB_StatusInStage();
597 5 }
598 4 }
599 3 } else {
600 3 USB_StatusOutStage();
601 3 }
602 2 break;
603 2
604 2 case USB_EVT_IN:
605 2 if (SetupPacket.bmRequestType.BM.Dir == 1) {
606 3 USB_DataInStage();
607 3 } else {
608 3 if (USB_DeviceAddress & 0x80) {
609 4 USB_DeviceAddress &= 0x7F;
610 4 USB_SetAddress(USB_DeviceAddress);
611 4 }
612 3 }
613 2 break;
614 2
615 2 case USB_EVT_IN_STALL:
616 2 USB_ClrStallEP(0x80);
617 2 break;
618 2
619 2 case USB_EVT_OUT_STALL:
620 2 USB_ClrStallEP(0x00);
621 2 break;
622 2 }
623 1 }
ARM COMPILER V2.53, usbcore 02/11/07 08:22:52 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)
*** 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 8
00000028 USB_NumInterfaces:
00000028 DS 1
*** CODE SEGMENT '?PR?USB_ResetCore?T?usbcore':
48: 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
ARM COMPILER V2.53, usbcore 02/11/07 08:22:52 PAGE 12
49: USB_DeviceAddress = 0;
00000006 2100 MOV R1,#0x0
00000008 4800 LDR R0,=USB_DeviceAddress ; USB_DeviceAddress
0000000A 7001 STRB R1,[R0,#0x0] ; USB_DeviceAddress
50: USB_Configuration = 0;
0000000C 4800 LDR R0,=USB_Configuration ; USB_Configuration
0000000E 7001 STRB R1,[R0,#0x0] ; USB_Configuration
51: USB_EndPointMask = 0x00010001;
00000010 4800 LDR R1,=0x10001
00000012 4800 LDR R0,=USB_EndPointMask ; USB_EndPointMask
00000014 6001 STR R1,[R0,#0x0] ; USB_EndPointMask
52: USB_EndPointHalt = 0x00000000;
00000016 2100 MOV R1,#0x0
00000018 4800 LDR R0,=USB_EndPointHalt ; USB_EndPointHalt
0000001A 6001 STR R1,[R0,#0x0] ; USB_EndPointHalt
53: }
0000001C 4770 BX R14
0000001E ENDP ; 'USB_ResetCore?T'
*** CODE SEGMENT '?PR?USB_SetupStage?T?usbcore':
62: void USB_SetupStage (void) {
00000000 B500 PUSH {LR}
63: 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)
64: }
0000000A BC08 POP {R3}
0000000C 4718 BX R3
0000000E ENDP ; 'USB_SetupStage?T'
*** CODE SEGMENT '?PR?USB_DataInStage?T?usbcore':
73: void USB_DataInStage (void) {
00000000 B510 PUSH {R4,LR}
00000002 ---- Variable 'cnt' assigned to Register 'R4' ----
00000002 ; SCOPE-START
76: 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 2908 CMP R1,#0x8
0000000A D901 BLS L_1 ; T=0x00000010
77: cnt = USB_MAX_PACKET0;
0000000C 2408 MOV R4,#0x8
78: } else {
0000000E E000 B L_2 ; T=0x00000012
00000010 L_1:
79: cnt = EP0Data.Count;
00000010 1C04 MOV R4,R0
80: }
00000012 L_2:
81: 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
82: 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
83: EP0Data.Count -= cnt;
0000002A 1C22 MOV R2,R4 ; cnt
ARM COMPILER V2.53, usbcore 02/11/07 08:22:52 PAGE 13
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
84: }
00000038 BC10 POP {R4}
0000003A BC08 POP {R3}
0000003C 4718 BX R3
0000003E ENDP ; 'USB_DataInStage?T'
*** CODE SEGMENT '?PR?USB_DataOutStage?T?usbcore':
93: void USB_DataOutStage (void) {
00000000 B500 PUSH {LR}
00000002 ; SCOPE-START
96: 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' ----
97: 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
98: 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
99: }
00000024 BC08 POP {R3}
00000026 4718 BX R3
00000028 ENDP ; 'USB_DataOutStage?T'
*** CODE SEGMENT '?PR?USB_StatusInStage?T?usbcore':
108: void USB_StatusInStage (void) {
00000000 B500 PUSH {LR}
109: 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)
110: }
0000000C BC08 POP {R3}
0000000E 4718 BX R3
00000010 ENDP ; 'USB_StatusInStage?T'
*** CODE SEGMENT '?PR?USB_StatusOutStage?T?usbcore':
119: void USB_StatusOutStage (void) {
00000000 B500 PUSH {LR}
120: USB_ReadEP(0x00, EP0Buf);
00000002 4800 LDR R1,=EP0Buf ; EP0Buf
00000004 2000 MOV R0,#0x0
00000006 F7FF BL USB_ReadEP?T ; T=0x0001 (1)
00000008 FFFB BL USB_ReadEP?T ; T=0x0001 (2)
121: }
0000000A BC08 POP {R3}
0000000C 4718 BX R3
ARM COMPILER V2.53, usbcore 02/11/07 08:22:52 PAGE 14
0000000E ENDP ; 'USB_StatusOutStage?T'
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -