📄 fw_cmd.lst
字号:
##############################################################################
# #
# IAR ARM ANSI C/C++ Compiler V4.31A/W32 EVALUATION 16/Nov/2007 09:02:41 #
# Copyright 1999-2005 IAR Systems. All rights reserved. #
# #
# Cpu mode = interwork #
# Endian = little #
# Stack alignment = 4 #
# Source file = G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\MASSSTORAGE\fw_cmd #
# .c #
# Command line = G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\MASSSTORAGE\fw_cmd #
# .c -D AT91SAM7X256 -D PULL_UP_USB -D USE_LED -lC #
# "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass #
# Storage\compil\RAM_Debug\List\" --remarks -o #
# "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass #
# Storage\compil\RAM_Debug\Obj\" -z9 --debug #
# --cpu_mode thumb --endian little --cpu ARM7TDMI #
# --stack_align 4 --interwork -e --fpu None #
# --dlib_config "C:\Program Files\IAR #
# Systems\Embedded Workbench 4.0 #
# Evaluation\ARM\LIB\dl4tptinl8f.h" -I #
# "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass #
# Storage\compil\srcIAR\" -I #
# "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass #
# Storage\compil\..\src\" -I #
# "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass #
# Storage\compil\..\..\" -I #
# "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass #
# Storage\compil\..\..\FILESYSTEM\inc\" -I #
# "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass #
# Storage\compil\..\..\MASSSTORAGE\inc\" -I #
# "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass #
# Storage\compil\..\..\AT91SAM7X256\" -I #
# "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass #
# Storage\compil\..\inc\" -I #
# "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass #
# Storage\compil\..\..\mmc_sd\" -I #
# "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass #
# Storage\compil\..\..\COMMON_FS_MS\" -I "C:\Program #
# Files\IAR Systems\Embedded Workbench 4.0 #
# Evaluation\ARM\INC\" #
# List file = G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass #
# Storage\compil\RAM_Debug\List\fw_cmd.lst #
# Object file = G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass #
# Storage\compil\RAM_Debug\Obj\fw_cmd.r79 #
# #
# #
##############################################################################
G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\MASSSTORAGE\fw_cmd.c
1 // ----------------------------------------------------------------------------
2 // ATMEL Microcontroller Software Support - ROUSSET -
3 // ----------------------------------------------------------------------------
4 // DISCLAIMER: CONDITIONS AS PER SIGNED LIMITED LICENSE AGREEMENT (AT91
5 // SOFTWARE AND USER DOCUMENTATION)
6 // ALL SOFTWARE IS PROVIDED AS IS, WITH ALL FAULTS, AND WITH NO WARRANTY
7 // WHATSOEVER. ATMEL EXPRESSLY DISCLAIMS ALL WARRANTIES, EXPRESS, IMPLIED,
8 // OR STATUTORY, INCLUDING WITHOUT LIMITATION ANY WARRANTIES OF MERCHANTABILITY,
9 // FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.
10 // ----------------------------------------------------------------------------
11 // File Name : fw_cmd.c
12 // Object : command sent to the chip.
13 // Creation : JCB 27/oct/2002
14 // Modif : JCB 18/fev/2005
15 // JCB 18/mar/2005 add some checking loops
16 //----------------------------------------------------------------------------
17 #include "po_types.h"
18 #include "trace.h"
19 #include "fw_usb.h"
\ In segment CODE, align 4, keep-with-next
\ __??Code16?? __code __interwork __atpcs void AT91F_UDP_EpClear(AT91PS_UDP, unsigned char, unsigned int)
\ AT91F_UDP_EpClear:
\ 00000000 8900 LSL R1,R1,#+2
\ 00000002 4018 ADD R0,R0,R1
\ 00000004 016B LDR R1,[R0, #+48]
\ 00000006 9143 BIC R1,R2
\ 00000008 0163 STR R1,[R0, #+48]
\ 0000000A 7047 BX LR ;; return
20 #include "po_kernel.h"
21
22
23 /*****************************************************************
24 *
25 * ROUTINE fw_setAddressEnable
26 *
27 *-----------------------------------------------------------------
28 *
29 * Object :
30 * send a set address enable command
31 *
32 * Input parameters : bAddress : address of the device
33 * bEnable : set if we want to enable the device
34 *
35 * Output parameters : NONE
36 *
37 *****************************************************************/
\ In segment CODE, align 4, keep-with-next
38 void fw_setAddressEnable(UCHAR bAddress)
39 {
40 // UDP_FADDR : Function Address Register
41 AT91F_UDP_SetAddress( USBDEV_BASE_UDP, bAddress );
\ fw_setAddressEnable:
\ 00000000 0749 LDR R1,??fw_setAddressEnable_0 ;; 0xfffb0008
\ 00000002 8022 MOV R2,#+128
\ 00000004 5200 LSL R2,R2,#+1 ;; #+256
\ 00000006 0243 ORR R2,R0
\ 00000008 0A60 STR R2,[R1, #+0]
42 // UDP_GLBSTATE : Global State Register
43 AT91F_UDP_SetState( USBDEV_BASE_UDP, AT91C_UDP_FADDEN );
\ 0000000A 0648 LDR R0,??fw_setAddressEnable_0+0x4 ;; 0xfffb0004
\ 0000000C 0168 LDR R1,[R0, #+0]
\ 0000000E 0322 MOV R2,#+3
\ 00000010 9143 BIC R1,R2
\ 00000012 0160 STR R1,[R0, #+0]
\ 00000014 0168 LDR R1,[R0, #+0]
\ 00000016 0122 MOV R2,#+1
\ 00000018 0A43 ORR R2,R1
\ 0000001A 0260 STR R2,[R0, #+0]
44 }
\ 0000001C 7047 BX LR ;; return
\ 0000001E C046 NOP
\ ??fw_setAddressEnable_0:
\ 00000020 0800FBFF DC32 0xfffb0008
\ 00000024 0400FBFF DC32 0xfffb0004
45
46
47 /*****************************************************************
48 *
49 * ROUTINE fw_setEndpointEnable
50 *
51 *-----------------------------------------------------------------
52 *
53 * Object :
54 * send a set endpoint enable command
55 *
56 * Input parameters : bEnable : set if we want to enable the EP
57 *
58 * Output parameters : NONE
59 *
60 *****************************************************************/
61 /*void fw_setEndpointEnable(UCHAR bEnable)
62 {
63 // UDP_FADDR : Function Address Register
64 USBDEV_BASE_UDP->UDP_FADDR |= ( bEnable ? AT91C_UDP_FEN:0 );
65 }
66 */
67
68 /*****************************************************************
69 *
70 *
71 * ROUTINE fw_readInterruptRegister
72 *
73 *-----------------------------------------------------------------
74 *
75 * Object : read the IT register
76 *
77 * Input parameters : NONE
78 *
79 * Output parameters : register value
80 *
81 *****************************************************************/
82 #ifdef ADS_COMPIL
83 ULONG fw_readInterruptRegister(void)
84 #else
\ In segment CODE_I, align 4, keep-with-next
85 ULONG fw_readInterruptRegister(void)
86 #endif
87 {
\ fw_readInterruptRegister:
\ 00000000 01B4 PUSH {R0}
88 volatile unsigned int tmp;
89
90 tmp = AT91F_UDP_InterruptStatusRegister(USBDEV_BASE_UDP) & STATUS_ALL_IT;
\ 00000002 0548 LDR R0,??fw_readInterruptRegister_0 ;; 0xfffb001c
\ 00000004 0068 LDR R0,[R0, #+0]
\ 00000006 0549 LDR R1,??fw_readInterruptRegister_0+0x4 ;; 0x3f0f
\ 00000008 0140 AND R1,R0
\ 0000000A 0091 STR R1,[SP, #+0]
91 return( tmp & AT91F_UDP_GetInterruptMaskStatus( USBDEV_BASE_UDP ) );
\ 0000000C 0099 LDR R1,[SP, #+0]
\ 0000000E 0448 LDR R0,??fw_readInterruptRegister_0+0x8 ;; 0xfffb0018
\ 00000010 0068 LDR R0,[R0, #+0]
\ 00000012 0840 AND R0,R1
\ 00000014 08BC POP {R3}
\ 00000016 7047 BX LR ;; return
\ ??fw_readInterruptRegister_0:
\ 00000018 1C00FBFF DC32 0xfffb001c
\ 0000001C 0F3F0000 DC32 0x3f0f
\ 00000020 1800FBFF DC32 0xfffb0018
92 }
93
94 /*****************************************************************
95 *
96 * ROUTINE fw_setEndpointStatus
97 *
98 *-----------------------------------------------------------------
99 *
100 * Object : set EP status (STALLED or not)
101 *
102 * Input parameters : bEndp : number of the EP
103 * bStalled : 1 if EP must be stalled
104 *
105 * Output parameters : NONE
106 *
107 * Global variables :
108 *
109 *****************************************************************/
\ In segment CODE, align 4, keep-with-next
110 void fw_setEndpointStatus(EPx bEndp, UCHAR bStalled)
111 {
\ fw_setEndpointStatus:
\ 00000000 30B5 PUSH {R4,R5,LR}
\ 00000002 041C MOV R4,R0
112 if(bStalled)
\ 00000004 0029 CMP R1,#+0
\ 00000006 07D0 BEQ ??fw_setEndpointStatus_0
113 {
114 /* send STALL to the host */
115 // UDP_CSR[8] : Endpoint Control and Status Register
116 AT91F_UDP_EpSet( USBDEV_BASE_UDP, bEndp, AT91C_UDP_FORCESTALL );
\ 00000008 A000 LSL R0,R4,#+2
\ 0000000A .... LDR R1,??DataTable10 ;; 0xfffb0000
\ 0000000C 0818 ADD R0,R1,R0
\ 0000000E 016B LDR R1,[R0, #+48]
\ 00000010 2022 MOV R2,#+32
\ 00000012 0A43 ORR R2,R1
\ 00000014 0263 STR R2,[R0, #+48]
\ 00000016 0AE0 B ??fw_setEndpointStatus_1
117 }
118 else
119 {
120 AT91F_UDP_EpClear( USBDEV_BASE_UDP, bEndp, AT91C_UDP_FORCESTALL );
\ ??fw_setEndpointStatus_0:
\ 00000018 .... LDR R5,??DataTable10 ;; 0xfffb0000
\ 0000001A 2022 MOV R2,#+32
\ 0000001C 211C MOV R1,R4
\ 0000001E 281C MOV R0,R5
\ 00000020 ........ _BLF AT91F_UDP_EpClear,??AT91F_UDP_EpClear??rT
121 AT91F_UDP_EpClear( USBDEV_BASE_UDP, bEndp, AT91C_UDP_ISOERROR );
\ 00000024 0822 MOV R2,#+8
\ 00000026 211C MOV R1,R4
\ 00000028 281C MOV R0,R5
\ 0000002A ........ _BLF AT91F_UDP_EpClear,??AT91F_UDP_EpClear??rT
122 }
123 }
\ ??fw_setEndpointStatus_1:
\ 0000002E 30BC POP {R4,R5}
\ 00000030 01BC POP {R0}
\ 00000032 0047 BX R0 ;; return
124
125 /*****************************************************************
126 *
127 * ROUTINE fw_readEndpoint
128 *
129 *-----------------------------------------------------------------
130 *
131 * Object :
132 * read a buffer of data in the EP buffer
133 *
134 * Input parameters : bEndp : number of the EP
135 * buf : data buffer
136 * len : length of the data
137 *
138 * Output parameters : length of data read
139 *
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -