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

📄 usbhw.lst

📁 USB存储器
💻 LST
📖 第 1 页 / 共 5 页
字号:
 0000002E  6001      STR         R1,[R0,#0x0]
  273: }
 00000030  BC08      POP         {R3}
 00000032  4718      BX          R3
 00000034          ENDP ; 'USB_Configure?T'


*** CODE SEGMENT '?PR?USB_ConfigEP?T?usbhw':
  282: 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
  285:   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' ----
  286:   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]
  287:   EP_INDEX = num;
 0000001A  1C01      MOV         R1,R0 ; num
 0000001C  4800      LDR         R0,=0xE0090048
 0000001E  6001      STR         R1,[R0,#0x0]
  288:   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]
  289:   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
  290:   DEV_INT_CLR = EP_RLZED_INT;
 0000003C  4800      LDR         R0,=0xE0090008
 0000003E  6001      STR         R1,[R0,#0x0]
 00000040            ; SCOPE-END
  291: }
 00000040  BC10      POP         {R4}
 00000042  BC08      POP         {R3}
 00000044  4718      BX          R3
 00000046          ENDP ; 'USB_ConfigEP?T'


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


*** CODE SEGMENT '?PR?USB_EnableEP?T?usbhw':
  313: void USB_EnableEP (DWORD EPNum) {
 00000000  B500      PUSH        {LR}
 00000002  1C01      MOV         R1,R0 ; EPNum
 00000004  ---- Variable 'EPNum' assigned to Register 'R1' ----
  314:   WrCmdDat(CMD_SET_EP_STAT(EPAdr(EPNum)), DAT_WR_BYTE(0));
ARM COMPILER V2.42b,  usbhw                                                                02/01/06  23:45:15  PAGE 20  

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


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


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


*** CODE SEGMENT '?PR?USB_SetStallEP?T?usbhw':
  352: void USB_SetStallEP (DWORD EPNum) {
 00000000  B500      PUSH        {LR}
 00000002  1C01      MOV         R1,R0 ; EPNum
 00000004  ---- Variable 'EPNum' assigned to Register 'R1' ----
  353:   WrCmdDat(CMD_SET_EP_STAT(EPAdr(EPNum)), DAT_WR_BYTE(EP_STAT_ST));
 00000004  1C08      MOV         R0,R1 ; EPNum
 00000006  F7FF      BL          EPAdr?T  ; T=0x0001  (1)
 00000008  FFFB      BL          EPAdr?T  ; T=0x0001  (2)
 0000000A  0400      LSL         R0,R0,#0x10 ; EPAdr?T
 0000000C  4800      LDR         R1,=0x400500
 0000000E  4308      ORR         R0,R1
 00000010  4800      LDR         R1,=0x10100
 00000012  F7FF      BL          WrCmdDat?T  ; T=0x0001  (1)
 00000014  FFF5      BL          WrCmdDat?T  ; T=0x0001  (2)
ARM COMPILER V2.42b,  usbhw                                                                02/01/06  23:45:15  PAGE 21  

  354: }
 00000016  BC08      POP         {R3}
 00000018  4718      BX          R3
 0000001A          ENDP ; 'USB_SetStallEP?T'


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


*** CODE SEGMENT '?PR?USB_ReadEP?T?usbhw':
  379: DWORD USB_ReadEP (DWORD 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  ---- Variable 'cnt' assigned to Register 'R4' ----
 00000004            ; SCOPE-START
  382:   USB_CTRL = ((EPNum & 0x0F) << 2) | CTRL_RD_EN;
 00000004  1C1A      MOV         R2,R3 ; EPNum
 00000006  200F      MOV         R0,#0xF
 00000008  4002      AND         R2,R0
 0000000A  0092      LSL         R2,R2,#0x2
 0000000C  2001      MOV         R0,#0x1
 0000000E  4302      ORR         R2,R0
 00000010  4800      LDR         R0,=0xE0090028
 00000012  6002      STR         R2,[R0,#0x0]
  384:   do {
 00000014          L_45:
  385:     cnt = RX_PLENGTH;
 00000014  4800      LDR         R0,=0xE0090020
 00000016  6804      LDR         R4,[R0,#0x0]
  386:   } while ((cnt & PKT_RDY) == 0);
 00000018  1C20      MOV         R0,R4 ; cnt
 0000001A  4800      LDR         R2,=0x800
 0000001C  4210      TST         R0,R2 ; cnt
 0000001E  D0F9      BEQ         L_45  ; T=0x00000014
  387:   cnt &= PKT_LNGTH_MASK;
 00000020  4800      LDR         R0,=0x3FF
 00000022  4004      AND         R4,R0
  389:   for (n = 0; n < (cnt + 3) / 4; n++) {
 00000024  2000      MOV         R0,#0x0
 00000026  ---- Variable 'n' assigned to Register 'R0' ----
 00000026  E00B      B           L_51  ; T=0x00000040
 00000028          L_52:
  390:     *((__packed DWORD *)pData) = RX_DATA;
 00000028  4800      LDR         R2,=0xE0090018
 0000002A  6816      LDR         R6,[R2,#0x0]
 0000002C  1C0D      MOV         R5,R1 ; pData
 0000002E  702E      STRB        R6,[R5,#0x0] ; pData
 00000030  0A36      LSR         R6,R6,#0x8
 00000032  706E      STRB        R6,[R5,#0x1] ; pData
 00000034  0A36      LSR         R6,R6,#0x8
ARM COMPILER V2.42b,  usbhw                                                                02/01/06  23:45:15  PAGE 22  

 00000036  70AE      STRB        R6,[R5,#0x2] ; pData
 00000038  0A36      LSR         R6,R6,#0x8
 0000003A  70EE      STRB        R6,[R5,#0x3] ; pData
  391:     pData += 4;
 0000003C  3104      ADD         R1,#0x4
  392:   }
 0000003E  3001      ADD         R0,#0x1
 00000040          L_51:
 00000040  1C25      MOV         R5,R4 ; cnt
 00000042  3503      ADD         R5,#0x3
 00000044  08AD      LSR         R5,R5,#0x2
 00000046  1C02      MOV         R2,R0 ; n
 00000048  42AA      CMP         R2,R5 ; n
 0000004A  D3ED      BCC         L_52  ; T=0x00000028
  394:   USB_CTRL = 0;
 0000004C  2100      MOV         R1,#0x0
 0000004E  4800      LDR         R0,=0xE0090028
 00000050  6001      STR         R1,[R0,#0x0]
  396:   if (((EP_MSK_ISO >> EPNum) & 1) == 0) {   /* Non-Isochronous Endpoint */
 00000052  1C19      MOV         R1,R3 ; EPNum
 00000054  4800      LDR         R0,=0x1248
 00000056  4108      ASR         R0,R1
 00000058  2101      MOV         R1,#0x1
 0000005A  4208      TST         R0,R1
 0000005C  D10A      BNE         L_54  ; T=0x00000074
  397:     WrCmd(CMD_SEL_EP(EPAdr(EPNum)));
 0000005E  1C18      MOV         R0,R3 ; EPNum
 00000060  F7FF      BL          EPAdr?T  ; T=0x0001  (1)
 00000062  FFCE      BL          EPAdr?T  ; T=0x0001  (2)
 00000064  0400      LSL         R0,R0,#0x10 ; EPAdr?T
 00000066  4800      LDR         R1,=0x500
 00000068  4308      ORR         R0,R1
 0000006A  F7FF      BL          WrCmd?T  ; T=0x0001  (1)
 0000006C  FFC9      BL          WrCmd?T  ; T=0x0001  (2)
  398:     WrCmd(CMD_CLR_BUF);
 0000006E  4800      LDR         R0,=0xF20500
 00000070  F7FF      BL          WrCmd?T  ; T=0x0001  (1)
 00000072  FFC6      BL          WrCmd?T  ; T=0x0001  (2)
  399:   }
 00000074          L_54:
  401:   return (cnt);
 00000074  1C20      MOV         R0,R4 ; cnt
 00000076            ; SCOPE-END
  402: }
 00000076  BC70      POP         {R4-R6}
 00000078  BC08      POP         {R3}
 0000007A  4718      BX          R3
 0000007C          ENDP ; 'USB_ReadEP?T'


*** CODE SEGMENT '?PR?USB_WriteEP?T?usbhw':
  415: DWORD USB_WriteEP (DWORD EPNum, BYTE *pData, DWORD cnt) {
 00000000  B570      PUSH        {R4-R6,LR}
 00000002  1C14      MOV         R4,R2 ; cnt
 00000004  ---- Variable 'cnt' assigned to Register 'R4' ----
 00000004  ---- Variable 'pData' assigned to Register 'R1' ----
 00000004  1C03      MOV         R3,R0 ; EPNum
 00000006  ---- Variable 'EPNum' assigned to Register 'R3' ----
 00000006            ; SCOPE-START
  418:   USB_CTRL = ((EPNum & 0x0F) << 2) | CTRL_WR_EN;
 00000006  1C1A      MOV         R2,R3 ; EPNum
 00000008  200F      MOV         R0,#0xF
 0000000A  4002      AND         R2,R0
 0000000C  0092      LSL         R2,R2,#0x2
 0000000E  2002      MOV         R0,#0x2
 00000010  4302      ORR         R2,R0
 00000012  4800      LDR         R0,=0xE0090028
 00000014  6002      STR         R2,[R0,#0x0]
ARM COMPILER V2.42b,  usbhw                                                                02/01/06  23:45:15  PAGE 23  

  420:   TX_PLENGTH = cnt;
 00000016  1C22      MOV         R2,R4 ; cnt
 00000018  4800      LDR         R0,=0xE0090024
 0000001A  6002      STR         R2,[R0,#0x0]
  422:   for (n = 0; n < (cnt + 3) / 4; n++) {
 0000001C  2500      MOV         R5,#0x0
 0000001E  ---- Variable 'n' assigned to Register 'R5' ----
 0000001E  E00E      B           L_58  ; T=0x0000003E
 00000020          L_59:
  423:     TX_DATA = *((__packed DWORD *)pData);
 00000020  1C0E      MOV         R6,R1 ; pData
 00000022  7832      LDRB        R2,[R6,#0x0] ; pData
 00000024  7870      LDRB        R0,[R6,#0x1] ; pData
 00000026  0200      LSL         R0,R0,#0x8
 00000028  4302      ORR         R2,R0
 0000002A  78B0      LDRB        R0,[R6,#0x2] ; pData
 0000002C  0400      LSL         R0,R0,#0x10
 0000002E  4302      ORR         R2,R0
 00000030  78F0      LDRB        R0,[R6,#0x3] ; pData
 00000032  0600  

⌨️ 快捷键说明

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