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

📄 usbhw.lst

📁 针对飞利浦LPC214x的虚拟串口程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
  219:     WrCmdDat(CMD_SET_ADDR, DAT_WR_BYTE(DEV_EN | adr)); /* Don't wait for next */
 00000004  1C18      MOV         R0,R3 ; adr
 00000006  0601      LSL         R1,R0,#0x18 ; adr
 00000008  0E09      LSR         R1,R1,#0x18
 0000000A  2080      MOV         R0,#0x80
 0000000C  4301      ORR         R1,R0
 0000000E  0409      LSL         R1,R1,#0x10
 00000010  4840      LDR         R0,=0x100
 00000012  4301      ORR         R1,R0
 00000014  4800      LDR         R0,=0xD00500
 00000016  F7FF      BL          WrCmdDat?T  ; T=0x0001  (1)
 00000018  FFF3      BL          WrCmdDat?T  ; T=0x0001  (2)
  220:     WrCmdDat(CMD_SET_ADDR, DAT_WR_BYTE(DEV_EN | adr)); /*  Setup Status Phase */
 0000001A  1C18      MOV         R0,R3 ; adr
 0000001C  0601      LSL         R1,R0,#0x18 ; adr
 0000001E  0E09      LSR         R1,R1,#0x18
 00000020  2080      MOV         R0,#0x80
 00000022  4301      ORR         R1,R0
 00000024  0409      LSL         R1,R1,#0x10
 00000026  4840      LDR         R0,=0x100
 00000028  4301      ORR         R1,R0
 0000002A  4800      LDR         R0,=0xD00500
 0000002C  F7FF      BL          WrCmdDat?T  ; T=0x0001  (1)
 0000002E  FFE8      BL          WrCmdDat?T  ; T=0x0001  (2)
  221: }
 00000030  BC08      POP         {R3}
 00000032  4718      BX          R3
 00000034          ENDP ; 'USB_SetAddress?T'


