📄 usb_endp.s79
字号:
//////////////////////////////////////////////////////////////////////////////
// /
// 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\demos\Virtual_COM_Port\sou /
// rce\usb_endp.c /
// Command line = D:\资料\ST\ST\usb\USBLib\demos\Virtual_COM_Port\sou /
// rce\usb_endp.c -D VECT_TAB_FLASH -D /
// USE_STM3210E_EVAL -lA D:\资料\ST\ST\usb\USBLib\demo /
// s\Virtual_COM_Port\project\EWARMv4\STM3210E-EVAL\Li /
// st\ -o D:\资料\ST\ST\usb\USBLib\demos\Virtual_COM_P /
// ort\project\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_endp.s79 /
// /
// /
//////////////////////////////////////////////////////////////////////////////
NAME usb_endp
RTMODEL "StackAlign4", "USED"
RTMODEL "__cpu_mode", "__pcs__thumb"
RTMODEL "__data_model", "absolute"
RTMODEL "__endian", "little"
RTMODEL "__rt_version", "6"
RSEG CSTACK:DATA:NOROOT(2)
MULTWEAK ??GetEPRxCount??rT
MULTWEAK ??PMAToUserBufferCopy??rT
MULTWEAK ??SetEPRxValid??rT
PUBWEAK ?init?tab?DATA_Z
PUBLIC EP1_IN_Callback
FUNCTION EP1_IN_Callback,0203H
PUBLIC EP3_OUT_Callback
FUNCTION EP3_OUT_Callback,0203H
LOCFRAME CSTACK, 8, STACK
PUBLIC buffer_out
PUBLIC count_in
PUBLIC count_out
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
GetEPRxCount SYMBOL "GetEPRxCount"
PMAToUserBufferCopy SYMBOL "PMAToUserBufferCopy"
SetEPRxValid SYMBOL "SetEPRxValid"
??GetEPRxCount??rT SYMBOL "??rT", GetEPRxCount
??PMAToUserBufferCopy??rT SYMBOL "??rT", PMAToUserBufferCopy
??SetEPRxValid??rT SYMBOL "??rT", SetEPRxValid
EXTERN GetEPRxCount
FUNCTION GetEPRxCount,0202H
EXTERN PMAToUserBufferCopy
FUNCTION PMAToUserBufferCopy,0202H
EXTERN SetEPRxValid
FUNCTION SetEPRxValid,0202H
// D:\资料\ST\ST\usb\USBLib\demos\Virtual_COM_Port\source\usb_endp.c
// 1 /******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
// 2 * File Name : usb_endp.c
// 3 * Author : MCD Application Team
// 4 * Version : V2.2.0
// 5 * Date : 06/13/2008
// 6 * Description : Endpoint routines
// 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 #include "usb_desc.h"
// 19 #include "usb_mem.h"
// 20 #include "hw_config.h"
// 21 #include "usb_istr.h"
// 22
// 23 /* Private typedef -----------------------------------------------------------*/
// 24 /* Private define ------------------------------------------------------------*/
// 25 /* Private macro -------------------------------------------------------------*/
// 26 /* Private variables ---------------------------------------------------------*/
RSEG DATA_Z:DATA:SORT:NOROOT(2)
// 27 u8 buffer_out[VIRTUAL_COM_PORT_DATA_SIZE];
// 28 u32 count_out = 0;
count_out:
DS8 4
buffer_out:
DS8 256
RSEG DATA_Z:DATA:SORT:NOROOT(2)
// 29 u32 count_in = 0;
count_in:
DS8 4
// 30
// 31 /* Private function prototypes -----------------------------------------------*/
// 32 /* Private functions ---------------------------------------------------------*/
// 33 /*******************************************************************************
// 34 * Function Name : EP3_IN_Callback
// 35 * Description :
// 36 * Input : None.
// 37 * Output : None.
// 38 * Return : None.
// 39 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock0 Using cfiCommon0
CFI Function EP3_OUT_Callback
THUMB
// 40 void EP3_OUT_Callback(void)
// 41 {
EP3_OUT_Callback:
PUSH {R4,LR}
CFI ?RET Frame(CFA, -4)
CFI R4 Frame(CFA, -8)
CFI CFA R13+8
// 42 count_out = GetEPRxCount(ENDP3);
LDR.N R4,??EP3_OUT_Callback_0 ;; count_out
MOVS R0,#+3
_BLF GetEPRxCount,??GetEPRxCount??rT
// 43 PMAToUserBufferCopy(buffer_out, ENDP3_RXADDR, count_out);
LDR.N R1,??EP3_OUT_Callback_0+0x4 ;; 0x1cf
STR R0,[R4, #+0]
MOV R2,R0
ADDS R0,R4,#+4
_BLF PMAToUserBufferCopy,??PMAToUserBufferCopy??rT
// 44 SetEPRxValid(ENDP3);
MOVS R0,#+3
POP {R4,LR} ;; Pop
CFI R4 SameValue
CFI ?RET R14
CFI CFA R13+0
_BF.W SetEPRxValid,??SetEPRxValid??rT
DATA
??EP3_OUT_Callback_0:
DC32 count_out
DC32 0x1cf
CFI EndBlock cfiBlock0
// 45 }
// 46
// 47 /*******************************************************************************
// 48 * Function Name : EP1_IN_Callback
// 49 * Description :
// 50 * Input : None.
// 51 * Output : None.
// 52 * Return : None.
// 53 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock1 Using cfiCommon0
CFI Function EP1_IN_Callback
THUMB
// 54 void EP1_IN_Callback(void)
// 55 {
// 56 count_in = 0;
EP1_IN_Callback:
LDR.N R0,??EP1_IN_Callback_0 ;; count_in
MOVS R1,#+0
STR R1,[R0, #+0]
// 57 }
BX LR ;; return
DATA
??EP1_IN_Callback_0:
DC32 count_in
CFI EndBlock cfiBlock1
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock2 Using cfiCommon0
CFI NoFunction
THUMB
??GetEPRxCount??rT:
LDR.N R3,??Subroutine0_0 ;; GetEPRxCount
BX R3
DATA
??Subroutine0_0:
DC32 GetEPRxCount
CFI EndBlock cfiBlock2
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock3 Using cfiCommon0
CFI NoFunction
THUMB
??PMAToUserBufferCopy??rT:
LDR.N R3,??Subroutine1_0 ;; PMAToUserBufferCopy
BX R3
DATA
??Subroutine1_0:
DC32 PMAToUserBufferCopy
CFI EndBlock cfiBlock3
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock4 Using cfiCommon0
CFI NoFunction
THUMB
??SetEPRxValid??rT:
LDR.N R3,??Subroutine2_0 ;; SetEPRxValid
BX R3
DATA
??Subroutine2_0:
DC32 SetEPRxValid
CFI EndBlock cfiBlock4
RSEG INITTAB:CODE:ROOT(2)
DATA
?init?tab?DATA_Z:
DCD sfe(DATA_Z) - sfb(DATA_Z), sfb(DATA_Z), sfb(DATA_Z)
END
// 58
// 59 /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/
// 60
//
// 76 bytes in segment CODE
// 264 bytes in segment DATA_Z
// 12 bytes in segment INITTAB
//
// 52 bytes of CODE memory (+ 36 bytes shared)
// 264 bytes of DATA memory
//
//Errors: none
//Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -