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

📄 fw_chap9.lst

📁 at91sam7x256 FREERTOS sd卡的读写程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   00000044   21D1               BNE         ??fw_setConfiguration_5
    411              {
    412                /* status phase */
    413                fw_singleTransmit(0, 0);
   \   00000046   0021               MOV         R1,#+0
   \   00000048   201C               MOV         R0,R4
   \   0000004A   ........           BL          fw_singleTransmit
    414          
    415                while( !( AT91F_UDP_EpStatus( USBDEV_BASE_UDP, FW_EP_CTRL ) & USBDEV_UDP_TXCOMP )
    416                && (_i++ < 10));
   \                     ??fw_setConfiguration_6:
   \   0000004E   3868               LDR         R0,[R7, #+0]
   \   00000050   C007               LSL         R0,R0,#+31
   \   00000052   03D4               BMI         ??fw_setConfiguration_7
   \   00000054   201C               MOV         R0,R4
   \   00000056   641C               ADD         R4,R4,#+1
   \   00000058   0A28               CMP         R0,#+10
   \   0000005A   F8DB               BLT         ??fw_setConfiguration_6
    417          
    418          #ifndef AT91SAM9265
    419                USBDEV_BASE_UDP->UDP_GLBSTATE |= USBDEV_UDP_CONFG;
   \                     ??fw_setConfiguration_7:
   \   0000005C   3068               LDR         R0,[R6, #+0]
   \   0000005E   0221               MOV         R1,#+2
   \   00000060   0143               ORR         R1,R0
   \   00000062   3160               STR         R1,[R6, #+0]
    420          #else
    421                USBDEV_BASE_UDP->UDPHS_CTRL |= AT91C_EN_USB;
    422          #endif
    423                /* Configure device if it's not already the case */
    424                if(!(fw_deviceState & FW_DS_CONFIG))
   \   00000064   2878               LDRB        R0,[R5, #+0]
   \   00000066   C007               LSL         R0,R0,#+31
   \   00000068   09D4               BMI         ??fw_setConfiguration_8
    425                {
    426                  /* Enable all endpoints */
    427                  fw_activateEP(FW_EP_BULK_IN);
   \   0000006A   0120               MOV         R0,#+1
   \   0000006C   ........           _BLF        fw_activateEP,??fw_activateEP??rT
    428                  fw_activateEP(FW_EP_BULK_OUT);
   \   00000070   0220               MOV         R0,#+2
   \   00000072   ........           _BLF        fw_activateEP,??fw_activateEP??rT
    429          
    430                  /* mark the device as configured */
    431                  fw_deviceState |= FW_DS_CONFIG;
   \   00000076   2878               LDRB        R0,[R5, #+0]
   \   00000078   0121               MOV         R1,#+1
   \   0000007A   0143               ORR         R1,R0
   \   0000007C   2970               STRB        R1,[R5, #+0]
    432                }
    433          
    434                /* The device is plugged and enumerated */
    435                USB_EVENT |= USB_EVENT_MASK_PLUG;
   \                     ??fw_setConfiguration_8:
   \   0000007E   ....               LDR         R0,??DataTable14   ;; USB_EVENT
   \   00000080   0178               LDRB        R1,[R0, #+0]
   \   00000082   0422               MOV         R2,#+4
   \   00000084   0A43               ORR         R2,R1
   \   00000086   0270               STRB        R2,[R0, #+0]
   \   00000088   03E0               B           ??fw_setConfiguration_4
    436              }
    437              else
    438              {
    439                TRACE_DEBUG_H( "STALL\n\r");
    440                fw_stallEp0();
   \                     ??fw_setConfiguration_5:
   \   0000008A   0121               MOV         R1,#+1
   \   0000008C   0020               MOV         R0,#+0
   \   0000008E   ........           _BLF        fw_setEndpointStatus,??fw_setEndpointStatus??rT
    441              }
    442            }
    443          }
   \                     ??fw_setConfiguration_4:
   \   00000092   F0BC               POP         {R4-R7}
   \   00000094   01BC               POP         {R0}
   \   00000096   0047               BX          R0                 ;; return
   \                     ??fw_setConfiguration_0:
   \   00000098   ........           DC32        fw_controlData + 2
   \   0000009C   0400FBFF           DC32        0xfffb0004
   \   000000A0   3000FBFF           DC32        0xfffb0030
    444          
    445          
    446          /*****************************************************************
    447          *
    448          * ROUTINE     fw_setFeature
    449          *
    450          *-----------------------------------------------------------------
    451          *
    452          * Purpose :
    453          *   9.4.9 Set Feature ( SET_FEATURE )
    454          *   This request is used to set or enable a specific feature.
    455          *
    456          * Input parameters : NONE
    457          *
    458          * Output parameters : NONE
    459          *
    460          * Global data : fw_controlData : request to be processed
    461          *
    462          *****************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    463          void fw_setFeature(void)
    464          {
   \                     fw_setFeature:
   \   00000000   30B5               PUSH        {R4,R5,LR}
    465            EPx _endp;
    466            UCHAR _bRecipient = fw_controlData.DeviceRequest.bmRequestType & FW_USB_RECIPIENT;
    467          
    468            TRACE_DEBUG_H( "fsetFeature\n\r");
    469            if (_bRecipient == FW_USB_RECIPIENT_ENDPOINT
    470            && fw_controlData.DeviceRequest.wValue == USB_FEATURE_ENDPOINT_HALT)
   \   00000002   ....               LDR         R0,??DataTable12   ;; fw_controlData
   \   00000004   4188               LDRH        R1,[R0, #+2]
   \   00000006   ....               LDR         R4,??DataTable11   ;; stallEndpointStatus
   \   00000008   0278               LDRB        R2,[R0, #+0]
   \   0000000A   D206               LSL         R2,R2,#+27
   \   0000000C   D20E               LSR         R2,R2,#+27
   \   0000000E   022A               CMP         R2,#+2
   \   00000010   12D1               BNE         ??fw_setFeature_0
   \   00000012   0029               CMP         R1,#+0
   \   00000014   10D1               BNE         ??fw_setFeature_0
    471            {
    472              _endp = (EPx)(fw_controlData.DeviceRequest.wIndex & (FW_EP_CTRL | FW_EP_BULK_IN | FW_EP_BULK_OUT));
   \   00000016   8088               LDRH        R0,[R0, #+4]
   \   00000018   8507               LSL         R5,R0,#+30
   \   0000001A   AD0F               LSR         R5,R5,#+30
    473              /* set TX stall for IN on EPn. */
    474              fw_setEndpointStatus(_endp, 1);
   \   0000001C   0121               MOV         R1,#+1
   \   0000001E   281C               MOV         R0,R5
   \   00000020   ........           _BLF        fw_setEndpointStatus,??fw_setEndpointStatus??rT
    475              stallEndpointStatus |= (1<<_endp);
   \   00000024   2078               LDRB        R0,[R4, #+0]
   \   00000026   0121               MOV         R1,#+1
   \   00000028   A940               LSL         R1,R5
   \                     ??fw_setFeature_1:
   \   0000002A   0143               ORR         R1,R0
   \   0000002C   2170               STRB        R1,[R4, #+0]
    476              fw_singleTransmit(0, 0);
   \   0000002E   0021               MOV         R1,#+0
   \   00000030   0020               MOV         R0,#+0
   \   00000032   ........           BL          fw_singleTransmit
   \   00000036   0CE0               B           ??fw_setFeature_2
    477            }
    478            else
    479            {
    480              if(fw_controlData.DeviceRequest.wValue == USB_FEATURE_REMOTE_WAKEUP)
   \                     ??fw_setFeature_0:
   \   00000038   0129               CMP         R1,#+1
   \   0000003A   02D1               BNE         ??fw_setFeature_3
    481              {
    482                stallEndpointStatus |= (1<<4);
   \   0000003C   2078               LDRB        R0,[R4, #+0]
   \   0000003E   1021               MOV         R1,#+16
   \   00000040   F3E7               B           ??fw_setFeature_1
    483                fw_singleTransmit(0, 0);
    484              }
    485              else
    486              {
    487                TRACE_DEBUG_H( "setFeat stall\n\r");
    488                fw_stallEp0();
   \                     ??fw_setFeature_3:
   \   00000042   0121               MOV         R1,#+1
   \   00000044   0020               MOV         R0,#+0
   \   00000046   ........           _BLF        fw_setEndpointStatus,??fw_setEndpointStatus??rT
    489                stallEndpointStatus |= (1<<FW_EP_CTRL);
   \   0000004A   2078               LDRB        R0,[R4, #+0]
   \   0000004C   0121               MOV         R1,#+1
   \   0000004E   0143               ORR         R1,R0
   \   00000050   2170               STRB        R1,[R4, #+0]
    490              }
    491            }
    492          }
   \                     ??fw_setFeature_2:
   \   00000052   30BC               POP         {R4,R5}
   \   00000054   01BC               POP         {R0}
   \   00000056   0047               BX          R0                 ;; return
    493          
    494          
    495          
    496          /*****************************************************************
    497          *
    498          *
    499          * ROUTINE   fw_setInterface
    500          *
    501          *-----------------------------------------------------------------
    502          *
    503          * Purpose :
    504          *   9.4.10 Set Interface ( SET_INTERFACE )
    505          *   This request allows the host to select an alternate setting for the specified interface.
    506          *
    507          * Input parameters : NONE
    508          *
    509          * Output parameters : NONE
    510          *
    511          * Global data : fw_controlData : request to be processed
    512          *
    513          *****************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    514          void fw_setInterface(void)
    515          {
   \                     fw_setInterface:
   \   00000000   00B5               PUSH        {LR}
    516            TRACE_DEBUG_H( "setInt\n\r");
    517            if (fw_controlData.DeviceRequest.wValue == 0 && fw_controlData.DeviceRequest.wIndex == 0)
   \   00000002   ....               LDR         R0,??DataTable12   ;; fw_controlData
   \   00000004   4188               LDRH        R1,[R0, #+2]
   \   00000006   0029               CMP         R1,#+0
   \   00000008   07D1               BNE         ??fw_setInterface_0
   \   0000000A   8088               LDRH        R0,[R0, #+4]
   \   0000000C   0028               CMP         R0,#+0
   \   0000000E   04D1               BNE         ??fw_setInterface_0
    518            {
    519              fw_singleTransmit(0, 0);
   \   00000010   0021               MOV         R1,#+0
   \   00000012   0020               MOV         R0,#+0
   \   00000014   ........           BL          fw_singleTransmit
   \   00000018   03E0               B           ??fw_setInterface_1
    520            }
    521            else
    522            {
    523              TRACE_DEBUG_H( "stall\n\r");
    524              fw_stallEp0();
   \                     ??fw_setInterface_0:
   \   0000001A   0121               MOV         R1,#+1
   \   0000001C   0020               MOV         R0,#+0
   \   0000001E   ........           _BLF        fw_setEndpointStatus,??fw_setEndpointStatus??rT
    525            }
    526          }
   \                     ??fw_setInterface_1:
   \   00000022   01BC               POP         {R0}
   \   00000024   0047               BX          R0                 ;; return
    527          
    528          
    529          /*****************************************************************
    530          *
    531          * ROUTINE     fw_reserved
    532          *
    533          *-----------------------------------------------------------------
    534          *

⌨️ 快捷键说明

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