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

📄 usb_core.s79

📁 用于监视I2C通信总线
💻 S79
📖 第 1 页 / 共 5 页
字号:
//////////////////////////////////////////////////////////////////////////////
//                                                                           /
// IAR ARM ANSI C/C++ Compiler V4.42A/W32 EVALUATION   10/Nov/2008  11:44:06 /
// Copyright 1999-2005 IAR Systems. All rights reserved.                     /
//                                                                           /
//    Cpu mode        =  thumb                                               /
//    Endian          =  little                                              /
//    Stack alignment =  4                                                   /
//    Source file     =  D:\资料\ST\ST\usb\USBLib\library\src\usb_core.c     /
//    Command line    =  D:\资料\ST\ST\usb\USBLib\library\src\usb_core.c -D  /
//                       VECT_TAB_FLASH -D USE_STM3210E_EVAL -lA             /
//                       D:\资料\ST\ST\usb\USBLib\demos\Virtual_COM_Port\pro /
//                       ject\EWARMv4\STM3210E-EVAL\List\ -o                 /
//                       D:\资料\ST\ST\usb\USBLib\demos\Virtual_COM_Port\pro /
//                       ject\EWARMv4\STM3210E-EVAL\Obj\ -z9 --debug         /
//                       --cpu_mode thumb --endian little --cpu cortex-M3    /
//                       --stack_align 4 --require_prototypes --fpu None     /
//                       --dlib_config "C:\Program Files\IAR                 /
//                       Systems\Embedded Workbench 4.0                      /
//                       Evaluation\arm\LIB\dl7mptnnl8f.h" -I                /
//                       D:\资料\ST\ST\usb\USBLib\demos\Virtual_COM_Port\pro /
//                       ject\EWARMv4\..\..\include\ -I                      /
//                       D:\资料\ST\ST\usb\USBLib\demos\Virtual_COM_Port\pro /
//                       ject\EWARMv4\..\..\..\..\library\inc\ -I            /
//                       D:\资料\ST\ST\usb\USBLib\demos\Virtual_COM_Port\pro /
//                       ject\EWARMv4\..\..\..\..\..\FWLib\library\inc\ -I   /
//                       "C:\Program Files\IAR Systems\Embedded Workbench    /
//                       4.0 Evaluation\arm\INC\" --inline_threshold=2       /
//    List file       =  D:\资料\ST\ST\usb\USBLib\demos\Virtual_COM_Port\pro /
//                       ject\EWARMv4\STM3210E-EVAL\List\usb_core.s79        /
//                                                                           /
//                                                                           /
//////////////////////////////////////////////////////////////////////////////

        NAME usb_core

        RTMODEL "StackAlign4", "USED"
        RTMODEL "__cpu_mode", "__pcs__thumb"
        RTMODEL "__data_model", "absolute"
        RTMODEL "__endian", "little"
        RTMODEL "__rt_version", "6"

        RSEG CSTACK:DATA:NOROOT(2)

        EXTERN ??div32_t

        MULTWEAK ??ByteSwap??rT
        MULTWEAK ??ClearDTOG_RX??rT
        MULTWEAK ??ClearDTOG_TX??rT
??DataTable0 EQU 0
??DataTable1 EQU 0
??DataTable10 EQU 0
??DataTable11 EQU 0
??DataTable12 EQU 0
??DataTable13 EQU 0
??DataTable14 EQU 0
??DataTable15 EQU 0
??DataTable16 EQU 0
??DataTable17 EQU 0
??DataTable18 EQU 0
??DataTable2 EQU 0
??DataTable20 EQU 0
??DataTable21 EQU 0
??DataTable22 EQU 0
??DataTable23 EQU 0
??DataTable24 EQU 0
??DataTable28 EQU 0
??DataTable29 EQU 0
??DataTable3 EQU 0
??DataTable32 EQU 0
??DataTable33 EQU 0
??DataTable34 EQU 0
??DataTable35 EQU 0
??DataTable36 EQU 0
??DataTable37 EQU 0
??DataTable38 EQU 0
??DataTable39 EQU 0
??DataTable4 EQU 0
??DataTable40 EQU 0
??DataTable42 EQU 0
??DataTable44 EQU 0
??DataTable48 EQU 0
??DataTable49 EQU 0
??DataTable5 EQU 0
??DataTable50 EQU 0
??DataTable51 EQU 0
??DataTable52 EQU 0
??DataTable54 EQU 0
??DataTable56 EQU 0
??DataTable57 EQU 0
??DataTable59 EQU 0
??DataTable60 EQU 0
??DataTable7 EQU 0
??DataTable8 EQU 0
??DataTable9 EQU 0
        MULTWEAK ??GetEPRxAddr??rT
        MULTWEAK ??GetEPTxAddr??rT
        MULTWEAK ??PMAToUserBufferCopy??rT
        MULTWEAK ??SetEPRxCount??rT
        MULTWEAK ??SetEPTxCount??rT
        MULTWEAK ??SetEPTxStatus??rT
        MULTWEAK ??UserToPMABufferCopy??rT
        MULTWEAK ??rT??div32_t
        PUBWEAK ?init?tab?DATA_Z
        FUNCTION DataStageIn,0203H
        LOCFRAME CSTACK, 28, STACK
        FUNCTION DataStageOut,0203H
        LOCFRAME CSTACK, 20, STACK
        PUBLIC Data_Mul_MaxPacketSize
        FUNCTION Data_Setup0,0203H
        LOCFRAME CSTACK, 36, STACK
        PUBLIC In0_Process
        FUNCTION In0_Process,0203H
        LOCFRAME CSTACK, 8, STACK
        PUBLIC NOP_Process
        FUNCTION NOP_Process,0203H
        FUNCTION NoData_Setup0,0203H
        LOCFRAME CSTACK, 16, STACK
        PUBLIC Out0_Process
        FUNCTION Out0_Process,0203H
        LOCFRAME CSTACK, 8, STACK
        PUBLIC Post0_Process
        FUNCTION Post0_Process,0203H
        LOCFRAME CSTACK, 4, STACK
        PUBLIC SetDeviceAddress
        FUNCTION SetDeviceAddress,0203H
        LOCFRAME CSTACK, 16, STACK
        PUBLIC Setup0_Process
        FUNCTION Setup0_Process,0203H
        LOCFRAME CSTACK, 12, STACK
        PUBLIC Standard_ClearFeature
        FUNCTION Standard_ClearFeature,0203H
        LOCFRAME CSTACK, 16, STACK
        PUBLIC Standard_GetConfiguration
        FUNCTION Standard_GetConfiguration,0603H
        LOCFRAME CSTACK, 8, STACK
        PUBLIC Standard_GetDescriptorData
        FUNCTION Standard_GetDescriptorData,0203H
        PUBLIC Standard_GetInterface
        FUNCTION Standard_GetInterface,0603H
        LOCFRAME CSTACK, 8, STACK
        PUBLIC Standard_GetStatus
        FUNCTION Standard_GetStatus,0603H
        LOCFRAME CSTACK, 8, STACK
        PUBLIC Standard_SetConfiguration
        FUNCTION Standard_SetConfiguration,0203H
        LOCFRAME CSTACK, 4, STACK
        PUBLIC Standard_SetDeviceFeature
        FUNCTION Standard_SetDeviceFeature,0203H
        LOCFRAME CSTACK, 4, STACK
        PUBLIC Standard_SetEndPointFeature
        FUNCTION Standard_SetEndPointFeature,0203H
        LOCFRAME CSTACK, 8, STACK
        PUBLIC Standard_SetInterface
        FUNCTION Standard_SetInterface,0203H
        LOCFRAME CSTACK, 8, STACK
        PUBLIC StatusInfo
        
        CFI Names cfiNames0
        CFI StackFrame CFA R13 HUGEDATA
        CFI Resource R0:32, R1:32, R2:32, R3:32, R4:32, R5:32, R6:32, R7:32
        CFI Resource R8:32, R9:32, R10:32, R11:32, R12:32, R13:32, R14:32
        CFI VirtualResource ?RET:32
        CFI EndNames cfiNames0
        
        CFI Common cfiCommon0 Using cfiNames0
        CFI CodeAlign 2
        CFI DataAlign 4
        CFI ReturnAddress ?RET CODE
        CFI CFA R13+0
        CFI R0 Undefined
        CFI R1 Undefined
        CFI R2 Undefined
        CFI R3 Undefined
        CFI R4 SameValue
        CFI R5 SameValue
        CFI R6 SameValue
        CFI R7 SameValue
        CFI R8 SameValue
        CFI R9 SameValue
        CFI R10 SameValue
        CFI R11 SameValue
        CFI R12 Undefined
        CFI R14 Undefined
        CFI ?RET R14
        CFI EndCommon cfiCommon0
        
ByteSwap            SYMBOL "ByteSwap"
ClearDTOG_RX        SYMBOL "ClearDTOG_RX"
ClearDTOG_TX        SYMBOL "ClearDTOG_TX"
GetEPRxAddr         SYMBOL "GetEPRxAddr"
GetEPTxAddr         SYMBOL "GetEPTxAddr"
PMAToUserBufferCopy SYMBOL "PMAToUserBufferCopy"
SetEPRxCount        SYMBOL "SetEPRxCount"
SetEPTxCount        SYMBOL "SetEPTxCount"
SetEPTxStatus       SYMBOL "SetEPTxStatus"
UserToPMABufferCopy SYMBOL "UserToPMABufferCopy"
??ByteSwap??rT      SYMBOL "??rT", ByteSwap
??ClearDTOG_RX??rT  SYMBOL "??rT", ClearDTOG_RX
??ClearDTOG_TX??rT  SYMBOL "??rT", ClearDTOG_TX
??GetEPRxAddr??rT   SYMBOL "??rT", GetEPRxAddr
??GetEPTxAddr??rT   SYMBOL "??rT", GetEPTxAddr
??PMAToUserBufferCopy??rT SYMBOL "??rT", PMAToUserBufferCopy
??SetEPRxCount??rT  SYMBOL "??rT", SetEPRxCount
??SetEPTxCount??rT  SYMBOL "??rT", SetEPTxCount
??SetEPTxStatus??rT SYMBOL "??rT", SetEPTxStatus
??UserToPMABufferCopy??rT SYMBOL "??rT", UserToPMABufferCopy

        EXTERN ByteSwap
        FUNCTION ByteSwap,0202H
        EXTERN ClearDTOG_RX
        FUNCTION ClearDTOG_RX,0202H
        EXTERN ClearDTOG_TX
        FUNCTION ClearDTOG_TX,0202H
        EXTERN Device_Property
        EXTERN Device_Table
        EXTERN GetEPRxAddr
        FUNCTION GetEPRxAddr,0202H
        EXTERN GetEPTxAddr
        FUNCTION GetEPTxAddr,0202H
        EXTERN PMAToUserBufferCopy
        FUNCTION PMAToUserBufferCopy,0202H
        EXTERN SaveRState
        EXTERN SaveTState
        EXTERN SetEPRxCount
        FUNCTION SetEPRxCount,0202H
        EXTERN SetEPTxCount
        FUNCTION SetEPTxCount,0202H
        EXTERN SetEPTxStatus
        FUNCTION SetEPTxStatus,0202H
        EXTERN UserToPMABufferCopy
        FUNCTION UserToPMABufferCopy,0202H
        EXTERN pInformation
        EXTERN pProperty
        EXTERN pUser_Standard_Requests

// D:\资料\ST\ST\usb\USBLib\library\src\usb_core.c
//    1 /******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
//    2 * File Name          : usb_core.c
//    3 * Author             : MCD Application Team
//    4 * Version            : V2.2.0
//    5 * Date               : 06/13/2008
//    6 * Description        : Standard protocol processing (USB v2.0)
//    7 ********************************************************************************
//    8 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
//    9 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
//   10 * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
//   11 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
//   12 * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
//   13 * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
//   14 *******************************************************************************/
//   15 
//   16 /* Includes ------------------------------------------------------------------*/
//   17 #include "usb_lib.h"
//   18 /* Private typedef -----------------------------------------------------------*/
//   19 /* Private define ------------------------------------------------------------*/
//   20 #define ValBit(VAR,Place)    (VAR & (1 << Place))
//   21 #define SetBit(VAR,Place)    (VAR |= (1 << Place))
//   22 #define ClrBit(VAR,Place)    (VAR &= ((1 << Place) ^ 255))
//   23 
//   24 #define Send0LengthData() { _SetEPTxCount(ENDP0, 0); \ 
//   25     vSetEPTxStatus(EP_TX_VALID); \ 
//   26   }
//   27 
//   28 #define vSetEPRxStatus(st) (SaveRState = st)
//   29 #define vSetEPTxStatus(st) (SaveTState = st)
//   30 
//   31 #define USB_StatusIn() Send0LengthData()
//   32 #define USB_StatusOut() vSetEPRxStatus(EP_RX_VALID)
//   33 
//   34 #define StatusInfo0 StatusInfo.bw.bb1 /* Reverse bb0 & bb1 */
//   35 #define StatusInfo1 StatusInfo.bw.bb0
//   36 
//   37 /* Private macro -------------------------------------------------------------*/
//   38 /* Private variables ---------------------------------------------------------*/

        RSEG DATA_Z:DATA:SORT:NOROOT(1)
