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

📄 usbhw.lst

📁 NXP产品LPC23XX的开发板的源文件
💻 LST
📖 第 1 页 / 共 5 页
字号:
 0000000E  4800      LDR         R0,=0xE0090000
 00000010  6800      LDR         R0,[R0,#0x0]
 00000012  2110      MOV         R1,#0x10
 00000014  4208      TST         R0,R1
 00000016  D0FA      BEQ         L_7  ; T=0x0000000E
   92:   DEV_INT_CLR = CCEMTY_INT;
 00000018  4800      LDR         R0,=0xE0090008
 0000001A  6001      STR         R1,[R0,#0x0]
   93:   CMD_CODE = val;
 0000001C  1C11      MOV         R1,R2 ; val
 0000001E  4800      LDR         R0,=0xE0090010
 00000020  6001      STR         R1,[R0,#0x0]
   94:   while ((DEV_INT_STAT & CCEMTY_INT) == 0);
 00000022          L_11:
 00000022  4800      LDR         R0,=0xE0090000
 00000024  6800      LDR         R0,[R0,#0x0]
 00000026  2110      MOV         R1,#0x10
 00000028  4208      TST         R0,R1
 0000002A  D0FA      BEQ         L_11  ; T=0x00000022
   95: }
 0000002C  4770      BX          R14
 0000002E          ENDP ; 'WrCmdDat?T'


*** CODE SEGMENT '?PR?RdCmdDat?T?usbhw':
  104: DWORD RdCmdDat (DWORD cmd) {
 00000000  ---- Variable 'cmd' assigned to Register 'R0' ----
  106:   DEV_INT_CLR = CCEMTY_INT | CDFULL_INT;
 00000000  2230      MOV         R2,#0x30
 00000002  4800      LDR         R1,=0xE0090008
ARM COMPILER V2.53,  usbhw                                                                 05/09/06  14:20:49  PAGE 15  

 00000004  600A      STR         R2,[R1,#0x0]
  107:   CMD_CODE = cmd;
 00000006  1C01      MOV         R1,R0 ; cmd
 00000008  4800      LDR         R0,=0xE0090010
 0000000A  6001      STR         R1,[R0,#0x0]
  108:   while ((DEV_INT_STAT & CDFULL_INT) == 0);
 0000000C          L_15:
 0000000C  4800      LDR         R0,=0xE0090000
 0000000E  6800      LDR         R0,[R0,#0x0]
 00000010  2120      MOV         R1,#0x20
 00000012  4208      TST         R0,R1
 00000014  D0FA      BEQ         L_15  ; T=0x0000000C
  109:   return (CMD_DATA);
 00000016  4800      LDR         R0,=0xE0090014
 00000018  6800      LDR         R0,[R0,#0x0]
  110: }
 0000001A  4770      BX          R14
 0000001C          ENDP ; 'RdCmdDat?T'


*** CODE SEGMENT '?PR?USB_Init?T?usbhw':
  119: void USB_Init (void) {
 00000000  B500      PUSH        {LR}
  121:   PINSEL1 &= ~0xC000C000;
 00000002  4800      LDR         R2,=0x3FFF3FFF
 00000004  4800      LDR         R0,=0xE002C004
 00000006  6801      LDR         R1,[R0,#0x0]
 00000008  4011      AND         R1,R2
 0000000A  6001      STR         R1,[R0,#0x0]
  122:   PINSEL1 |=  0x40004000;                   /* Select USB Link, VBUS */
 0000000C  4800      LDR         R2,=0x40004000
 0000000E  4800      LDR         R0,=0xE002C004
 00000010  6801      LDR         R1,[R0,#0x0]
 00000012  4311      ORR         R1,R2
 00000014  6001      STR         R1,[R0,#0x0]
  124:   PCONP |= 0x80000000;                      /* Turn On USB PCLK */
 00000016  4800      LDR         R2,=0x80000000
 00000018  4800      LDR         R0,=0xE01FC0C4
 0000001A  6801      LDR         R1,[R0,#0x0]
 0000001C  4311      ORR         R1,R2
 0000001E  6001      STR         R1,[R0,#0x0]
  127:   PLL48CFG  = 0x23;                         /* M = 4, P = 2 */
 00000020  2123      MOV         R1,#0x23
 00000022  4800      LDR         R0,=0xE01FC0A4
 00000024  6001      STR         R1,[R0,#0x0]
  128:   PLL48CON  = PLLCON_PLLE;                  /* PLL Enable */
 00000026  2101      MOV         R1,#0x1
 00000028  4800      LDR         R0,=0xE01FC0A0
 0000002A  6001      STR         R1,[R0,#0x0]
  129:   PLL48FEED = 0xAA;                         /* Feed Sequence 1 */
 0000002C  21AA      MOV         R1,#0xAA
 0000002E  4800      LDR         R0,=0xE01FC0AC
 00000030  6001      STR         R1,[R0,#0x0]
  130:   PLL48FEED = 0x55;                         /* Feed Sequence 2 */
 00000032  2155      MOV         R1,#0x55
 00000034  4800      LDR         R0,=0xE01FC0AC
 00000036  6001      STR         R1,[R0,#0x0]
  132:   while ((PLL48STAT & PLLSTAT_PLOCK) == 0); /* Wait for PLL Lock */
 00000038          L_20:
 00000038  4800      LDR         R0,=0xE01FC0A8
 0000003A  6800      LDR         R0,[R0,#0x0]
 0000003C  4800      LDR         R1,=0x400
 0000003E  4208      TST         R0,R1
 00000040  D0FA      BEQ         L_20  ; T=0x00000038
  134:   PLL48CON  = PLLCON_PLLE | PLLCON_PLLC;    /* PLL Enable & Connect */
 00000042  2103      MOV         R1,#0x3
 00000044  4800      LDR         R0,=0xE01FC0A0
 00000046  6001      STR         R1,[R0,#0x0]
ARM COMPILER V2.53,  usbhw                                                                 05/09/06  14:20:49  PAGE 16  

  135:   PLL48FEED = 0xAA;                         /* Feed Sequence 1 */
 00000048  21AA      MOV         R1,#0xAA
 0000004A  4800      LDR         R0,=0xE01FC0AC
 0000004C  6001      STR         R1,[R0,#0x0]
  136:   PLL48FEED = 0x55;                         /* Feed Sequence 2 */
 0000004E  2155      MOV         R1,#0x55
 00000050  4800      LDR         R0,=0xE01FC0AC
 00000052  6001      STR         R1,[R0,#0x0]
  138:   VICVectAddr0 = (unsigned long)USB_ISR;    /* USB Interrupt -> Vector 0 */
 00000054  4900      LDR         R1,=USB_ISR?A ; USB_ISR?A
 00000056  4800      LDR         R0,=0xFFFFF100
 00000058  6001      STR         R1,[R0,#0x0]
  139:   VICVectCntl0 = 0x20 | 22;                 /* USB Interrupt -> IRQ Slot 0 */
 0000005A  2136      MOV         R1,#0x36
 0000005C  4800      LDR         R0,=0xFFFFF200
 0000005E  6001      STR         R1,[R0,#0x0]
  140:   VICIntEnable = 1 << 22;                   /* Enable USB Interrupt */
 00000060  4800      LDR         R1,=0x400000
 00000062  4800      LDR         R0,=0xFFFFF010
 00000064  6001      STR         R1,[R0,#0x0]
  142:   DEV_INT_EN = DEV_STAT_INT;                /* Enable Device Status Interrupt */
 00000066  2108      MOV         R1,#0x8
 00000068  4800      LDR         R0,=0xE0090004
 0000006A  6001      STR         R1,[R0,#0x0]
  145:   USB_Reset();
 0000006C  F7FF      BL          USB_Reset?T  ; T=0x0001  (1)
 0000006E  FFC8      BL          USB_Reset?T  ; T=0x0001  (2)
  146:   USB_SetAddress(0);
 00000070  2000      MOV         R0,#0x0
 00000072  F7FF      BL          USB_SetAddress?T  ; T=0x0001  (1)
 00000074  FFC5      BL          USB_SetAddress?T  ; T=0x0001  (2)
  148: }
 00000076  BC08      POP         {R3}
 00000078  4718      BX          R3
 0000007A          ENDP ; 'USB_Init?T'


*** CODE SEGMENT '?PR?USB_Connect?T?usbhw':
  158: void USB_Connect (BOOL con) {
 00000000  B500      PUSH        {LR}
 00000002  1C01      MOV         R1,R0 ; con
 00000004  ---- Variable 'con' assigned to Register 'R1' ----
  159:   WrCmdDat(CMD_SET_DEV_STAT, DAT_WR_BYTE(con ? DEV_CON : 0));
 00000004  1C08      MOV         R0,R1 ; con
 00000006  2800      CMP         R0,#0x0 ; con
 00000008  D001      BEQ         L_24  ; T=0x0000000E
 0000000A  2101      MOV         R1,#0x1
 0000000C  E000      B           L_25  ; T=0x00000010
 0000000E          L_24:
 0000000E  2100      MOV         R1,#0x0
 00000010          L_25:
 00000010  0409      LSL         R1,R1,#0x10
 00000012  4840      LDR         R0,=0x100
 00000014  4301      ORR         R1,R0
 00000016  4800      LDR         R0,=0xFE0500
 00000018  F7FF      BL          WrCmdDat?T  ; T=0x0001  (1)
 0000001A  FFF2      BL          WrCmdDat?T  ; T=0x0001  (2)
  160: }
 0000001C  BC08      POP         {R3}
 0000001E  4718      BX          R3
 00000020          ENDP ; 'USB_Connect?T'


*** CODE SEGMENT '?PR?USB_Reset?T?usbhw':
  174:   EP_INDEX = 0;
 00000000  2100      MOV         R1,#0x0
 00000002  4800      LDR         R0,=0xE0090048
 00000004  6001      STR         R1,[R0,#0x0]
  175:   MAXPACKET_SIZE = USB_MAX_PACKET0;
 00000006  2140      MOV         R1,#0x40
ARM COMPILER V2.53,  usbhw                                                                 05/09/06  14:20:49  PAGE 17  

 00000008  4800      LDR         R0,=0xE009004C
 0000000A  6001      STR         R1,[R0,#0x0]
  176:   EP_INDEX = 1;
 0000000C  2201      MOV         R2,#0x1
 0000000E  4800      LDR         R0,=0xE0090048
 00000010  6002      STR         R2,[R0,#0x0]
  177:   MAXPACKET_SIZE = USB_MAX_PACKET0;
 00000012  4800      LDR         R0,=0xE009004C
 00000014  6001      STR         R1,[R0,#0x0]
  178:   while ((DEV_INT_STAT & EP_RLZED_INT) == 0);
 00000016          L_26:
 00000016  4800      LDR         R0,=0xE0090000
 00000018  6800      LDR         R0,[R0,#0x0]
 0000001A  4940      LDR         R1,=0x100
 0000001C  4208      TST         R0,R1
 0000001E  D0FA      BEQ         L_26  ; T=0x00000016
  180:   EP_INT_CLR  = 0xFFFFFFFF;
 00000020  4800      LDR         R1,=0xFFFFFFFF
 00000022  4800      LDR         R0,=0xE0090038
 00000024  6001      STR         R1,[R0,#0x0]
  181:   EP_INT_EN   = 0xFFFFFFFF ^ USB_DMA_EP;
 00000026  4800      LDR         R2,=0xFFFFFFBF
 00000028  4800      LDR         R0,=0xE0090034
 0000002A  6002      STR         R2,[R0,#0x0]
  182:   DEV_INT_CLR = 0xFFFFFFFF;
 0000002C  4800      LDR         R0,=0xE0090008
 0000002E  6001      STR         R1,[R0,#0x0]
  183:   DEV_INT_EN  = DEV_STAT_INT    | EP_SLOW_INT    |
 00000030  210D      MOV         R1,#0xD
 00000032  4800      LDR         R0,=0xE0090004
 00000034  6001      STR         R1,[R0,#0x0]
  203: }
 00000036  4770      BX          R14
 00000038          ENDP ; 'USB_Reset?T'


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


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


*** CODE SEGMENT '?PR?USB_WakeUp?T?usbhw':
  234: void USB_WakeUp (void) {
 00000000  B500      PUSH        {LR}
  236:   if (USB_DeviceStatus & USB_GETSTATUS_REMOTE_WAKEUP) {
 00000002  4800      LDR         R0,=USB_DeviceStatus ; USB_DeviceStatus
 00000004  8800      LDRH        R0,[R0,#0x0] ; USB_DeviceStatus
 00000006  2102      MOV         R1,#0x2
 00000008  4208      TST         R0,R1
 0000000A  D003      BEQ         L_30  ; T=0x00000014
  237:     WrCmdDat(CMD_SET_DEV_STAT, DAT_WR_BYTE(DEV_CON));
 0000000C  4800      LDR         R0,=0xFE0500
 0000000E  4800      LDR         R1,=0x10100
 00000010  F7FF      BL          WrCmdDat?T  ; T=0x0001  (1)
 00000012  FFF6      BL          WrCmdDat?T  ; T=0x0001  (2)
  238:   }
 00000014          L_30:
  239: }
 00000014  BC08      POP         {R3}
 00000016  4718      BX          R3
 00000018          ENDP ; 'USB_WakeUp?T'


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

ARM COMPILER V2.53,  usbhw                                                                 05/09/06  14:20:49  PAGE 18  


*** CODE SEGMENT '?PR?USB_SetAddress?T?usbhw':
  259: void USB_SetAddress (DWORD adr) {
 00000000  B510      PUSH        {R4,LR}
 00000002  1C04      MOV         R4,R0 ; adr
 00000004  ---- Variable 'adr' assigned to Register 'R4' ----
  260:   WrCmdDat(CMD_SET_ADDR, DAT_WR_BYTE(DEV_EN | adr)); /* Don't wait for next */
 00000004  1C21      MOV         R1,R4 ; adr
 00000006  2080      MOV         R0,#0x80
 00000008  4301      ORR         R1,R0
 0000000A  0409      LSL         R1,R1,#0x10
 0000000C  4840      LDR         R0,=0x100
 0000000E  4301      ORR         R1,R0
 00000010  4800      LDR         R0,=0xD00500
 00000012  F7FF      BL          WrCmdDat?T  ; T=0x0001  (1)
 00000014  FFF5      BL          WrCmdDat?T  ; T=0x0001  (2)
  261:   WrCmdDat(CMD_SET_ADDR, DAT_WR_BYTE(DEV_EN | adr)); /*  Setup Status Phase */
 00000016  1C21      MOV         R1,R4 ; adr
 00000018  2080      MOV         R0,#0x80
 0000001A  4301      ORR         R1,R0
 0000001C  0409      LSL         R1,R1,#0x10
 0000001E  4840      LDR         R0,=0x100
 00000020  4301      ORR         R1,R0
 00000022  4800      LDR         R0,=0xD00500
 00000024  F7FF      BL          WrCmdDat?T  ; T=0x0001  (1)
 00000026  FFEC      BL          WrCmdDat?T  ; T=0x0001  (2)
  262: }
 00000028  BC10      POP         {R4}
 0000002A  BC08      POP         {R3}
 0000002C  4718      BX          R3
 0000002E          ENDP ; 'USB_SetAddress?T'


*** CODE SEGMENT '?PR?USB_Configure?T?usbhw':
  271: void USB_Configure (BOOL cfg) {
 00000000  B500      PUSH        {LR}
 00000002  1C01      MOV         R1,R0 ; cfg
 00000004  ---- Variable 'cfg' assigned to Register 'R1' ----
  273:   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_31  ; T=0x0000000E
 0000000A  2101      MOV         R1,#0x1
 0000000C  E000      B           L_32  ; T=0x00000010
 0000000E          L_31:
 0000000E  2100      MOV         R1,#0x0
 00000010          L_32:
 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)
  275:   REALIZE_EP = 0x00000003;
 0000001C  2103      MOV         R1,#0x3
 0000001E  4800      LDR         R0,=0xE0090044
 00000020  6001      STR         R1,[R0,#0x0]
  276:   while ((DEV_INT_STAT & EP_RLZED_INT) == 0);
 00000022          L_33:
 00000022  4800      LDR         R0,=0xE0090000

⌨️ 快捷键说明

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