📄 usbendpointdescriptor.lst
字号:
###############################################################################
# #
# 24/Apr/2009 16:18:18 #
# IAR ARM ANSI C/C++ Compiler V5.11.0.20622/W32 EVALUATION #
# Copyright 1999-2007 IAR Systems. All rights reserved. #
# #
# Cpu mode = arm #
# Endian = little #
# Source file = D:\basic-dataflash-project-at91sam7se-ek\at91lib\usb\com #
# mon\core\USBEndpointDescriptor.c #
# Command line = D:\basic-dataflash-project-at91sam7se-ek\at91lib\usb\com #
# mon\core\USBEndpointDescriptor.c -D at91sam7se512 -D #
# sram -D TRACE_LEVEL=4 -lC D:\basic-dataflash-project-at9 #
# 1sam7se-ek\at91sam7se-ek\basic-dataflash-project\ewp\at9 #
# 1sam7se512_sram\List\ --remarks --diag_suppress #
# Pe826,Pe1375 -o D:\basic-dataflash-project-at91sam7se-ek #
# \at91sam7se-ek\basic-dataflash-project\ewp\at91sam7se512 #
# _sram\Obj\ --no_cse --no_unroll --no_inline #
# --no_code_motion --no_tbaa --no_clustering #
# --no_scheduling --debug --endian little --cpu ARM7TDMI #
# -e --fpu None --dlib_config "D:\Program #
# Files\arm\ARM\INC\DLib_Config_Full.h" -I #
# D:\basic-dataflash-project-at91sam7se-ek\at91sam7se-ek\b #
# asic-dataflash-project\ewp\..\..\..\at91lib/peripherals\ #
# -I D:\basic-dataflash-project-at91sam7se-ek\at91sam7se- #
# ek\basic-dataflash-project\ewp\..\..\..\at91lib\ -I #
# D:\basic-dataflash-project-at91sam7se-ek\at91sam7se-ek\b #
# asic-dataflash-project\ewp\..\..\..\at91lib/memories\ #
# -I D:\basic-dataflash-project-at91sam7se-ek\at91sam7se-e #
# k\basic-dataflash-project\ewp\..\..\..\at91lib/boards/at #
# 91sam7se-ek\ -I "D:\Program Files\arm\ARM\INC\" #
# --interwork --cpu_mode arm -Oh #
# List file = D:\basic-dataflash-project-at91sam7se-ek\at91sam7se-ek\b #
# asic-dataflash-project\ewp\at91sam7se512_sram\List\USBEn #
# dpointDescriptor.lst #
# Object file = D:\basic-dataflash-project-at91sam7se-ek\at91sam7se-ek\b #
# asic-dataflash-project\ewp\at91sam7se512_sram\Obj\USBEnd #
# pointDescriptor.o #
# #
# #
###############################################################################
D:\basic-dataflash-project-at91sam7se-ek\at91lib\usb\common\core\USBEndpointDescriptor.c
1 /* ----------------------------------------------------------------------------
2 * ATMEL Microcontroller Software Support
3 * ----------------------------------------------------------------------------
4 * Copyright (c) 2008, Atmel Corporation
5 *
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions are met:
10 *
11 * - Redistributions of source code must retain the above copyright notice,
12 * this list of conditions and the disclaimer below.
13 *
14 * Atmel's name may not be used to endorse or promote products derived from
15 * this software without specific prior written permission.
16 *
17 * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
20 * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
23 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
24 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
26 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 * ----------------------------------------------------------------------------
28 */
29
30 /*
31 Title: USBEndpointDescriptor implementation
32
33 About: Purpose
34 Implementation of the USBEndpointDescriptor class.
35 */
36
37 //------------------------------------------------------------------------------
38 // Headers
39 //------------------------------------------------------------------------------
40
41 #include "USBEndpointDescriptor.h"
42
43 //------------------------------------------------------------------------------
44 // Exported functions
45 //------------------------------------------------------------------------------
46
47 //------------------------------------------------------------------------------
48 /// Returns the number of an endpoint given its descriptor.
49 /// \param endpoint Pointer to a USBEndpointDescriptor instance.
50 /// \return Endpoint number.
51 //------------------------------------------------------------------------------
\ In section .text, align 4, keep-with-next
52 unsigned char USBEndpointDescriptor_GetNumber(
53 const USBEndpointDescriptor *endpoint)
54 {
55 return endpoint->bEndpointAddress & 0xF;
\ USBEndpointDescriptor_GetNumber:
\ 00000000 0200D0E5 LDRB R0,[R0, #+2]
\ 00000004 0F0000E2 AND R0,R0,#0xF
\ 00000008 1EFF2FE1 BX LR ;; return
56 }
57
58 //------------------------------------------------------------------------------
59 /// Returns the direction of an endpoint given its descriptor.
60 /// \param endpoint Pointer to a USBEndpointDescriptor instance.
61 /// \return Endpoint direction (see <Endpoint directions>).
62 //------------------------------------------------------------------------------
\ In section .text, align 4, keep-with-next
63 unsigned char USBEndpointDescriptor_GetDirection(
64 const USBEndpointDescriptor *endpoint)
65 {
66 if ((endpoint->bEndpointAddress & 0x80) != 0) {
\ USBEndpointDescriptor_GetDirection:
\ 00000000 0200D0E5 LDRB R0,[R0, #+2]
\ 00000004 800010E3 TST R0,#0x80
\ 00000008 0000A003 MOVEQ R0,#+0
67
68 return USBEndpointDescriptor_IN;
\ 0000000C 0100A013 MOVNE R0,#+1
\ 00000010 1EFF2FE1 BX LR
69 }
70 else {
71
72 return USBEndpointDescriptor_OUT;
73 }
74 }
75
76 //------------------------------------------------------------------------------
77 /// Returns the type of an endpoint given its descriptor.
78 /// \param endpoint Pointer to a USBEndpointDescriptor instance.
79 /// \return Endpoint type (see <Endpoint types>).
80 //------------------------------------------------------------------------------
\ In section .text, align 4, keep-with-next
81 unsigned char USBEndpointDescriptor_GetType(
82 const USBEndpointDescriptor *endpoint)
83 {
84 return endpoint->bmAttributes & 0x3;
\ USBEndpointDescriptor_GetType:
\ 00000000 0300D0E5 LDRB R0,[R0, #+3]
\ 00000004 030000E2 AND R0,R0,#0x3
\ 00000008 1EFF2FE1 BX LR ;; return
85 }
86
87 //------------------------------------------------------------------------------
88 /// Returns the maximum size of a packet (in bytes) on an endpoint given
89 /// its descriptor.
90 /// \param endpoint - Pointer to a USBEndpointDescriptor instance.
91 /// \return Maximum packet size of endpoint.
92 //------------------------------------------------------------------------------
\ In section .text, align 4, keep-with-next
93 unsigned short USBEndpointDescriptor_GetMaxPacketSize(
94 const USBEndpointDescriptor *endpoint)
95 {
96 return endpoint->wMaxPacketSize;
\ USBEndpointDescriptor_GetMaxPacketSize:
\ 00000000 0510D0E5 LDRB R1,[R0, #+5]
\ 00000004 0420D0E5 LDRB R2,[R0, #+4]
\ 00000008 010482E1 ORR R0,R2,R1, LSL #+8
\ 0000000C 1EFF2FE1 BX LR ;; return
97 }
98
Maximum stack usage in bytes:
Function .cstack
-------- -------
USBEndpointDescriptor_GetDirection
0
USBEndpointDescriptor_GetMaxPacketSize
0
USBEndpointDescriptor_GetNumber
0
USBEndpointDescriptor_GetType 0
Section sizes:
Function/Label Bytes
-------------- -----
USBEndpointDescriptor_GetNumber
12
USBEndpointDescriptor_GetDirection
20
USBEndpointDescriptor_GetType 12
USBEndpointDescriptor_GetMaxPacketSize
16
60 bytes in section .text
60 bytes of CODE memory
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -