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

📄 usbd_udp.lst

📁 ATmel的AT91sam7SE芯片 USB固件开发源代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   00000094   041096E5           LDR      R1,[R6, #+4]
   \   00000098   000091E0           ADDS     R0,R1,R0
   \   0000009C   080086E5           STR      R0,[R6, #+8]
    463                          transfer->buffered = 0;
   \   000000A0   0000A0E3           MOV      R0,#+0
   \   000000A4   040086E5           STR      R0,[R6, #+4]
    464          
    465                          // Disable interrupt if this is not a control endpoint
    466                          if ((status & AT91C_UDP_EPTYPE) != AT91C_UDP_EPTYPE_CTRL) {
   \   000000A8   700E17E3           TST      R7,#0x700
   \   000000AC   0500000A           BEQ      ??UDP_EndpointHandler_5
    467          
    468                              AT91C_BASE_UDP->UDP_IDR |= 1 << eptnum;
   \   000000B0   ........           LDR      R0,??DataTable64  ;; 0xfffb0014
   \   000000B4   000090E5           LDR      R0,[R0, #+0]
   \   000000B8   0110A0E3           MOV      R1,#+1
   \   000000BC   110490E1           ORRS     R0,R0,R1, LSL R4
   \   000000C0   ........           LDR      R1,??DataTable64  ;; 0xfffb0014
   \   000000C4   000081E5           STR      R0,[R1, #+0]
    469                          }
    470          
    471                          UDP_EndOfTransfer(eptnum, USBD_STATUS_SUCCESS);
   \                     ??UDP_EndpointHandler_5:
   \   000000C8   0010A0E3           MOV      R1,#+0
   \   000000CC   0400B0E1           MOVS     R0,R4
   \   000000D0   FF0010E2           ANDS     R0,R0,#0xFF      ;; Zero extend
   \   000000D4   ........           BL       UDP_EndOfTransfer
   \   000000D8   360000EA           B        ??UDP_EndpointHandler_3
    472                      }
    473                      else {
    474          
    475                          // Transfer remaining data
    476                          trace_LOG(trace_INFO, "%d ", endpoint->size);
   \                     ??UDP_EndpointHandler_4:
   \   000000DC   B210D5E1           LDRH     R1,[R5, #+2]
   \   000000E0   DE0F8FE2           ADR      R0,??UDP_EndpointHandler_0  ;; "%d "
   \   000000E4   ........           BL       printf
    477          
    478                          transfer->transferred += endpoint->size;
   \   000000E8   080096E5           LDR      R0,[R6, #+8]
   \   000000EC   B210D5E1           LDRH     R1,[R5, #+2]
   \   000000F0   000091E0           ADDS     R0,R1,R0
   \   000000F4   080086E5           STR      R0,[R6, #+8]
    479                          transfer->buffered -= endpoint->size;
   \   000000F8   040096E5           LDR      R0,[R6, #+4]
   \   000000FC   B210D5E1           LDRH     R1,[R5, #+2]
   \   00000100   010050E0           SUBS     R0,R0,R1
   \   00000104   040086E5           STR      R0,[R6, #+4]
    480          
    481                          // Send next packet
    482                          if (BOARD_USB_ENDPOINTS_BANKS(eptnum) == 1) {
   \   00000108   FF4014E2           ANDS     R4,R4,#0xFF      ;; Zero extend
   \   0000010C   000054E3           CMP      R4,#+0
   \   00000110   0200000A           BEQ      ??UDP_EndpointHandler_6
   \   00000114   FF4014E2           ANDS     R4,R4,#0xFF      ;; Zero extend
   \   00000118   030054E3           CMP      R4,#+3
   \   0000011C   0100001A           BNE      ??UDP_EndpointHandler_7
   \                     ??UDP_EndpointHandler_6:
   \   00000120   0100A0E3           MOV      R0,#+1
   \   00000124   000000EA           B        ??UDP_EndpointHandler_8
   \                     ??UDP_EndpointHandler_7:
   \   00000128   0200A0E3           MOV      R0,#+2
   \                     ??UDP_EndpointHandler_8:
   \   0000012C   010050E3           CMP      R0,#+1
   \   00000130   1000001A           BNE      ??UDP_EndpointHandler_9
    483          
    484                              // No double buffering
    485                              UDP_WritePayload(eptnum);
   \   00000134   0400B0E1           MOVS     R0,R4
   \   00000138   FF0010E2           ANDS     R0,R0,#0xFF      ;; Zero extend
   \   0000013C   ........           BL       UDP_WritePayload
    486                              SET_CSR(eptnum, AT91C_UDP_TXPKTRDY);
   \   00000140   0400B0E1           MOVS     R0,R4
   \   00000144   FF0010E2           ANDS     R0,R0,#0xFF      ;; Zero extend
   \   00000148   0410A0E3           MOV      R1,#+4
   \   0000014C   ........           LDR      R2,??DataTable70  ;; 0xfffb0030
   \   00000150   912020E0           MLA      R0,R1,R0,R2
   \   00000154   000090E5           LDR      R0,[R0, #+0]
   \   00000158   100090E3           ORRS     R0,R0,#0x10
   \   0000015C   0410B0E1           MOVS     R1,R4
   \   00000160   FF1011E2           ANDS     R1,R1,#0xFF      ;; Zero extend
   \   00000164   0420A0E3           MOV      R2,#+4
   \   00000168   ........           LDR      R3,??DataTable70  ;; 0xfffb0030
   \   0000016C   923121E0           MLA      R1,R2,R1,R3
   \   00000170   000081E5           STR      R0,[R1, #+0]
   \   00000174   0F0000EA           B        ??UDP_EndpointHandler_3
    487                          }
    488                          else {
    489          
    490                              // Double buffering
    491                              SET_CSR(eptnum, AT91C_UDP_TXPKTRDY);
   \                     ??UDP_EndpointHandler_9:
   \   00000178   0400B0E1           MOVS     R0,R4
   \   0000017C   FF0010E2           ANDS     R0,R0,#0xFF      ;; Zero extend
   \   00000180   0410A0E3           MOV      R1,#+4
   \   00000184   ........           LDR      R2,??DataTable70  ;; 0xfffb0030
   \   00000188   912020E0           MLA      R0,R1,R0,R2
   \   0000018C   000090E5           LDR      R0,[R0, #+0]
   \   00000190   100090E3           ORRS     R0,R0,#0x10
   \   00000194   0410B0E1           MOVS     R1,R4
   \   00000198   FF1011E2           ANDS     R1,R1,#0xFF      ;; Zero extend
   \   0000019C   0420A0E3           MOV      R2,#+4
   \   000001A0   ........           LDR      R3,??DataTable70  ;; 0xfffb0030
   \   000001A4   923121E0           MLA      R1,R2,R1,R3
   \   000001A8   000081E5           STR      R0,[R1, #+0]
    492                              UDP_WritePayload(eptnum);
   \   000001AC   0400B0E1           MOVS     R0,R4
   \   000001B0   FF0010E2           ANDS     R0,R0,#0xFF      ;; Zero extend
   \   000001B4   ........           BL       UDP_WritePayload
    493                          }
    494                      }
    495                  }
    496          
    497                  // Acknowledge interrupt
    498                  CLEAR_CSR(eptnum, AT91C_UDP_TXCOMP);
   \                     ??UDP_EndpointHandler_3:
   \   000001B8   0400B0E1           MOVS     R0,R4
   \   000001BC   FF0010E2           ANDS     R0,R0,#0xFF      ;; Zero extend
   \   000001C0   0410A0E3           MOV      R1,#+4
   \   000001C4   ........           LDR      R2,??DataTable70  ;; 0xfffb0030
   \   000001C8   912020E0           MLA      R0,R1,R0,R2
   \   000001CC   000090E5           LDR      R0,[R0, #+0]
   \   000001D0   0100D0E3           BICS     R0,R0,#0x1
   \   000001D4   0410B0E1           MOVS     R1,R4
   \   000001D8   FF1011E2           ANDS     R1,R1,#0xFF      ;; Zero extend
   \   000001DC   0420A0E3           MOV      R2,#+4
   \   000001E0   ........           LDR      R3,??DataTable70  ;; 0xfffb0030
   \   000001E4   923121E0           MLA      R1,R2,R1,R3
   \   000001E8   000081E5           STR      R0,[R1, #+0]
    499              }
    500          
    501              // OUT packet received
    502              if ((status & UDP_RXDATA) != 0) {
   \                     ??UDP_EndpointHandler_1:
   \   000001EC   420017E3           TST      R7,#0x42
   \   000001F0   4700000A           BEQ      ??UDP_EndpointHandler_10
    503          
    504                  trace_LOG(trace_INFO, "Rd ");
   \   000001F4   9A0F8FE2           ADR      R0,??UDP_EndpointHandler_0+0x4  ;; "Rd "
   \   000001F8   ........           BL       printf
    505          
    506                  // Check that the endpoint is in Receiving state
    507                  if (endpoint->state != UDP_ENDPOINT_RECEIVING) {
   \   000001FC   0000D5E5           LDRB     R0,[R5, #+0]
   \   00000200   040050E3           CMP      R0,#+4
   \   00000204   1E00000A           BEQ      ??UDP_EndpointHandler_11
    508          
    509                      // Check if an ACK has been received on a Control endpoint
    510                      if (((status & AT91C_UDP_EPTYPE) == AT91C_UDP_EPTYPE_CTRL)
    511                          && ((status & AT91C_UDP_RXBYTECNT) == 0)) {
   \   00000208   5C029FE5           LDR      R0,??UDP_EndpointHandler_0+0xC  ;; 0x7ff0700
   \   0000020C   070010E1           TST      R0,R7
   \   00000210   0900001A           BNE      ??UDP_EndpointHandler_12
    512          
    513                          // Acknowledge the data and finish the current transfer
    514                          trace_LOG(trace_INFO, "Ack ");
   \   00000214   54029FE5           LDR      R0,??UDP_EndpointHandler_0+0x10  ;; `?<Constant "Ack ">`
   \   00000218   ........           BL       printf
    515                          UDP_ClearRxFlag(eptnum);
   \   0000021C   0400B0E1           MOVS     R0,R4
   \   00000220   FF0010E2           ANDS     R0,R0,#0xFF      ;; Zero extend
   \   00000224   ........           BL       UDP_ClearRxFlag
    516                          UDP_EndOfTransfer(eptnum, USBD_STATUS_SUCCESS);
   \   00000228   0010A0E3           MOV      R1,#+0
   \   0000022C   0400B0E1           MOVS     R0,R4
   \   00000230   FF0010E2           ANDS     R0,R0,#0xFF      ;; Zero extend
   \   00000234   ........           BL       UDP_EndOfTransfer
   \   00000238   350000EA           B        ??UDP_EndpointHandler_10
    517                      }
    518                      // Check if the data has been STALLed
    519                      else if ((status & AT91C_UDP_FORCESTALL) != 0) {
   \                     ??UDP_EndpointHandler_12:
   \   0000023C   200017E3           TST      R7,#0x20
   \   00000240   0500000A           BEQ      ??UDP_EndpointHandler_13
    520          
    521                          // Discard STALLed data
    522                          trace_LOG(trace_INFO, "Disc ");
   \   00000244   ........           LDR      R0,??DataTable29  ;; `?<Constant "Disc ">`
   \   00000248   ........           BL       printf
    523                          UDP_ClearRxFlag(eptnum);
   \   0000024C   0400B0E1           MOVS     R0,R4
   \   00000250   FF0010E2           ANDS     R0,R0,#0xFF      ;; Zero extend
   \   00000254   ........           BL       UDP_ClearRxFlag
   \   00000258   2D0000EA           B        ??UDP_EndpointHandler_10
    524                      }
    525                      // NAK the data
    526                      else {
    527          
    528                          trace_LOG(trace_INFO, "Nak ");
   \                     ??UDP_EndpointHandler_13:
   \   0000025C   10029FE5           LDR      R0,??UDP_EndpointHandler_0+0x14  ;; `?<Constant "Nak ">`
   \   00000260   ........           BL       printf
    529                          AT91C_BASE_UDP->UDP_IDR |= 1 << eptnum;
   \   00000264   ........           LDR      R0,??DataTable64  ;; 0xfffb0014
   \   00000268   000090E5           LDR      R0,[R0, #+0]
   \   0000026C   0110A0E3           MOV      R1,#+1
   \   00000270   110490E1           ORRS     R0,R0,R1, LSL R4
   \   00000274   ........           LDR      R1,??DataTable64  ;; 0xfffb0014
   \   00000278   000081E5           STR      R0,[R1, #+0]
   \   0000027C   240000EA           B        ??UDP_EndpointHandler_10
   \                     ??UDP_EndpointHandler_2:
   \   00000280   57722000           DC8      "Wr "
    530                      }
    531                  }
    532                  // Endpoint is in Read state
    533                  else {
    534          
    535                      // Retrieve data and store it into the current transfer buffer
    536                      unsigned short size = (unsigned short) (status >> 16);
   \                     ??UDP_EndpointHandler_11:
   \   00000284   2708B0E1           LSRS     R0,R7,#+16
   \   00000288   0080B0E1           MOVS     R8,R0
    537                      trace_LOG(trace_INFO, "%d ", size);
   \   0000028C   0810B0E1           MOVS     R1,R8
   \   00000290   0118A0E1           MOV      R1,R1, LSL #+16
   \   00000294   2118B0E1           MOVS     R1,R1, LSR #+16
   \   00000298   700F8FE2           ADR      R0,??UDP_EndpointHandler_0  ;; "%d "
   \   0000029C   ........           BL       printf
    538                      UDP_ReadPayload(eptnum, size);
   \   000002A0   0810B0E1           MOVS     R1,R8
   \   000002A4   0118A0E1           MOV      R1,R1, LSL #+16
   \   000002A8   2118B0E1           MOVS     R1,R1, LSR #+16
   \   000002AC   0400B0E1           MOVS     R0,R4
   \   000002B0   FF0010E2           ANDS     R0,R0,#0xFF      ;; Zero extend
   \   000002B4   ........           BL       UDP_ReadPayload
    539                      UDP_ClearRxFlag(eptnum);
   \   000002B8   0400B0E1           MOVS     R0,R4
   \   000002BC   FF0010E2           ANDS     R0,R0,#0xFF      ;; Zero extend
   \   000002C0   ........           BL       UDP_ClearRxFlag
    540          
    541                      // Check if the transfer is finished
    

⌨️ 快捷键说明

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