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

📄 usbhw.lst

📁 USB存储器
💻 LST
📖 第 1 页 / 共 5 页
字号:
 0000001C          L_11:
 0000001C  4800      LDR         R0,=0xE0090000
 0000001E  6800      LDR         R0,[R0,#0x0]
 00000020  2110      MOV         R1,#0x10
 00000022  4208      TST         R0,R1
 00000024  D0FA      BEQ         L_11  ; T=0x0000001C
   87:   DEV_INT_CLR = CCEMTY_INT;
 00000026  4800      LDR         R0,=0xE0090008
 00000028  6001      STR         R1,[R0,#0x0]
   88: }
 0000002A  4770      BX          R14
 0000002C          ENDP ; 'WrCmdDat?T'


*** CODE SEGMENT '?PR?RdCmdDat?T?usbhw':
   97: DWORD RdCmdDat (DWORD cmd) {
 00000000  ---- Variable 'cmd' assigned to Register 'R0' ----
 00000000            ; SCOPE-START
  100:   DEV_INT_CLR = CDFULL_INT;
 00000000  2220      MOV         R2,#0x20
ARM COMPILER V2.42b,  usbhw                                                                02/01/06  23:45:15  PAGE 15  

 00000002  4800      LDR         R1,=0xE0090008
 00000004  600A      STR         R2,[R1,#0x0]
  101:   CMD_CODE = cmd;
 00000006  1C01      MOV         R1,R0 ; cmd
 00000008  4800      LDR         R0,=0xE0090010
 0000000A  6001      STR         R1,[R0,#0x0]
  102:   while ((DEV_INT_STAT & CCEMTY_INT) == 0);
 0000000C          L_15:
 0000000C  4800      LDR         R0,=0xE0090000
 0000000E  6800      LDR         R0,[R0,#0x0]
 00000010  2110      MOV         R1,#0x10
 00000012  4208      TST         R0,R1
 00000014  D0FA      BEQ         L_15  ; T=0x0000000C
  103:   DEV_INT_CLR = CCEMTY_INT;
 00000016  4800      LDR         R0,=0xE0090008
 00000018  6001      STR         R1,[R0,#0x0]
  104:   while ((DEV_INT_STAT & CDFULL_INT) == 0);
 0000001A          L_19:
 0000001A  4800      LDR         R0,=0xE0090000
 0000001C  6800      LDR         R0,[R0,#0x0]
 0000001E  2220      MOV         R2,#0x20
 00000020  4210      TST         R0,R2
 00000022  D0FA      BEQ         L_19  ; T=0x0000001A
  105:   val = CMD_DATA;
 00000024  4800      LDR         R0,=0xE0090014
 00000026  6801      LDR         R1,[R0,#0x0]
 00000028  ---- Variable 'val' assigned to Register 'R1' ----
  106:   DEV_INT_CLR = CDFULL_INT;
 00000028  4800      LDR         R0,=0xE0090008
 0000002A  6002      STR         R2,[R0,#0x0]
  107:   return (val);
 0000002C  1C08      MOV         R0,R1 ; val
 0000002E            ; SCOPE-END
  108: }
 0000002E  4770      BX          R14
 00000030          ENDP ; 'RdCmdDat?T'


*** CODE SEGMENT '?PR?USB_Init?T?usbhw':
  117: void USB_Init (void) {
 00000000  B500      PUSH        {LR}
  119:   PCONP |= 0x80000000;                      /* Turn On USB PCLK */
 00000002  4800      LDR         R2,=0x80000000
 00000004  4800      LDR         R0,=0xE01FC0C4
 00000006  6801      LDR         R1,[R0,#0x0]
 00000008  4311      ORR         R1,R2
 0000000A  6001      STR         R1,[R0,#0x0]
  122:   PLL48CFG  = 0x23;                         /* M = 4, P = 2 */
 0000000C  2123      MOV         R1,#0x23
 0000000E  4800      LDR         R0,=0xE01FC0A4
 00000010  6001      STR         R1,[R0,#0x0]
  123:   PLL48CON  = PLLCON_PLLE;                  /* PLL Enable */
 00000012  2101      MOV         R1,#0x1
 00000014  4800      LDR         R0,=0xE01FC0A0
 00000016  6001      STR         R1,[R0,#0x0]
  124:   PLL48FEED = 0xAA;                         /* Feed Sequence 1 */
 00000018  21AA      MOV         R1,#0xAA
 0000001A  4800      LDR         R0,=0xE01FC0AC
 0000001C  6001      STR         R1,[R0,#0x0]
  125:   PLL48FEED = 0x55;                         /* Feed Sequence 2 */
 0000001E  2155      MOV         R1,#0x55
 00000020  4800      LDR         R0,=0xE01FC0AC
 00000022  6001      STR         R1,[R0,#0x0]
  127:   while ((PLL48STAT & PLLSTAT_PLOCK) == 0); /* Wait for PLL Lock */
 00000024          L_24:
 00000024  4800      LDR         R0,=0xE01FC0A8
 00000026  6800      LDR         R0,[R0,#0x0]
 00000028  4800      LDR         R1,=0x400
ARM COMPILER V2.42b,  usbhw                                                                02/01/06  23:45:15  PAGE 16  

 0000002A  4208      TST         R0,R1
 0000002C  D0FA      BEQ         L_24  ; T=0x00000024
  129:   PLL48CON  = PLLCON_PLLE | PLLCON_PLLC;    /* PLL Enable & Connect */
 0000002E  2103      MOV         R1,#0x3
 00000030  4800      LDR         R0,=0xE01FC0A0
 00000032  6001      STR         R1,[R0,#0x0]
  130:   PLL48FEED = 0xAA;                         /* Feed Sequence 1 */
 00000034  21AA      MOV         R1,#0xAA
 00000036  4800      LDR         R0,=0xE01FC0AC
 00000038  6001      STR         R1,[R0,#0x0]
  131:   PLL48FEED = 0x55;                         /* Feed Sequence 2 */
 0000003A  2155      MOV         R1,#0x55
 0000003C  4800      LDR         R0,=0xE01FC0AC
 0000003E  6001      STR         R1,[R0,#0x0]
  133:   VICVectAddr0 = (unsigned long)USB_ISR;    /* USB Interrupt -> Vector 0 */
 00000040  4900      LDR         R1,=USB_ISR?A ; USB_ISR?A
 00000042  4800      LDR         R0,=0xFFFFF100
 00000044  6001      STR         R1,[R0,#0x0]
  134:   VICVectCntl0 = 0x20 | 22;                 /* USB Interrupt -> IRQ Slot 0 */
 00000046  2136      MOV         R1,#0x36
 00000048  4800      LDR         R0,=0xFFFFF200
 0000004A  6001      STR         R1,[R0,#0x0]
  135:   VICIntEnable = 1 << 22;                   /* Enable USB Interrupt */
 0000004C  4800      LDR         R1,=0x400000
 0000004E  4800      LDR         R0,=0xFFFFF010
 00000050  6001      STR         R1,[R0,#0x0]
  137:   DEV_INT_EN = DEV_STAT_INT;                /* Enable Device Status Interrupt */
 00000052  2108      MOV         R1,#0x8
 00000054  4800      LDR         R0,=0xE0090004
 00000056  6001      STR         R1,[R0,#0x0]
  140:   USB_Reset();
 00000058  F7FF      BL          USB_Reset?T  ; T=0x0001  (1)
 0000005A  FFD2      BL          USB_Reset?T  ; T=0x0001  (2)
  141:   USB_SetAddress(0);
 0000005C  2000      MOV         R0,#0x0
 0000005E  F7FF      BL          USB_SetAddress?T  ; T=0x0001  (1)
 00000060  FFCF      BL          USB_SetAddress?T  ; T=0x0001  (2)
  143: }
 00000062  BC08      POP         {R3}
 00000064  4718      BX          R3
 00000066          ENDP ; 'USB_Init?T'


*** CODE SEGMENT '?PR?USB_Connect?T?usbhw':
  153: void USB_Connect (BOOL con) {
 00000000  B500      PUSH        {LR}
 00000002  1C01      MOV         R1,R0 ; con
 00000004  ---- Variable 'con' assigned to Register 'R1' ----
  154:   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_28  ; T=0x0000000E
 0000000A  2101      MOV         R1,#0x1
 0000000C  E000      B           L_29  ; T=0x00000010
 0000000E          L_28:
 0000000E  2100      MOV         R1,#0x0
 00000010          L_29:
 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)
  155: }
 0000001C  BC08      POP         {R3}
 0000001E  4718      BX          R3
 00000020          ENDP ; 'USB_Connect?T'


*** CODE SEGMENT '?PR?USB_Reset?T?usbhw':
ARM COMPILER V2.42b,  usbhw                                                                02/01/06  23:45:15  PAGE 17  

  169:   EP_INDEX = 0;
 00000000  2100      MOV         R1,#0x0
 00000002  4800      LDR         R0,=0xE0090048
 00000004  6001      STR         R1,[R0,#0x0]
  170:   MAXPACKET_SIZE = USB_MAX_PACKET0;
 00000006  2140      MOV         R1,#0x40
 00000008  4800      LDR         R0,=0xE009004C
 0000000A  6001      STR         R1,[R0,#0x0]
  171:   EP_INDEX = 1;
 0000000C  2201      MOV         R2,#0x1
 0000000E  4800      LDR         R0,=0xE0090048
 00000010  6002      STR         R2,[R0,#0x0]
  172:   MAXPACKET_SIZE = USB_MAX_PACKET0;
 00000012  4800      LDR         R0,=0xE009004C
 00000014  6001      STR         R1,[R0,#0x0]
  173:   while ((DEV_INT_STAT & EP_RLZED_INT) == 0);
 00000016          L_30:
 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_30  ; T=0x00000016
  175:   EP_INT_CLR  = 0xFFFFFFFF;
 00000020  4800      LDR         R1,=0xFFFFFFFF
 00000022  4800      LDR         R0,=0xE0090038
 00000024  6001      STR         R1,[R0,#0x0]
  176:   EP_INT_EN   = 0xFFFFFFFF ^ USB_DMA_EP;
 00000026  4800      LDR         R0,=0xE0090034
 00000028  6001      STR         R1,[R0,#0x0]
  177:   DEV_INT_CLR = 0xFFFFFFFF;
 0000002A  4800      LDR         R0,=0xE0090008
 0000002C  6001      STR         R1,[R0,#0x0]
  178:   DEV_INT_EN  = DEV_STAT_INT    | EP_SLOW_INT    |
 0000002E  210C      MOV         R1,#0xC
 00000030  4800      LDR         R0,=0xE0090004
 00000032  6001      STR         R1,[R0,#0x0]
  198: }
 00000034  4770      BX          R14
 00000036          ENDP ; 'USB_Reset?T'


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


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


*** CODE SEGMENT '?PR?USB_WakeUp?T?usbhw':
  229: void USB_WakeUp (void) {
 00000000  B500      PUSH        {LR}
  231:   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_34  ; T=0x00000014
  232:     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)
  233:   }
 00000014          L_34:
  234: }
 00000014  BC08      POP         {R3}
 00000016  4718      BX          R3
ARM COMPILER V2.42b,  usbhw                                                                02/01/06  23:45:15  PAGE 18  

 00000018          ENDP ; 'USB_WakeUp?T'


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


*** CODE SEGMENT '?PR?USB_SetAddress?T?usbhw':
  254: void USB_SetAddress (DWORD adr) {
 00000000  B500      PUSH        {LR}
 00000002  1C03      MOV         R3,R0 ; adr
 00000004  ---- Variable 'adr' assigned to Register 'R3' ----
  255:   WrCmdDat(CMD_SET_ADDR, DAT_WR_BYTE(DEV_EN | adr)); /* Don't wait for next */
 00000004  1C19      MOV         R1,R3 ; 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)
  256:   WrCmdDat(CMD_SET_ADDR, DAT_WR_BYTE(DEV_EN | adr)); /*  Setup Status Phase */
 00000016  1C19      MOV         R1,R3 ; 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)
  257: }
 00000028  BC08      POP         {R3}
 0000002A  4718      BX          R3
 0000002C          ENDP ; 'USB_SetAddress?T'


*** CODE SEGMENT '?PR?USB_Configure?T?usbhw':
  266: void USB_Configure (BOOL cfg) {
 00000000  B500      PUSH        {LR}
 00000002  1C01      MOV         R1,R0 ; cfg
 00000004  ---- Variable 'cfg' assigned to Register 'R1' ----
  268:   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)
  270:   REALIZE_EP = 0x00000003;
 0000001C  2103      MOV         R1,#0x3
 0000001E  4800      LDR         R0,=0xE0090044
 00000020  6001      STR         R1,[R0,#0x0]
  271:   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
  272:   DEV_INT_CLR = EP_RLZED_INT;
ARM COMPILER V2.42b,  usbhw                                                                02/01/06  23:45:15  PAGE 19  

 0000002C  4800      LDR         R0,=0xE0090008

⌨️ 快捷键说明

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