*** CODE SEGMENT '?PR?USB_Configure?T?usbhw':
  230: void USB_Configure (BOOL cfg) {
 00000000  B500      PUSH        {LR}
 00000002  1C01      MOV         R1,R0 ; cfg
 00000004  ---- Variable 'cfg' assigned to Register 'R1' ----
  232:     WrCmdDat(CMD_CFG_DEV, DAT_WR_BYTE(cfg ? CONF_DVICE : 0));
 00000004  1C08      MOV         R0,R1 ; cfg
 00000006  2800      CMP         R0,#0x0 ; cfg
 00000008  D001      BEQ         L_35  ; T=0x0000000E
 0000000A  2101      MOV         R1,#0x1
 0000000C  E000      B           L_36  ; T=0x00000010
 0000000E          L_35:
 0000000E  2100      MOV         R1,#0x0
 00000010          L_36:
 00000010  0409      LSL         R1,R1,#0x10
 00000012  4840      LDR         R0,=0x100
 00000014  4301      ORR         R1,R0
 00000016  4800      LDR         R0,=0xD80500
 00000018  F7FF      BL          WrCmdDat?T  ; T=0x0001  (1)
 0000001A  FFF2      BL          WrCmdDat?T  ; T=0x0001  (2)
  234:     REALIZE_EP = 0x00000003;
 0000001C  2103      MOV         R1,#0x3
 0000001E  4800      LDR         R0,=0xE0090044
 00000020  6001      STR         R1,[R0,#0x0]
  235:     while ((DEV_INT_STAT & EP_RLZED_INT) == 0);
 00000022          L_37:
 00000022  4800      LDR         R0,=0xE0090000
 00000024  6800      LDR         R0,[R0,#0x0]
 00000026  4940      LDR         R1,=0x100
 00000028  4208      TST         R0,R1
 0000002A  D0FA      BEQ         L_37  ; T=0x00000022
  236:     DEV_INT_CLR = EP_RLZED_INT;
 0000002C  4800      LDR         R0,=0xE0090008
ARM COMPILER V2.53,  usbhw                                                                 09/06/07  15:42:23  PAGE 15  

 0000002E  6001      STR         R1,[R0,#0x0]
  237: }
 00000030  BC08      POP         {R3}
 00000032  4718      BX          R3
 00000034          ENDP ; 'USB_Configure?T'


*** CODE SEGMENT '?PR?USB_ConfigEP?T?usbhw':
  246: void USB_ConfigEP (USB_ENDPOINT_DESCRIPTOR *pEPD) {
 00000000  B510      PUSH        {R4,LR}
 00000002  1C04      MOV         R4,R0 ; pEPD
 00000004  ---- Variable 'pEPD' assigned to Register 'R4' ----
 00000004            ; SCOPE-START
  249:     num = EPAdr(pEPD->bEndpointAddress);
 00000004  1C20      MOV         R0,R4 ; pEPD
 00000006  7880      LDRB        R0,[R0,#0x2]
 00000008  F7FF      BL          EPAdr?T  ; T=0x0001  (1)
 0000000A  FFFA      BL          EPAdr?T  ; T=0x0001  (2)
 0000000C  ---- Variable 'num' assigned to Register 'R0' ----
  250:     REALIZE_EP |= (1 << num);
 0000000C  1C01      MOV         R1,R0 ; num
 0000000E  2301      MOV         R3,#0x1
 00000010  408B      LSL         R3,R1
 00000012  4800      LDR         R1,=0xE0090044
 00000014  680A      LDR         R2,[R1,#0x0]
 00000016  431A      ORR         R2,R3
 00000018  600A      STR         R2,[R1,#0x0]
  251:     EP_INDEX = num;
 0000001A  1C01      MOV         R1,R0 ; num
 0000001C  4800      LDR         R0,=0xE0090048
 0000001E  6001      STR         R1,[R0,#0x0]
  252:     MAXPACKET_SIZE = pEPD->wMaxPacketSize;
 00000020  1C21      MOV         R1,R4 ; pEPD
 00000022  3104      ADD         R1,#0x4
 00000024  7808      LDRB        R0,[R1,#0x0]
 00000026  784A      LDRB        R2,[R1,#0x1]
 00000028  0212      LSL         R2,R2,#0x8
 0000002A  4310      ORR         R0,R2
 0000002C  1C01      MOV         R1,R0
 0000002E  4800      LDR         R0,=0xE009004C
 00000030  6001      STR         R1,[R0,#0x0]
  253:     while ((DEV_INT_STAT & EP_RLZED_INT) == 0);
 00000032          L_41:
 00000032  4800      LDR         R0,=0xE0090000
 00000034  6800      LDR         R0,[R0,#0x0]
 00000036  4940      LDR         R1,=0x100
 00000038  4208      TST         R0,R1
 0000003A  D0FA      BEQ         L_41  ; T=0x00000032
  254:     DEV_INT_CLR = EP_RLZED_INT;
 0000003C  4800      LDR         R0,=0xE0090008
 0000003E  6001      STR         R1,[R0,#0x0]
 00000040            ; SCOPE-END
  255: }
 00000040  BC10      POP         {R4}
 00000042  BC08      POP         {R3}
 00000044  4718      BX          R3
 00000046          ENDP ; 'USB_ConfigEP?T'


*** CODE SEGMENT '?PR?USB_DirCtrlEP?T?usbhw':
  266: }
 00000000  4770      BX          R14
 00000002          ENDP ; 'USB_DirCtrlEP?T'


*** CODE SEGMENT '?PR?USB_EnableEP?T?usbhw':
  277: void USB_EnableEP (BYTE EPNum) {
 00000000  B500      PUSH        {LR}
 00000002  1C01      MOV         R1,R0 ; EPNum
 00000004  ---- Variable 'EPNum' assigned to Register 'R1' ----
  278:     WrCmdDat(CMD_SET_EP_STAT(EPAdr(EPNum)), DAT_WR_BYTE(0));
 00000004  1C08      MOV         R0,R1 ; EPNum
ARM COMPILER V2.53,  usbhw                                                                 09/06/07  15:42:23  PAGE 16  

 00000006  0600      LSL         R0,R0,#0x18 ; EPNum
 00000008  0E00      LSR         R0,R0,#0x18
 0000000A  F7FF      BL          EPAdr?T  ; T=0x0001  (1)
 0000000C  FFF9      BL          EPAdr?T  ; T=0x0001  (2)
 0000000E  0400      LSL         R0,R0,#0x10 ; EPAdr?T
 00000010  4800      LDR         R1,=0x400500
 00000012  4308      ORR         R0,R1
 00000014  4940      LDR         R1,=0x100
 00000016  F7FF      BL          WrCmdDat?T  ; T=0x0001  (1)
 00000018  FFF3      BL          WrCmdDat?T  ; T=0x0001  (2)
  279: }
 0000001A  BC08      POP         {R3}
 0000001C  4718      BX          R3
 0000001E          ENDP ; 'USB_EnableEP?T'


*** CODE SEGMENT '?PR?USB_DisableEP?T?usbhw':
  290: void USB_DisableEP (BYTE EPNum) {
 00000000  B500      PUSH        {LR}
 00000002  1C01      MOV         R1,R0 ; EPNum
 00000004  ---- Variable 'EPNum' assigned to Register 'R1' ----
  291:     WrCmdDat(CMD_SET_EP_STAT(EPAdr(EPNum)), DAT_WR_BYTE(EP_STAT_DA));
 00000004  1C08      MOV         R0,R1 ; EPNum
 00000006  0600      LSL         R0,R0,#0x18 ; EPNum
 00000008  0E00      LSR         R0,R0,#0x18
 0000000A  F7FF      BL          EPAdr?T  ; T=0x0001  (1)
 0000000C  FFF9      BL          EPAdr?T  ; T=0x0001  (2)
 0000000E  0400      LSL         R0,R0,#0x10 ; EPAdr?T
 00000010  4800      LDR         R1,=0x400500
 00000012  4308      ORR         R0,R1
 00000014  4800      LDR         R1,=0x200100
 00000016  F7FF      BL          WrCmdDat?T  ; T=0x0001  (1)
 00000018  FFF3      BL          WrCmdDat?T  ; T=0x0001  (2)
  292: }
 0000001A  BC08      POP         {R3}
 0000001C  4718      BX          R3
 0000001E          ENDP ; 'USB_DisableEP?T'


*** CODE SEGMENT '?PR?USB_ResetEP?T?usbhw':
  303: void USB_ResetEP (BYTE EPNum) {
 00000000  B500      PUSH        {LR}
 00000002  1C01      MOV         R1,R0 ; EPNum
 00000004  ---- Variable 'EPNum' assigned to Register 'R1' ----
  304:     WrCmdDat(CMD_SET_EP_STAT(EPAdr(EPNum)), DAT_WR_BYTE(0));
 00000004  1C08      MOV         R0,R1 ; EPNum
 00000006  0600      LSL         R0,R0,#0x18 ; EPNum
 00000008  0E00      LSR         R0,R0,#0x18
 0000000A  F7FF      BL          EPAdr?T  ; T=0x0001  (1)
 0000000C  FFF9      BL          EPAdr?T  ; T=0x0001  (2)
 0000000E  0400      LSL         R0,R0,#0x10 ; EPAdr?T
 00000010  4800      LDR         R1,=0x400500
 00000012  4308      ORR         R0,R1
 00000014  4940      LDR         R1,=0x100
 00000016  F7FF      BL          WrCmdDat?T  ; T=0x0001  (1)
 00000018  FFF3      BL          WrCmdDat?T  ; T=0x0001  (2)
  305: }
 0000001A  BC08      POP         {R3}
 0000001C  4718      BX          R3
 0000001E          ENDP ; 'USB_ResetEP?T'


*** CODE SEGMENT '?PR?USB_SetStallEP?T?usbhw':
  316: void USB_SetStallEP (BYTE EPNum) {
 00000000  B500      PUSH        {LR}
 00000002  1C01      MOV         R1,R0 ; EPNum
 00000004  ---- Variable 'EPNum' assigned to Register 'R1' ----
  317:     WrCmdDat(CMD_SET_EP_STAT(EPAdr(EPNum)), DAT_WR_BYTE(EP_STAT_ST));
 00000004  1C08      MOV         R0,R1 ; EPNum
 00000006  0600      LSL         R0,R0,#0x18 ; EPNum
 00000008  0E00      LSR         R0,R0,#0x18
 0000000A  F7FF      BL          EPAdr?T  ; T=0x0001  (1)
ARM COMPILER V2.53,  usbhw                                                                 09/06/07  15:42:23  PAGE 17  

 0000000C  FFF9      BL          EPAdr?T  ; T=0x0001  (2)
 0000000E  0400      LSL         R0,R0,#0x10 ; EPAdr?T
 00000010  4800      LDR         R1,=0x400500
 00000012  4308      ORR         R0,R1
 00000014  4800      LDR         R1,=0x10100
 00000016  F7FF      BL          WrCmdDat?T  ; T=0x0001  (1)
 00000018  FFF3      BL          WrCmdDat?T  ; T=0x0001  (2)
  318: }
 0000001A  BC08      POP         {R3}
 0000001C  4718      BX          R3
 0000001E          ENDP ; 'USB_SetStallEP?T'


*** CODE SEGMENT '?PR?USB_ClrStallEP?T?usbhw':
  329: void USB_ClrStallEP (BYTE EPNum) {
 00000000  B500      PUSH        {LR}
 00000002  1C01      MOV         R1,R0 ; EPNum
 00000004  ---- Variable 'EPNum' assigned to Register 'R1' ----
  330:     WrCmdDat(CMD_SET_EP_STAT(EPAdr(EPNum)), DAT_WR_BYTE(0));
 00000004  1C08      MOV         R0,R1 ; EPNum
 00000006  0600      LSL         R0,R0,#0x18 ; EPNum
 00000008  0E00      LSR         R0,R0,#0x18
 0000000A  F7FF      BL          EPAdr?T  ; T=0x0001  (1)
 0000000C  FFF9      BL          EPAdr?T  ; T=0x0001  (2)
 0000000E  0400      LSL         R0,R0,#0x10 ; EPAdr?T
 00000010  4800      LDR         R1,=0x400500
 00000012  4308      ORR         R0,R1
 00000014  4940      LDR         R1,=0x100
 00000016  F7FF      BL          WrCmdDat?T  ; T=0x0001  (1)
 00000018  FFF3      BL          WrCmdDat?T  ; T=0x0001  (2)
  331: }
 0000001A  BC08      POP         {R3}
 0000001C  4718      BX          R3
 0000001E          ENDP ; 'USB_ClrStallEP?T'


*** CODE SEGMENT '?PR?USB_ReadEP?T?usbhw':
  343: DWORD USB_ReadEP (BYTE EPNum, BYTE *pData) {
 00000000  B570      PUSH        {R4-R6,LR}
 00000002  ---- Variable 'pData' assigned to Register 'R1' ----
 00000002  1C03      MOV         R3,R0 ; EPNum
 00000004  ---- Variable 'EPNum' assigned to Register 'R3' ----
 00000004            ; SCOPE-START
  346:     USB_CTRL = ((EPNum & 0x0F) << 2) | CTRL_RD_EN;
 00000004  1C18      MOV         R0,R3 ; EPNum
 00000006  0602      LSL         R2,R0,#0x18 ; EPNum
 00000008  0E12      LSR         R2,R2,#0x18
 0000000A  200F      MOV         R0,#0xF
 0000000C  4002      AND         R2,R0
 0000000E  0092      LSL         R2,R2,#0x2
 00000010  2001      MOV         R0,#0x1
 00000012  4302      ORR         R2,R0
 00000014  4800      LDR         R0,=0xE0090028
 00000016  6002      STR         R2,[R0,#0x0]
  348:     do {
 00000018          L_45:
  349:         cnt = RX_PLENGTH;
 00000018  4800      LDR         R0,=0xE0090020
 0000001A  6804      LDR         R4,[R0,#0x0]
 0000001C  ---- Variable 'cnt' assigned to Register 'R4' ----
  350:     } while ((cnt & PKT_RDY) == 0);
 0000001C  1C20      MOV         R0,R4 ; cnt
 0000001E  4800      LDR         R2,=0x800
 00000020  4210      TST         R0,R2 ; cnt
 00000022  D0F9      BEQ         L_45  ; T=0x00000018
  351:     cnt &= PKT_LNGTH_MASK;
 00000024  4800      LDR         R0,=0x3FF
 00000026  4004      AND         R4,R0
  353:     for (n = 0; n < (cnt + 3) / 4; n++) {
 00000028  2000      MOV         R0,#0x0
ARM COMPILER V2.53,  usbhw                                                                 09/06/07  15:42:23  PAGE 18  

 0000002A  ---- Variable 'n' assigned to Register 'R0' ----
 0000002A  E00B      B           L_51  ; T=0x00000044
 0000002C          L_52:
  354:         *((__packed DWORD *)pData) = RX_DATA;
 0000002C  4800      LDR         R2,=0xE0090018
 0000002E  6816      LDR         R6,[R2,#0x0]
 00000030  1C0D      MOV         R5,R1 ; pData
 00000032  702E      STRB        R6,[R5,#0x0] ; pData
 00000034  0A36      LSR         R6,R6,#0x8
 00000036  706E      STRB        R6,[R5,#0x1] ; pData
 00000038  0A36      LSR         R6,R6,#0x8
 0000003A  70AE      STRB        R6,[R5,#0x2] ; pData
 0000003C  0A36      LSR         R6,R6,#0x8
 0000003E  70EE      STRB        R6,[R5,#0x3] ; pData
  355:         pData += 4;
 00000040  3104      ADD         R1,#0x4
  356:     }
 00000042  3001      ADD         R0,#0x1
 00000044          L_51:
 00000044  1C25      MOV         R5,R4 ; cnt

⌨️ 快捷键说明

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