//   39 u16_u8 StatusInfo;
StatusInfo:
        DS8 2

        RSEG DATA_Z:DATA:SORT:NOROOT(0)
//   40 bool Data_Mul_MaxPacketSize = FALSE;
Data_Mul_MaxPacketSize:
        DS8 1
//   41 /* Private function prototypes -----------------------------------------------*/
//   42 static void DataStageOut(void);
//   43 static void DataStageIn(void);
//   44 static void NoData_Setup0(void);
//   45 static void Data_Setup0(void);
//   46 /* Private functions ---------------------------------------------------------*/
//   47 
//   48 /*******************************************************************************
//   49 * Function Name  : Standard_GetConfiguration.
//   50 * Description    : Return the current configuration variable address.
//   51 * Input          : Length - How many bytes are needed.
//   52 * Output         : None.
//   53 * Return         : Return 1 , if the request is invalid when "Length" is 0.
//   54 *                  Return "Buffer" if the "Length" is not 0.
//   55 *******************************************************************************/

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function Standard_GetConfiguration
        THUMB
//   56 u8 *Standard_GetConfiguration(u16 Length)
//   57 {
Standard_GetConfiguration:
        PUSH     {R4,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R4 Frame(CFA, -8)
        CFI CFA R13+8
//   58   if (Length == 0)
        LDR.N    R4,??DataTable31  ;; pInformation
        CBNZ     R0,??Standard_GetConfiguration_0
//   59   {
//   60     pInformation->Ctrl_Info.Usb_wLength =
//   61       sizeof(pInformation->Current_Configuration);
        B.N      ?Subroutine0
//   62     return 0;
//   63   }
//   64   pUser_Standard_Requests->User_GetConfiguration();
??Standard_GetConfiguration_0:
        LDR.N    R0,??DataTable30  ;; pUser_Standard_Requests
        LDR      R0,[R0, #+0]
        LDR      R0,[R0, #+0]
        BLX      R0
//   65   return (u8 *)&pInformation->Current_Configuration;
        LDR      R0,[R4, #+0]
        ADDS     R0,R0,#+10
        POP      {R4,PC}          ;; return
        CFI EndBlock cfiBlock0
//   66 }
//   67 
//   68 /*******************************************************************************
//   69 * Function Name  : Standard_SetConfiguration.
//   70 * Description    : This routine is called to set the configuration value
//   71 *                  Then each class should configure device themself.
//   72 * Input          : None.
//   73 * Output         : None.
//   74 * Return         : Return USB_SUCCESS, if the request is performed.
//   75 *                  Return USB_UNSUPPORT, if the request is invalid.
//   76 *******************************************************************************/

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function Standard_SetConfiguration
        THUMB
//   77 RESULT Standard_SetConfiguration(void)
//   78 {
//   79 
//   80   if ((pInformation->USBwValue0 <=
//   81       Device_Table.Total_Configuration) && (pInformation->USBwValue1 == 0)
//   82       && (pInformation->USBwIndex == 0)) /*call Back usb spec 2.0*/
Standard_SetConfiguration:
        LDR.N    R0,??DataTable31  ;; pInformation
        LDR.N    R2,??Standard_SetConfiguration_0  ;; Device_Table + 1
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
        LDR      R0,[R0, #+0]
        LDRB     R2,[R2, #+0]
        LDRB     R1,[R0, #+3]
        CMP      R2,R1
        BCC.N    ??Standard_SetConfiguration_1
        LDRB     R2,[R0, #+2]
        CBNZ     R2,??Standard_SetConfiguration_1
        LDRH     R2,[R0, #+4]
        CBNZ     R2,??Standard_SetConfiguration_1
//   83   {
//   84     pInformation->Current_Configuration = pInformation->USBwValue0;
        STRB     R1,[R0, #+10]
//   85     pUser_Standard_Requests->User_SetConfiguration();
        LDR.N    R0,??DataTable30  ;; pUser_Standard_Requests

⌨️ 快捷键说明

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