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

📄 usbd_udp.lst

📁 本代bootloader通过usb下载代码首先存放在sdram中
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   000000D0   040096E5           LDR      R0,[R6, #+4]
   \   000000D4   B210D5E1           LDRH     R1,[R5, #+2]
   \   000000D8   010040E0           SUB      R0,R0,R1
   \   000000DC   040086E5           STR      R0,[R6, #+4]
    498          
    499                          // Send next packet
    500                          if (BOARD_USB_ENDPOINTS_BANKS(bEndpoint) == 1) {
   \   000000E0   000054E3           CMP      R4,#+0
   \   000000E4   03005413           CMPNE    R4,#+3
   \   000000E8   1400001A           BNE      ??UDP_EndpointHandler_5
    501          
    502                              // No double buffering
    503                              UDP_WritePayload(bEndpoint);
   \   000000EC   0400A0E1           MOV      R0,R4
   \   000000F0   ........           BL       UDP_WritePayload
    504                              SET_CSR(bEndpoint, AT91C_UDP_TXPKTRDY);
   \   000000F4   0400A0E1           MOV      R0,R4
   \   000000F8   ........           LDR      R1,??DataTable61  ;; 0xfffb0030
   \   000000FC   000191E7           LDR      R0,[R1, +R0, LSL #+2]
   \   00000100   00008DE5           STR      R0,[SP, #+0]
   \   00000104   00009DE5           LDR      R0,[SP, #+0]
   \   00000108   4F0080E3           ORR      R0,R0,#0x4F
   \   0000010C   00008DE5           STR      R0,[SP, #+0]
   \   00000110   00009DE5           LDR      R0,[SP, #+0]
   \   00000114   100080E3           ORR      R0,R0,#0x10
   \   00000118   00008DE5           STR      R0,[SP, #+0]
   \   0000011C   0400A0E1           MOV      R0,R4
   \   00000120   00209DE5           LDR      R2,[SP, #+0]
   \   00000124   002181E7           STR      R2,[R1, +R0, LSL #+2]
   \                     ??UDP_EndpointHandler_6:
   \   00000128   0400A0E1           MOV      R0,R4
   \   0000012C   000191E7           LDR      R0,[R1, +R0, LSL #+2]
   \   00000130   100010E3           TST      R0,#0x10
   \   00000134   FBFFFF0A           BEQ      ??UDP_EndpointHandler_6
    505                              CLEAR_CSR(bEndpoint, AT91C_UDP_TXCOMP);
   \   00000138   0400A0E1           MOV      R0,R4
   \   0000013C   D0FFFFEA           B        ??UDP_EndpointHandler_3
    506                          }
    507                          else {
    508                              // Double buffering
    509                              SET_CSR(bEndpoint, AT91C_UDP_TXPKTRDY);
   \                     ??UDP_EndpointHandler_5:
   \   00000140   0400A0E1           MOV      R0,R4
   \   00000144   ........           LDR      R1,??DataTable61  ;; 0xfffb0030
   \   00000148   000191E7           LDR      R0,[R1, +R0, LSL #+2]
   \   0000014C   00008DE5           STR      R0,[SP, #+0]
   \   00000150   00009DE5           LDR      R0,[SP, #+0]
   \   00000154   4F0080E3           ORR      R0,R0,#0x4F
   \   00000158   00008DE5           STR      R0,[SP, #+0]
   \   0000015C   00009DE5           LDR      R0,[SP, #+0]
   \   00000160   100080E3           ORR      R0,R0,#0x10
   \   00000164   00008DE5           STR      R0,[SP, #+0]
   \   00000168   0400A0E1           MOV      R0,R4
   \   0000016C   00209DE5           LDR      R2,[SP, #+0]
   \   00000170   002181E7           STR      R2,[R1, +R0, LSL #+2]
   \                     ??UDP_EndpointHandler_7:
   \   00000174   0400A0E1           MOV      R0,R4
   \   00000178   000191E7           LDR      R0,[R1, +R0, LSL #+2]
   \   0000017C   100010E3           TST      R0,#0x10
   \   00000180   FBFFFF0A           BEQ      ??UDP_EndpointHandler_7
    510                              CLEAR_CSR(bEndpoint, AT91C_UDP_TXCOMP);
   \   00000184   0400A0E1           MOV      R0,R4
   \   00000188   000191E7           LDR      R0,[R1, +R0, LSL #+2]
   \   0000018C   00008DE5           STR      R0,[SP, #+0]
   \   00000190   00009DE5           LDR      R0,[SP, #+0]
   \   00000194   4F0080E3           ORR      R0,R0,#0x4F
   \   00000198   00008DE5           STR      R0,[SP, #+0]
   \   0000019C   00009DE5           LDR      R0,[SP, #+0]
   \   000001A0   0100C0E3           BIC      R0,R0,#0x1
   \   000001A4   00008DE5           STR      R0,[SP, #+0]
   \   000001A8   0400A0E1           MOV      R0,R4
   \   000001AC   00209DE5           LDR      R2,[SP, #+0]
   \   000001B0   002181E7           STR      R2,[R1, +R0, LSL #+2]
   \                     ??UDP_EndpointHandler_8:
   \   000001B4   0400A0E1           MOV      R0,R4
   \   000001B8   000191E7           LDR      R0,[R1, +R0, LSL #+2]
   \   000001BC   010010E3           TST      R0,#0x1
   \   000001C0   FBFFFF1A           BNE      ??UDP_EndpointHandler_8
    511                              UDP_WritePayload(bEndpoint);
   \   000001C4   0400A0E1           MOV      R0,R4
   \   000001C8   ........           BL       UDP_WritePayload
   \   000001CC   120000EA           B        ??UDP_EndpointHandler_0
    512                          }
    513                      }
    514                  }
    515                  else {
    516                      // Acknowledge interrupt
    517                      TRACE_ERROR("Error Wr");
   \                     ??UDP_EndpointHandler_1:
   \   000001D0   70029FE5           LDR      R0,??UDP_EndpointHandler_9  ;; `?<Constant "-E- Error Wr">`
   \   000001D4   ........           BL       printf
    518                      CLEAR_CSR(bEndpoint, AT91C_UDP_TXCOMP);
   \   000001D8   0400A0E1           MOV      R0,R4
   \   000001DC   ........           LDR      R1,??DataTable61  ;; 0xfffb0030
   \   000001E0   000191E7           LDR      R0,[R1, +R0, LSL #+2]
   \   000001E4   00008DE5           STR      R0,[SP, #+0]
   \   000001E8   00009DE5           LDR      R0,[SP, #+0]
   \   000001EC   4F0080E3           ORR      R0,R0,#0x4F
   \   000001F0   00008DE5           STR      R0,[SP, #+0]
   \   000001F4   00009DE5           LDR      R0,[SP, #+0]
   \   000001F8   0100C0E3           BIC      R0,R0,#0x1
   \   000001FC   00008DE5           STR      R0,[SP, #+0]
   \   00000200   0400A0E1           MOV      R0,R4
   \   00000204   00209DE5           LDR      R2,[SP, #+0]
   \   00000208   002181E7           STR      R2,[R1, +R0, LSL #+2]
   \                     ??UDP_EndpointHandler_10:
   \   0000020C   0400A0E1           MOV      R0,R4
   \   00000210   000191E7           LDR      R0,[R1, +R0, LSL #+2]
   \   00000214   010010E3           TST      R0,#0x1
   \   00000218   FBFFFF1A           BNE      ??UDP_EndpointHandler_10
    519                  }
    520              }
    521          
    522              // OUT packet received
    523              if ((status & UDP_RXDATA) != 0) {
   \                     ??UDP_EndpointHandler_0:
   \   0000021C   420017E3           TST      R7,#0x42
   \   00000220   2600000A           BEQ      ??UDP_EndpointHandler_11
    524          
    525                  TRACE_DEBUG_WP("Rd ");
    526          
    527                  // Check that the endpoint is in Receiving state
    528                  if (pEndpoint->state != UDP_ENDPOINT_RECEIVING) {
   \   00000224   0000D5E5           LDRB     R0,[R5, #+0]
   \   00000228   040050E3           CMP      R0,#+4
   \   0000022C   0F00000A           BEQ      ??UDP_EndpointHandler_12
    529          
    530                      // Check if an ACK has been received on a Control endpoint
    531                      if (((status & AT91C_UDP_EPTYPE) == AT91C_UDP_EPTYPE_CTRL)
    532                          && ((status & AT91C_UDP_RXBYTECNT) == 0)) {
   \   00000230   14029FE5           LDR      R0,??UDP_EndpointHandler_9+0x4  ;; 0x7ff0700
   \   00000234   070010E1           TST      R0,R7
   \   00000238   0200001A           BNE      ??UDP_EndpointHandler_13
    533          
    534                          // Acknowledge the data and finish the current transfer
    535                          UDP_ClearRxFlag(bEndpoint);
   \   0000023C   0400A0E1           MOV      R0,R4
   \   00000240   ........           BL       UDP_ClearRxFlag
    536                          UDP_EndOfTransfer(bEndpoint, USBD_STATUS_SUCCESS);
   \   00000244   1A0000EA           B        ??UDP_EndpointHandler_14
    537                      }
    538                      // Check if the data has been STALLed
    539                      else if ((status & AT91C_UDP_FORCESTALL) != 0) {
   \                     ??UDP_EndpointHandler_13:
   \   00000248   200017E3           TST      R7,#0x20
   \   0000024C   0200000A           BEQ      ??UDP_EndpointHandler_15
    540          
    541                          // Discard STALLed data
    542                          TRACE_DEBUG_WP("Discard ");
    543                          UDP_ClearRxFlag(bEndpoint);
   \   00000250   0400A0E1           MOV      R0,R4
   \   00000254   ........           BL       UDP_ClearRxFlag
   \   00000258   180000EA           B        ??UDP_EndpointHandler_11
    544                      }
    545                      // NAK the data
    546                      else {
    547          
    548                          TRACE_DEBUG_WP("Nak ");
    549                          AT91C_BASE_UDP->UDP_IDR = 1 << bEndpoint;
   \                     ??UDP_EndpointHandler_15:
   \   0000025C   0100A0E3           MOV      R0,#+1
   \   00000260   1004A0E1           LSL      R0,R0,R4
   \   00000264   ........           LDR      R1,??DataTable22  ;; 0xfffb0014
   \   00000268   000081E5           STR      R0,[R1, #+0]
   \   0000026C   130000EA           B        ??UDP_EndpointHandler_11
    550                      }
    551                  }
    552                  // Endpoint is in Read state
    553                  else {
    554          
    555                      // Retrieve data and store it into the current transfer buffer
    556                      wPacketSize = (unsigned short) (status >> 16);
   \                     ??UDP_EndpointHandler_12:
   \   00000270   2788A0E1           LSR      R8,R7,#+16
    557                      TRACE_DEBUG_WP("%d ", wPacketSize);
    558                      UDP_ReadPayload(bEndpoint, wPacketSize);
   \   00000274   0810A0E1           MOV      R1,R8
   \   00000278   0400A0E1           MOV      R0,R4
   \   0000027C   ........           BL       UDP_ReadPayload
    559                      UDP_ClearRxFlag(bEndpoint);
   \   00000280   0400A0E1           MOV      R0,R4
   \   00000284   ........           BL       UDP_ClearRxFlag
    560          
    561                      // Check if the transfer is finished
    562                      if ((pTransfer->remaining == 0) || (wPacketSize < pEndpoint->size)) {
   \   00000288   0C0096E5           LDR      R0,[R6, #+12]
   \   0000028C   000050E3           CMP      R0,#+0
   \   00000290   0200000A           BEQ      ??UDP_EndpointHandler_16
   \   00000294   B200D5E1           LDRH     R0,[R5, #+2]
   \   00000298   000058E1           CMP      R8,R0
   \   0000029C   0700002A           BCS      ??UDP_EndpointHandler_11
    563          
    564                          // Disable interrupt if this is not a control endpoint
    565                          if ((status & AT91C_UDP_EPTYPE) != AT91C_UDP_EPTYPE_CTRL) {
   \                     ??UDP_EndpointHandler_16:
   \   000002A0   700E17E3           TST      R7,#0x700
    566          
    567                              AT91C_BASE_UDP->UDP_IDR = 1 << bEndpoint;
   \   000002A4   0100A013           MOVNE    R0,#+1
   \   000002A8   1004A011           LSLNE    R0,R0,R4
   \   000002AC   ........           LDRNE    R1,??DataTable22  ;; 0xfffb0014
   \   000002B0   00008115           STRNE    R0,[R1, #+0]
    568                          }
    569                          UDP_EndOfTransfer(bEndpoint, USBD_STATUS_SUCCESS);
   \                     ??UDP_EndpointHandler_14:
   \   000002B4   0010A0E3           MOV      R1,#+0
   \   000002B8   0400A0E1           MOV      R0,R4
   \   000002BC   ........           BL       UDP_EndOfTransfer
    570                      }
    571                  }
    572              }
    573          
    574              // STALL sent
    575              if ((status & AT91C_UDP_STALLSENT) != 0) {
   \                     ??UDP_EndpointHandler_11:
   \   000002C0   080017E3           TST      R7,#0x8
   \   000002C4   2A00000A           BEQ      ??UDP_EndpointHandler_17
    576          
    577                  TRACE_WARNING( "Sta 0x%X [%d] ", status, bEndpoint);
   \   000002C8   0420A0E1           MOV      R2,R4
   \   000002CC   0710A0E1           MOV      R1,R7
   \   000002D0   78019FE5           LDR      R0,??UDP_EndpointHandler_9+0x8  ;; `?<Constant "-W- Sta 0x%X [%d] ">`
   \   000002D4   ........           BL       printf
    578          
    579                  // If the endpoint is not halted, clear the STALL condition
    580                  CLEAR_CSR(bEndpoint, AT91C_UDP_STALLSENT);
   \   000002D8   0400A0E1           MOV      R0,R4
   \   000002DC   ........           LDR      R1,??DataTable61  ;; 0xfffb0030
   \   000002E0

⌨️ 快捷键说明

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