⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usbcore.lst

📁 在ATMEL芯片下的USB底层程序的开发
💻 LST
📖 第 1 页 / 共 5 页
字号:
*** CODE SEGMENT '?PR?USB_GetStatus?T?usbcore':
  130: __inline BOOL USB_GetStatus (void) {
 00000000  B500      PUSH        {LR}
 00000002            ; SCOPE-START
  133:   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  D152      BNE         L_5  ; T=0x000000BC
  134:     case REQUEST_TO_DEVICE:
 00000016          L_4:
  135:       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
  136:       USB_DataInStage();
 0000001C  F7FF      BL          USB_DataInStage?T  ; T=0x0001  (1)
 0000001E  FFF0      BL          USB_DataInStage?T  ; T=0x0001  (2)
  137:       break;
 00000020  E04E      B           L_3  ; T=0x000000C0
  138:     case REQUEST_TO_INTERFACE:
 00000022          L_6:
  139:       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
  140:         *((__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
  141:         EP0Data.pData = EP0Buf;
 00000042  4800      LDR         R1,=EP0Buf ; EP0Buf
 00000044  4800      LDR         R0,=EP0Data ; EP0Data
 00000046  6001      STR         R1,[R0,#0x0] ; EP0Data
  142:         USB_DataInStage();
 00000048  F7FF      BL          USB_DataInStage?T  ; T=0x0001  (1)
 0000004A  FFDA      BL          USB_DataInStage?T  ; T=0x0001  (2)
  143:       } else {
 0000004C  E038      B           L_3  ; T=0x000000C0
 0000004E          L_8:
  144:         return (FALSE);
 0000004E  2000      MOV         R0,#0x0
 00000050  E037      B           L_10  ; T=0x000000C2
  147:     case REQUEST_TO_ENDPOINT:
 00000052          L_7:
  148:       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
ARM COMPILER V2.53,  usbcore                                                               31/10/07  09:22:44  PAGE 15  

 00000058  208F      MOV         R0,#0x8F
 0000005A  4003      AND         R3,R0
 0000005C  ---- Variable 'n' assigned to Register 'R3' ----
  149:       m = (n & 0x80) ? ((1 << 16) << (n & 0x0F)) : (1 << n);
 0000005C  1C18      MOV         R0,R3 ; n
 0000005E  2180      MOV         R1,#0x80
 00000060  4208      TST         R0,R1 ; n
 00000062  D005      BEQ         L_11  ; T=0x00000070
 00000064  1C18      MOV         R0,R3 ; n
 00000066  210F      MOV         R1,#0xF
 00000068  4008      AND         R0,R1
 0000006A  4800      LDR         R2,=0x10000
 0000006C  4082      LSL         R2,R0
 0000006E  E002      B           L_12  ; T=0x00000076
 00000070          L_11:
 00000070  1C18      MOV         R0,R3 ; n
 00000072  2201      MOV         R2,#0x1
 00000074  4082      LSL         R2,R0
 00000076          L_12:
 00000076  ---- Variable 'm' assigned to Register 'R2' ----
  150:       if (((USB_Configuration != 0) || ((n & 0x0F) == 0)) && (USB_EndPointMask & m)) {
 00000076  4800      LDR         R0,=USB_Configuration ; USB_Configuration
 00000078  7800      LDRB        R0,[R0,#0x0] ; USB_Configuration
 0000007A  2800      CMP         R0,#0x0
 0000007C  D103      BNE         L_14  ; T=0x00000086
 0000007E  1C18      MOV         R0,R3 ; n
 00000080  210F      MOV         R1,#0xF
 00000082  4208      TST         R0,R1 ; n
 00000084  D118      BNE         L_13  ; T=0x000000B8
 00000086          L_14:
 00000086  1C11      MOV         R1,R2 ; m
 00000088  4800      LDR         R0,=USB_EndPointMask ; USB_EndPointMask
 0000008A  6800      LDR         R0,[R0,#0x0] ; USB_EndPointMask
 0000008C  4008      AND         R0,R1 ; m
 0000008E  2800      CMP         R0,#0x0
 00000090  D012      BEQ         L_13  ; T=0x000000B8
  151:         *((__packed WORD *)EP0Buf) = (USB_EndPointHalt & m) ? 1 : 0;
 00000092  1C11      MOV         R1,R2 ; m
 00000094  4800      LDR         R0,=USB_EndPointHalt ; USB_EndPointHalt
 00000096  6800      LDR         R0,[R0,#0x0] ; USB_EndPointHalt
 00000098  4008      AND         R0,R1 ; m
 0000009A  2800      CMP         R0,#0x0
 0000009C  D001      BEQ         L_15  ; T=0x000000A2
 0000009E  2101      MOV         R1,#0x1
 000000A0  E000      B           L_16  ; T=0x000000A4
 000000A2          L_15:
 000000A2  2100      MOV         R1,#0x0
 000000A4          L_16:
 000000A4  4800      LDR         R0,=EP0Buf ; EP0Buf
 000000A6  7001      STRB        R1,[R0,#0x0] ; EP0Buf
 000000A8  0A09      LSR         R1,R1,#0x8
 000000AA  7041      STRB        R1,[R0,#0x1] ; EP0Buf
  152:         EP0Data.pData = EP0Buf;
 000000AC  4800      LDR         R1,=EP0Buf ; EP0Buf
 000000AE  4800      LDR         R0,=EP0Data ; EP0Data
 000000B0  6001      STR         R1,[R0,#0x0] ; EP0Data
  153:         USB_DataInStage();
 000000B2  F7FF      BL          USB_DataInStage?T  ; T=0x0001  (1)
 000000B4  FFA5      BL          USB_DataInStage?T  ; T=0x0001  (2)
  154:       } else {
 000000B6  E003      B           L_3  ; T=0x000000C0
 000000B8          L_13:
  155:         return (FALSE);
 000000B8  2000      MOV         R0,#0x0
 000000BA  E002      B           L_10  ; T=0x000000C2
  158:     default:
ARM COMPILER V2.53,  usbcore                                                               31/10/07  09:22:44  PAGE 16  

 000000BC          L_5:
  159:       return (FALSE);
 000000BC  2000      MOV         R0,#0x0
 000000BE  E000      B           L_10  ; T=0x000000C2
  160:   }
 000000C0          L_3:
  161:   return (TRUE);
 000000C0  2001      MOV         R0,#0x1
 000000C2            ; SCOPE-END
  162: }
 000000C2          L_10:
 000000C2  BC08      POP         {R3}
 000000C4  4718      BX          R3
 000000C6          ENDP ; 'USB_GetStatus?T'


*** CODE SEGMENT '?PR?USB_SetClrFeature?T?usbcore':
  172: __inline BOOL USB_SetClrFeature (DWORD sc) {
 00000000  B570      PUSH        {R4-R6,LR}
 00000002  1C06      MOV         R6,R0 ; sc
 00000004  ---- Variable 'sc' assigned to Register 'R6' ----
 00000004            ; SCOPE-START
  175:   switch (SetupPacket.bmRequestType.BM.Recipient) {
 00000004  4800      LDR         R0,=SetupPacket ; SetupPacket
 00000006  7800      LDRB        R0,[R0,#0x0] ; SetupPacket
 00000008  211F      MOV         R1,#0x1F
 0000000A  4008      AND         R0,R1
 0000000C  2801      CMP         R0,#0x1
 0000000E  D023      BEQ         L_21  ; T=0x00000058
 00000010  2802      CMP         R0,#0x2
 00000012  D023      BEQ         L_22  ; T=0x0000005C
 00000014  2800      CMP         R0,#0x0
 00000016  D163      BNE         L_20  ; T=0x000000E0
  176:     case REQUEST_TO_DEVICE:
 00000018          L_19:
  177:       if (SetupPacket.wValue.W == USB_FEATURE_REMOTE_WAKEUP) {
 00000018  4800      LDR         R1,=SetupPacket + 0x2 ; SetupPacket+2
 0000001A  7808      LDRB        R0,[R1,#0x0] ; SetupPacket+2
 0000001C  784A      LDRB        R2,[R1,#0x1] ; SetupPacket+2
 0000001E  0212      LSL         R2,R2,#0x8
 00000020  4310      ORR         R0,R2
 00000022  2801      CMP         R0,#0x1
 00000024  D116      BNE         L_23  ; T=0x00000054
  178:         if (sc) {
 00000026  1C30      MOV         R0,R6 ; sc
 00000028  2800      CMP         R0,#0x0 ; sc
 0000002A  D009      BEQ         L_24  ; T=0x00000040
  179:           USB_WakeUpCfg(TRUE);
 0000002C  2001      MOV         R0,#0x1
 0000002E  F7FF      BL          USB_WakeUpCfg?T  ; T=0x0001  (1)
 00000030  FFE7      BL          USB_WakeUpCfg?T  ; T=0x0001  (2)
  180:           USB_DeviceStatus |=  USB_GETSTATUS_REMOTE_WAKEUP;
 00000032  4800      LDR         R0,=USB_DeviceStatus ; USB_DeviceStatus
 00000034  8801      LDRH        R1,[R0,#0x0] ; USB_DeviceStatus
 00000036  2002      MOV         R0,#0x2
 00000038  4301      ORR         R1,R0
 0000003A  4800      LDR         R0,=USB_DeviceStatus ; USB_DeviceStatus
 0000003C  8001      STRH        R1,[R0,#0x0] ; USB_DeviceStatus
  181:         } else {
 0000003E  E051      B           L_18  ; T=0x000000E4
 00000040          L_24:
  182:           USB_WakeUpCfg(FALSE);
 00000040  2000      MOV         R0,#0x0
 00000042  F7FF      BL          USB_WakeUpCfg?T  ; T=0x0001  (1)
 00000044  FFDD      BL          USB_WakeUpCfg?T  ; T=0x0001  (2)
  183:           USB_DeviceStatus &= ~USB_GETSTATUS_REMOTE_WAKEUP;
 00000046  4800      LDR         R0,=USB_DeviceStatus ; USB_DeviceStatus
 00000048  8801      LDRH        R1,[R0,#0x0] ; USB_DeviceStatus
ARM COMPILER V2.53,  usbcore                                                               31/10/07  09:22:44  PAGE 17  

 0000004A  4800      LDRH        R0,=0xFFFD
 0000004C  4001      AND         R1,R0
 0000004E  4800      LDR         R0,=USB_DeviceStatus ; USB_DeviceStatus
 00000050  8001      STRH        R1,[R0,#0x0] ; USB_DeviceStatus
  185:       } else {
 00000052  E047      B           L_18  ; T=0x000000E4
 00000054          L_23:
  186:         return (FALSE);
 00000054  2000      MOV         R0,#0x0
 00000056  E046      B           L_27  ; T=0x000000E6
  189:     case REQUEST_TO_INTERFACE:
 00000058          L_21:
  190:       return (FALSE);
 00000058  2000      MOV         R0,#0x0
 0000005A  E044      B           L_27  ; T=0x000000E6
  191:     case REQUEST_TO_ENDPOINT:
 0000005C          L_22:
  192:       n = SetupPacket.wIndex.WB.L & 0x8F;
 0000005C  4800      LDR         R0,=SetupPacket + 0x4 ; SetupPacket+4
 0000005E  7800      LDRB        R0,[R0,#0x0] ; SetupPacket+4
 00000060  1C05      MOV         R5,R0
 00000062  208F      MOV         R0,#0x8F
 00000064  4005      AND         R5,R0
 00000066  ---- Variable 'n' assigned to Register 'R5' ----
  193:       m = (n & 0x80) ? ((1 << 16) << (n & 0x0F)) : (1 << n);
 00000066  1C28      MOV         R0,R5 ; n
 00000068  2180      MOV         R1,#0x80
 0000006A  4208      TST         R0,R1 ; n
 0000006C  D005      BEQ         L_28  ; T=0x0000007A
 0000006E  1C28      MOV         R0,R5 ; n
 00000070  210F      MOV         R1,#0xF
 00000072  4008      AND         R0,R1
 00000074  4800      LDR         R4,=0x10000
 00000076  4084      LSL         R4,R0
 00000078  E002      B           L_29  ; T=0x00000080
 0000007A          L_28:
 0000007A  1C28      MOV         R0,R5 ; n
 0000007C  2401      MOV         R4,#0x1
 0000007E  4084      LSL         R4,R0
 00000080          L_29:
 00000080  ---- Variable 'm' assigned to Register 'R4' ----
  194:       if ((USB_Configuration != 0) && ((n & 0x0F) != 0) && (USB_EndPointMask & m)) {
 00000080  4800      LDR         R0,=USB_Configuration ; USB_Configuration
 00000082  7800      LDRB        R0,[R0,#0x0] ; USB_Configuration
 00000084  2800      CMP         R0,#0x0
 00000086  D029      BEQ         L_30  ; T=0x000000DC
 00000088  1C28      MOV         R0,R5 ; n
 0000008A  210F      MOV         R1,#0xF
 0000008C  4208      TST         R0,R1 ; n
 0000008E  D025      BEQ         L_30  ; T=0x000000DC
 00000090  1C21      MOV         R1,R4 ; m
 00000092  4800      LDR         R0,=USB_EndPointMask ; USB_EndPointMask
 00000094  6800      LDR         R0,[R0,#0x0] ; USB_EndPointMask
 00000096  4008      AND         R0,R1 ; m
 00000098  2800      CMP         R0,#0x0
 0000009A  D01F      BEQ         L_30  ; T=0x000000DC
  195:         if (SetupPacket.wValue.W == USB_FEATURE_ENDPOINT_STALL) {
 0000009C  4800      LDR         R1,=SetupPacket + 0x2 ; SetupPacket+2
 0000009E  7808      LDRB        R0,[R1,#0x0] ; SetupPacket+2
 000000A0  784A      LDRB        R2,[R1,#0x1] ; SetupPacket+2
 000000A2  0212      LSL         R2,R2,#0x8
 000000A4  4310      ORR         R0,R2
 000000A6  2800      CMP         R0,#0x0
 000000A8  D116      BNE         L_31  ; T=0x000000D8
  196:           if (sc) {
 000000AA  1C30      MOV         R0,R6 ; sc
ARM COMPILER V2.53,  usbcore                                                               31/10/07  09:22:44  PAGE 18  

 000000AC  2800      CMP         R0,#0x0 ; sc
 000000AE  D009      BEQ         L_32  ; T=0x000000C4
  197:             USB_SetStallEP(n);
 000000B0  1C28      MOV         R0,R5 ; n
 000000B2  F7FF      BL          USB_SetStallEP?T  ; T=0x0001  (1)
 000000B4  FFA5      BL          USB_SetStallEP?T  ; T=0x0001  (2)
  198:             USB_EndPointHalt |=  m;
 000000B6  1C20      MOV         R0,R4 ; m
 000000B8  4800      LDR         R1,=USB_EndPointHalt ; USB_EndPointHalt
 000000BA  6809      LDR         R1,[R1,#0x0] ; USB_EndPointHalt
 000000BC  4301      ORR         R1,R0 ; m
 000000BE  4800      LDR         R0,=USB_EndPointHalt ; USB_EndPointHalt
 000000C0  6001      STR         R1,[R0,#0x0] ; USB_EndPointHalt
  199:           } else {
 000000C2  E00F      B           L_18  ; T=0x000000E4
 000000C4          L_32:
  200:             USB_ClrStallEP(n);
 000000C4  1C28      MOV         R0,R5 ; n
 000000C6  F7FF      BL          USB_ClrStallEP?T  ; T=0x0001  (1)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -