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

📄 usbhw.lst

📁 在ATMEL芯片下的USB底层程序的开发
💻 LST
📖 第 1 页 / 共 5 页
字号:
 00000076          L_22:
  218:         pUDP->UDP_CSR[num] = AT91C_UDP_EPTYPE_BULK_OUT;
 00000076  4880      LDR         R0,=0x200
 00000078  1C0C      MOV         R4,R1 ; num
 0000007A  00A4      LSL         R4,R4,#0x2 ; num
 0000007C  4800      LDR         R3,=pUDP ; pUDP
 0000007E  681B      LDR         R3,[R3,#0x0] ; pUDP
 00000080  191B      ADD         R3,R4
 00000082  6318      STR         R0,[R3,#0x30]
  220:       break;
 00000084  E019      B           L_14  ; T=0x000000BA
  221:     case USB_ENDPOINT_TYPE_INTERRUPT:
ARM COMPILER V2.53,  usbhw                                                                 31/10/07  09:22:43  PAGE 15  

 00000086          L_19:
  222:       if (dir) {
 00000086  1C10      MOV         R0,R2 ; dir
 00000088  2800      CMP         R0,#0x0 ; dir
 0000008A  D007      BEQ         L_24  ; T=0x0000009C
  223:         pUDP->UDP_CSR[num] = AT91C_UDP_EPTYPE_INT_IN;
 0000008C  4800      LDR         R0,=0x700
 0000008E  1C0B      MOV         R3,R1 ; num
 00000090  009B      LSL         R3,R3,#0x2 ; num
 00000092  4800      LDR         R2,=pUDP ; pUDP
 00000094  6812      LDR         R2,[R2,#0x0] ; pUDP
 00000096  18D2      ADD         R2,R3
 00000098  6310      STR         R0,[R2,#0x30]
  224:       } else {
 0000009A  E00E      B           L_14  ; T=0x000000BA
 0000009C          L_24:
  225:         pUDP->UDP_CSR[num] = AT91C_UDP_EPTYPE_INT_OUT;
 0000009C  48C0      LDR         R0,=0x300
 0000009E  1C0B      MOV         R3,R1 ; num
 000000A0  009B      LSL         R3,R3,#0x2 ; num
 000000A2  4800      LDR         R2,=pUDP ; pUDP
 000000A4  6812      LDR         R2,[R2,#0x0] ; pUDP
 000000A6  18D2      ADD         R2,R3
 000000A8  6310      STR         R0,[R2,#0x30]
  227:       break;
 000000AA  E006      B           L_14  ; T=0x000000BA
  228:     default:
 000000AC          L_16:
  229:       pUDP->UDP_CSR[num] = 0;
 000000AC  2000      MOV         R0,#0x0
 000000AE  1C0A      MOV         R2,R1 ; num
 000000B0  0092      LSL         R2,R2,#0x2 ; num
 000000B2  4800      LDR         R1,=pUDP ; pUDP
 000000B4  6809      LDR         R1,[R1,#0x0] ; pUDP
 000000B6  1889      ADD         R1,R2
 000000B8  6308      STR         R0,[R1,#0x30]
  231:   }
 000000BA          L_14:
 000000BA            ; SCOPE-END
  232: }
 000000BA  BC10      POP         {R4}
 000000BC  4770      BX          R14
 000000BE          ENDP ; 'USB_ConfigEP?T'


*** CODE SEGMENT '?PR?USB_DirCtrlEP?T?usbhw':
  239: void USB_DirCtrlEP (DWORD dir) {
 00000000  1C01      MOV         R1,R0 ; dir
 00000002  ---- Variable 'dir' assigned to Register 'R1' ----
  241:   if (dir ) {
 00000002  1C08      MOV         R0,R1 ; dir
 00000004  2800      CMP         R0,#0x0 ; dir
 00000006  D006      BEQ         L_26  ; T=0x00000016
  242:     pUDP->UDP_CSR[0] |=  AT91C_UDP_DIR;
 00000008  4800      LDR         R0,=pUDP ; pUDP
 0000000A  6801      LDR         R1,[R0,#0x0] ; pUDP
 0000000C  6B08      LDR         R0,[R1,#0x30]
 0000000E  2280      MOV         R2,#0x80
 00000010  4310      ORR         R0,R2
 00000012  6308      STR         R0,[R1,#0x30]
  243:   } else {
 00000014  E005      B           L_27  ; T=0x00000022
 00000016          L_26:
  244:     pUDP->UDP_CSR[0] &= ~AT91C_UDP_DIR;
 00000016  4800      LDR         R0,=pUDP ; pUDP
 00000018  6801      LDR         R1,[R0,#0x0] ; pUDP
 0000001A  6B08      LDR         R0,[R1,#0x30]
 0000001C  2280      MOV         R2,#0x80
ARM COMPILER V2.53,  usbhw                                                                 31/10/07  09:22:43  PAGE 16  

 0000001E  4390      BIC         R0,R2
 00000020  6308      STR         R0,[R1,#0x30]
  245:   }
 00000022          L_27:
  246:   pUDP->UDP_CSR[0] &= ~AT91C_UDP_RXSETUP;
 00000022  4800      LDR         R0,=pUDP ; pUDP
 00000024  6801      LDR         R1,[R0,#0x0] ; pUDP
 00000026  6B08      LDR         R0,[R1,#0x30]
 00000028  2204      MOV         R2,#0x4
 0000002A  4390      BIC         R0,R2
 0000002C  6308      STR         R0,[R1,#0x30]
  247: }
 0000002E  4770      BX          R14
 00000030          ENDP ; 'USB_DirCtrlEP?T'


*** CODE SEGMENT '?PR?USB_EnableEP?T?usbhw':
  257: void USB_EnableEP (DWORD EPNum) {
 00000000  1C03      MOV         R3,R0 ; EPNum
 00000002  ---- Variable 'EPNum' assigned to Register 'R3' ----
  258:   pUDP->UDP_CSR[EPNum & 0x0F] |=  AT91C_UDP_EPEDS;
 00000002  4800      LDR         R2,=0x8000
 00000004  1C19      MOV         R1,R3 ; EPNum
 00000006  200F      MOV         R0,#0xF
 00000008  4001      AND         R1,R0
 0000000A  0089      LSL         R1,R1,#0x2
 0000000C  4800      LDR         R0,=pUDP ; pUDP
 0000000E  6800      LDR         R0,[R0,#0x0] ; pUDP
 00000010  1840      ADD         R0,R1
 00000012  3030      ADD         R0,#0x30
 00000014  6801      LDR         R1,[R0,#0x0]
 00000016  4311      ORR         R1,R2
 00000018  6001      STR         R1,[R0,#0x0]
  259: }
 0000001A  4770      BX          R14
 0000001C          ENDP ; 'USB_EnableEP?T'


*** CODE SEGMENT '?PR?USB_DisableEP?T?usbhw':
  269: void USB_DisableEP (DWORD EPNum) {
 00000000  1C03      MOV         R3,R0 ; EPNum
 00000002  ---- Variable 'EPNum' assigned to Register 'R3' ----
  270:   pUDP->UDP_CSR[EPNum & 0x0F] &= ~AT91C_UDP_EPEDS;
 00000002  4800      LDR         R2,=0x8000
 00000004  1C19      MOV         R1,R3 ; EPNum
 00000006  200F      MOV         R0,#0xF
 00000008  4001      AND         R1,R0
 0000000A  0089      LSL         R1,R1,#0x2
 0000000C  4800      LDR         R0,=pUDP ; pUDP
 0000000E  6800      LDR         R0,[R0,#0x0] ; pUDP
 00000010  1840      ADD         R0,R1
 00000012  3030      ADD         R0,#0x30
 00000014  6801      LDR         R1,[R0,#0x0]
 00000016  4391      BIC         R1,R2
 00000018  6001      STR         R1,[R0,#0x0]
  271: }
 0000001A  4770      BX          R14
 0000001C          ENDP ; 'USB_DisableEP?T'


*** CODE SEGMENT '?PR?USB_ResetEP?T?usbhw':
  284: void USB_ResetEP (DWORD EPNum) {
 00000000  ---- Variable 'EPNum' assigned to Register 'R0' ----
  286:   EPNum &= 0x0F;
 00000000  210F      MOV         R1,#0xF
 00000002  4008      AND         R0,R1
  290:                             AT91C_UDP_STALLSENT);
 00000004  237F      MOV         R3,#0x7F
 00000006  1C02      MOV         R2,R0 ; EPNum
 00000008  0092      LSL         R2,R2,#0x2 ; EPNum
 0000000A  4800      LDR         R1,=pUDP ; pUDP
 0000000C  6809      LDR         R1,[R1,#0x0] ; pUDP
ARM COMPILER V2.53,  usbhw                                                                 31/10/07  09:22:43  PAGE 17  

 0000000E  1889      ADD         R1,R2
 00000010  3130      ADD         R1,#0x30
 00000012  680A      LDR         R2,[R1,#0x0]
 00000014  439A      BIC         R2,R3
 00000016  600A      STR         R2,[R1,#0x0]
  291:   pUDP->UDP_RSTEP  |=   1 << EPNum;
 00000018  1C01      MOV         R1,R0 ; EPNum
 0000001A  2301      MOV         R3,#0x1
 0000001C  408B      LSL         R3,R1
 0000001E  4800      LDR         R1,=pUDP ; pUDP
 00000020  680A      LDR         R2,[R1,#0x0] ; pUDP
 00000022  6A91      LDR         R1,[R2,#0x28]
 00000024  4319      ORR         R1,R3
 00000026  6291      STR         R1,[R2,#0x28]
  292:   pUDP->UDP_RSTEP  &= ~(1 << EPNum);
 00000028  1C01      MOV         R1,R0 ; EPNum
 0000002A  2301      MOV         R3,#0x1
 0000002C  408B      LSL         R3,R1
 0000002E  4800      LDR         R1,=pUDP ; pUDP
 00000030  680A      LDR         R2,[R1,#0x0] ; pUDP
 00000032  6A91      LDR         R1,[R2,#0x28]
 00000034  4399      BIC         R1,R3
 00000036  6291      STR         R1,[R2,#0x28]
  293:   RxDataBank[EPNum] =   0;
 00000038  2100      MOV         R1,#0x0
 0000003A  1C03      MOV         R3,R0 ; EPNum
 0000003C  4800      LDR         R2,=RxDataBank ; RxDataBank
 0000003E  54D1      STRB        R1,[R2,R3]
  294:   TxDataBank[EPNum] =   0;
 00000040  1C02      MOV         R2,R0 ; EPNum
 00000042  4800      LDR         R0,=TxDataBank ; TxDataBank
 00000044  5481      STRB        R1,[R0,R2]
  295: }
 00000046  4770      BX          R14
 00000048          ENDP ; 'USB_ResetEP?T'


*** CODE SEGMENT '?PR?USB_SetStallEP?T?usbhw':
  305: void USB_SetStallEP (DWORD EPNum) {
 00000000  1C03      MOV         R3,R0 ; EPNum
 00000002  ---- Variable 'EPNum' assigned to Register 'R3' ----
  306:   pUDP->UDP_CSR[EPNum & 0x0F] |=  AT91C_UDP_FORCESTALL;
 00000002  2220      MOV         R2,#0x20
 00000004  1C19      MOV         R1,R3 ; EPNum
 00000006  200F      MOV         R0,#0xF
 00000008  4001      AND         R1,R0
 0000000A  0089      LSL         R1,R1,#0x2
 0000000C  4800      LDR         R0,=pUDP ; pUDP
 0000000E  6800      LDR         R0,[R0,#0x0] ; pUDP
 00000010  1840      ADD         R0,R1
 00000012  3030      ADD         R0,#0x30
 00000014  6801      LDR         R1,[R0,#0x0]
 00000016  4311      ORR         R1,R2
 00000018  6001      STR         R1,[R0,#0x0]
  307: }
 0000001A  4770      BX          R14
 0000001C          ENDP ; 'USB_SetStallEP?T'


*** CODE SEGMENT '?PR?USB_ClrStallEP?T?usbhw':
  318: void USB_ClrStallEP (DWORD EPNum) {
 00000000  1C03      MOV         R3,R0 ; EPNum
 00000002  ---- Variable 'EPNum' assigned to Register 'R3' ----
  319:   pUDP->UDP_CSR[EPNum & 0x0F] &= ~AT91C_UDP_FORCESTALL;
 00000002  2220      MOV         R2,#0x20
 00000004  1C19      MOV         R1,R3 ; EPNum
 00000006  200F      MOV         R0,#0xF
 00000008  4001      AND         R1,R0
 0000000A  0089      LSL         R1,R1,#0x2
 0000000C  4800      LDR         R0,=pUDP ; pUDP
ARM COMPILER V2.53,  usbhw                                                                 31/10/07  09:22:43  PAGE 18  

 0000000E  6800      LDR         R0,[R0,#0x0] ; pUDP
 00000010  1840      ADD         R0,R1
 00000012  3030      ADD         R0,#0x30
 00000014  6801      LDR         R1,[R0,#0x0]
 00000016  4391      BIC         R1,R2
 00000018  6001      STR         R1,[R0,#0x0]
  320: }
 0000001A  4770      BX          R14
 0000001C          ENDP ; 'USB_ClrStallEP?T'


*** CODE SEGMENT '?PR?USB_ReadEP?T?usbhw':
  330: DWORD USB_ReadEP (DWORD EPNum, BYTE *pData) {
 00000000  B430      PUSH        {R4-R5}
 00000002  ---- Variable 'pData' assigned to Register 'R1' ----
 00000002  ---- Variable 'EPNum' assigned to Register 'R0' ----
 00000002            ; SCOPE-START
  333:   EPNum &= 0x0F;
 00000002  220F      MOV         R2,#0xF
 00000004  4010      AND         R0,R2
  334:   cnt = (pUDP->UDP_CSR[EPNum] >> 16) & 0x07FF;
 00000006  1C03      MOV         R3,R0 ; EPNum
 00000008  009B      LSL         R3,R3,#0x2 ; EPNum
 0000000A  4800      LDR         R2,=pUDP ; pUDP
 0000000C  6812      LDR         R2,[R2,#0x0] ; pUDP
 0000000E  18D2      ADD         R2,R3
 00000010  6B12      LDR         R2,[R2,#0x30]
 00000012  0C12      LSR         R2,R2,#0x10
 00000014  4800      LDR         R3,=0x7FF
 00000016  401A      AND         R2,R3
 00000018  ---- Variable 'cnt' assigned to Register 'R2' ----
  335:   for (n = 0; n < cnt; n++) {
 00000018  2300      MOV         R3,#0x0
 0000001A  ---- Variable 'n' assigned to Register 'R3' ----
 0000001A  E00B      B           L_30  ; T=0x00000034
 0000001C          L_31:
  336:     *pData++ = (BYTE)pUDP->UDP_FDR[EPNum];
 0000001C  1C05      MOV         R5,R0 ; EPNum
 0000001E  00AD      LSL         R5,R5,#0x2 ; EPNum
 00000020  4800      LDR         R4,=pUDP ; pUDP
 00000022  6824      LDR         R4,[R4,#0x0] ; pUDP
 00000024  1964      ADD         R4,R5
 00000026  6D25      LDR         R5,[R4,#0x50]
 00000028  062D      LSL         R5,R5,#0x18
 0000002A  0E2D      LSR         R5,R5,#0x18
 0000002C  1C0C      MOV         R4,R1 ; pData
 0000002E  3101      ADD         R1,#0x1
 00000030  7025      STRB        R5,[R4,#0x0] ; pData
  337:   }
 00000032  3301      ADD         R3,#0x1
 00000034          L_30:
 00000034  1C15      MOV         R5,R2 ; cnt
 00000036  1C1C      MOV         R4,R3 ; n
 00000038  42AC      CMP         R4,R5 ; n
 0000003A  D3EF      BCC         L_31  ; T=0x0000001C
  338:   return (cnt);
 0000003C  1C10      MOV         R0,R2 ; cnt
 0000003E            ; SCOPE-END
  339: }
 0000003E  BC30      POP         {R4-R5}
 00000040  4770      BX          R14
 00000042          ENDP ; 'USB_ReadEP?T'


*** CODE SEGMENT '?PR?USB_WriteEP?T?usbhw':
  352: DWORD USB_WriteEP (DWORD EPNum, BYTE *pData, DWORD cnt) {
 00000000  B470      PUSH        {R4-R6}
 00000002  ---- Variable 'cnt' assigned to Register 'R2' ----
 00000002  ---- Variable 'pData' assigned to Register 'R1' ----
 00000002  1C04      MOV         R4,R0 ; EPNum
ARM COMPILER V2.53,  usbhw                                                                 31/10/07  09:22:43  PAGE 19  

 00000004  ---- Variable 'EPNum' assigned to Register 'R4' ----
 00000004            ; SCOPE-START
  355:   EPNum &= 0x0F;
 00000004  200F      MOV         R0,#0xF
 00000006  4004      AND         R4,R0
  356:   if (pUDP->UDP_CSR[EPNum] & AT91C_UDP_TXPKTRDY) {
 00000008  1C23      MOV         R3,R4 ; EPNum
 0000000A  009B      LSL         R3,R3,#0x2 ; EPNum
 0000000C  4800      LDR         R0,=pUDP ; pUDP
 0000000E  6800      LDR         R0,[R0,#0x0] ; pUDP
 00000010  18C0      ADD         R0,R3

⌨️ 快捷键说明

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