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

📄 usbcore.lst

📁 usb声卡,采用phlips LPC2148控制器.
💻 LST
📖 第 1 页 / 共 5 页
字号:

   68:   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
   69:   USB_DeviceAddress = 0;
 00000006  2100      MOV         R1,#0x0
 00000008  4800      LDR         R0,=USB_DeviceAddress ; USB_DeviceAddress
 0000000A  7001      STRB        R1,[R0,#0x0] ; USB_DeviceAddress
   70:   USB_Configuration = 0;
 0000000C  4800      LDR         R0,=USB_Configuration ; USB_Configuration
 0000000E  7001      STRB        R1,[R0,#0x0] ; USB_Configuration
   71:   USB_EndPointMask  = 0x00010001;
 00000010  4800      LDR         R1,=0x10001
 00000012  4800      LDR         R0,=USB_EndPointMask ; USB_EndPointMask
 00000014  6001      STR         R1,[R0,#0x0] ; USB_EndPointMask
   72:   USB_EndPointHalt  = 0x00000000;
 00000016  2100      MOV         R1,#0x0
 00000018  4800      LDR         R0,=USB_EndPointHalt ; USB_EndPointHalt
 0000001A  6001      STR         R1,[R0,#0x0] ; USB_EndPointHalt
   73: }
 0000001C  4770      BX          R14
 0000001E          ENDP ; 'USB_ResetCore?T'


*** CODE SEGMENT '?PR?USB_SetupStage?T?usbcore':
   82: void USB_SetupStage (void) {
 00000000  B500      PUSH        {LR}
   83:   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)
   84: }
 0000000A  BC08      POP         {R3}
 0000000C  4718      BX          R3
 0000000E          ENDP ; 'USB_SetupStage?T'


*** CODE SEGMENT '?PR?USB_DataInStage?T?usbcore':
   93: void USB_DataInStage (void) {
 00000000  B510      PUSH        {R4,LR}
 00000002  ---- Variable 'cnt' assigned to Register 'R4' ----
 00000002            ; SCOPE-START
   96:   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
   97:     cnt = USB_MAX_PACKET0;
 0000000C  2440      MOV         R4,#0x40
   98:   } else {
 0000000E  E000      B           L_2  ; T=0x00000012
 00000010          L_1:
   99:     cnt = EP0Data.Count;
 00000010  1C04      MOV         R4,R0
  100:   }
 00000012          L_2:
  101:   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
  102:   EP0Data.pData += cnt;
 00000020  1C22      MOV         R2,R4 ; cnt
 00000022  4800      LDR         R0,=EP0Data ; EP0Data
 00000024  6801      LDR         R1,[R0,#0x0] ; EP0Data
ARM COMPILER V2.50a,  usbcore                                                              27/03/06  17:22:53  PAGE 15  

 00000026  1889      ADD         R1,R2
 00000028  6001      STR         R1,[R0,#0x0] ; EP0Data
  103:   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
  104: }
 00000038  BC10      POP         {R4}
 0000003A  BC08      POP         {R3}
 0000003C  4718      BX          R3
 0000003E          ENDP ; 'USB_DataInStage?T'


*** CODE SEGMENT '?PR?USB_DataOutStage?T?usbcore':
  113: void USB_DataOutStage (void) {
 00000000  B500      PUSH        {LR}
 00000002            ; SCOPE-START
  116:   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' ----
  117:   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
  118:   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
  119: }
 00000024  BC08      POP         {R3}
 00000026  4718      BX          R3
 00000028          ENDP ; 'USB_DataOutStage?T'


*** CODE SEGMENT '?PR?USB_StatusInStage?T?usbcore':
  128: void USB_StatusInStage (void) {
 00000000  B500      PUSH        {LR}
  129:   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)
  130: }
 0000000C  BC08      POP         {R3}
 0000000E  4718      BX          R3
 00000010          ENDP ; 'USB_StatusInStage?T'


*** CODE SEGMENT '?PR?USB_StatusOutStage?T?usbcore':
  139: void USB_StatusOutStage (void) {
 00000000  B500      PUSH        {LR}
  140:   USB_ReadEP(0x00, EP0Buf);
 00000002  4800      LDR         R1,=EP0Buf ; EP0Buf
 00000004  2000      MOV         R0,#0x0
 00000006  F7FF      BL          USB_ReadEP?T  ; T=0x0001  (1)
ARM COMPILER V2.50a,  usbcore                                                              27/03/06  17:22:53  PAGE 16  

 00000008  FFFB      BL          USB_ReadEP?T  ; T=0x0001  (2)
  141: }
 0000000A  BC08      POP         {R3}
 0000000C  4718      BX          R3
 0000000E          ENDP ; 'USB_StatusOutStage?T'


*** CODE SEGMENT '?PR?USB_GetStatus?T?usbcore':
  150: __inline BOOL USB_GetStatus (void) {
 00000000  B500      PUSH        {LR}
 00000002            ; SCOPE-START
  153:   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  D150      BNE         L_5  ; T=0x000000B8
  154:     case REQUEST_TO_DEVICE:
 00000016          L_4:
  155:       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
  156:       USB_DataInStage();
 0000001C  F7FF      BL          USB_DataInStage?T  ; T=0x0001  (1)
 0000001E  FFF0      BL          USB_DataInStage?T  ; T=0x0001  (2)
  157:       break;
 00000020  E04C      B           L_3  ; T=0x000000BC
  158:     case REQUEST_TO_INTERFACE:
 00000022          L_6:
  159:       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
  160:         *((__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
  161:         EP0Data.pData = EP0Buf;
 00000042  4800      LDR         R1,=EP0Buf ; EP0Buf
 00000044  4800      LDR         R0,=EP0Data ; EP0Data
 00000046  6001      STR         R1,[R0,#0x0] ; EP0Data
  162:         USB_DataInStage();
 00000048  F7FF      BL          USB_DataInStage?T  ; T=0x0001  (1)
 0000004A  FFDA      BL          USB_DataInStage?T  ; T=0x0001  (2)
  163:       } else {
 0000004C  E036      B           L_3  ; T=0x000000BC
 0000004E          L_8:
  164:         return (FALSE);
 0000004E  2000      MOV         R0,#0x0
 00000050  E035      B           L_10  ; T=0x000000BE
  167:     case REQUEST_TO_ENDPOINT:
 00000052          L_7:
ARM COMPILER V2.50a,  usbcore                                                              27/03/06  17:22:53  PAGE 17  

  168:       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
 00000058  208F      MOV         R0,#0x8F
 0000005A  4003      AND         R3,R0
 0000005C  ---- Variable 'n' assigned to Register 'R3' ----
  169:       m = (n & 0x80) ? ((1 << 16) << n) : (1 << n);
 0000005C  1C18      MOV         R0,R3 ; n
 0000005E  2180      MOV         R1,#0x80
 00000060  4208      TST         R0,R1 ; n
 00000062  D003      BEQ         L_11  ; T=0x0000006C
 00000064  1C18      MOV         R0,R3 ; n
 00000066  4800      LDR         R2,=0x10000
 00000068  4082      LSL         R2,R0
 0000006A  E002      B           L_12  ; T=0x00000072
 0000006C          L_11:
 0000006C  1C18      MOV         R0,R3 ; n
 0000006E  2201      MOV         R2,#0x1
 00000070  4082      LSL         R2,R0
 00000072          L_12:
 00000072  ---- Variable 'm' assigned to Register 'R2' ----
  170:       if (((USB_Configuration != 0) || ((n & 0x0F) == 0)) && (USB_EndPointMask & m)) {
 00000072  4800      LDR         R0,=USB_Configuration ; USB_Configuration
 00000074  7800      LDRB        R0,[R0,#0x0] ; USB_Configuration
 00000076  2800      CMP         R0,#0x0
 00000078  D103      BNE         L_14  ; T=0x00000082
 0000007A  1C18      MOV         R0,R3 ; n
 0000007C  210F      MOV         R1,#0xF
 0000007E  4208      TST         R0,R1 ; n
 00000080  D118      BNE         L_13  ; T=0x000000B4
 00000082          L_14:
 00000082  1C11      MOV         R1,R2 ; m
 00000084  4800      LDR         R0,=USB_EndPointMask ; USB_EndPointMask
 00000086  6800      LDR         R0,[R0,#0x0] ; USB_EndPointMask
 00000088  4008      AND         R0,R1 ; m
 0000008A  2800      CMP         R0,#0x0
 0000008C  D012      BEQ         L_13  ; T=0x000000B4
  171:         *((__packed WORD *)EP0Buf) = (USB_EndPointHalt & m) ? 1 : 0;
 0000008E  1C11      MOV         R1,R2 ; m
 00000090  4800      LDR         R0,=USB_EndPointHalt ; USB_EndPointHalt
 00000092  6800      LDR         R0,[R0,#0x0] ; USB_EndPointHalt
 00000094  4008      AND         R0,R1 ; m
 00000096  2800      CMP         R0,#0x0
 00000098  D001      BEQ         L_15  ; T=0x0000009E
 0000009A  2101      MOV         R1,#0x1
 0000009C  E000      B           L_16  ; T=0x000000A0
 0000009E          L_15:
 0000009E  2100      MOV         R1,#0x0
 000000A0          L_16:
 000000A0  4800      LDR         R0,=EP0Buf ; EP0Buf
 000000A2  7001      STRB        R1,[R0,#0x0] ; EP0Buf
 000000A4  0A09      LSR         R1,R1,#0x8
 000000A6  7041      STRB        R1,[R0,#0x1] ; EP0Buf
  172:         EP0Data.pData = EP0Buf;
 000000A8  4800      LDR         R1,=EP0Buf ; EP0Buf
 000000AA  4800      LDR         R0,=EP0Data ; EP0Data
 000000AC  6001      STR         R1,[R0,#0x0] ; EP0Data
  173:         USB_DataInStage();
 000000AE  F7FF      BL          USB_DataInStage?T  ; T=0x0001  (1)
 000000B0  FFA7      BL          USB_DataInStage?T  ; T=0x0001  (2)
  174:       } else {
 000000B2  E003      B           L_3  ; T=0x000000BC
 000000B4          L_13:
  175:         return (FALSE);
 000000B4  2000      MOV         R0,#0x0
ARM COMPILER V2.50a,  usbcore                                                              27/03/06  17:22:53  PAGE 18  

 000000B6  E002      B           L_10  ; T=0x000000BE
  178:     default:
 000000B8          L_5:
  179:       return (FALSE);
 000000B8  2000      MOV         R0,#0x0
 000000BA  E000      B           L_10  ; T=0x000000BE
  180:   }
 000000BC          L_3:

⌨️ 快捷键说明

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