📄 main.lst
字号:
##############################################################################
# #
# IAR ARM ANSI C/C++ Compiler V4.31A/W32 EVALUATION 04/Dec/2007 10:21:38 #
# 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\DEMO_FS_MS\main.c #
# Command line = G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\DEMO_FS_MS\main.c #
# -D AT91SAM7X256 -D PULL_UP_USB -D USE_LED -lC #
# "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass #
# Storage\compil\FLASH_Debug\List\" -o #
# "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass #
# Storage\compil\FLASH_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\FLASH_Debug\List\main.lst #
# Object file = G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass #
# Storage\compil\FLASH_Debug\Obj\main.r79 #
# #
# #
##############################################################################
G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\DEMO_FS_MS\main.c
1 // ----------------------------------------------------------------------------
2 // ATMEL Microcontroller Software Support - ROUSSET -
3 // ----------------------------------------------------------------------------
4 // DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
5 // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
6 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
7 // DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
8 // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
9 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
10 // OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
11 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
12 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
13 // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14 // ----------------------------------------------------------------------------
15 // File Name : main.c
16 // Object : Test function for the Basic File System FAT12 API
17 // Creation : JCB 15/apr/2005
18 // Modif :
19 // ----------------------------------------------------------------------------
20 #include <stdio.h>
21 #include <stdlib.h>
22
23 // Include Standard files
24 #include "board.h"
\ In segment CODE, align 4, keep-with-next
\ __??Code16?? __code __interwork __atpcs void AT91F_PDC_Open(AT91PS_PDC)
\ AT91F_PDC_Open:
\ 00000000 0221 MOV R1,#+2
\ 00000002 0162 STR R1,[R0, #+32]
\ 00000004 0902 LSL R1,R1,#+8
\ 00000006 0162 STR R1,[R0, #+32]
\ 00000008 0021 MOV R1,#+0
\ 0000000A 8161 STR R1,[R0, #+24]
\ 0000000C C161 STR R1,[R0, #+28]
\ 0000000E 0161 STR R1,[R0, #+16]
\ 00000010 4161 STR R1,[R0, #+20]
\ 00000012 8160 STR R1,[R0, #+8]
\ 00000014 C160 STR R1,[R0, #+12]
\ 00000016 0160 STR R1,[R0, #+0]
\ 00000018 4160 STR R1,[R0, #+4]
\ 0000001A 0121 MOV R1,#+1
\ 0000001C 0162 STR R1,[R0, #+32]
\ 0000001E 0902 LSL R1,R1,#+8
\ 00000020 0162 STR R1,[R0, #+32]
\ 00000022 7047 BX LR ;; return
25 #include "po_types.h"
26 #include "po_kernel.h"
27 #include "trace.h"
28 //#include "bfsa_flash.h"
29 #include "mmc.h"
30 #include "bfsa_api.h"
31 #include "fw_usb.h"
32 #include "dbgu.h"
33
34 // Globals
\ In segment DATA_I, align 4, align-sorted
35 BOOL bGet = TRUE;
\ bGet:
\ 00000000 DS8 4
\ 00000004 REQUIRE `?<Initializer for bGet>`
36
37
38 /*****************************************************************
39 *
40 *
41 * S U B - R O U T I N E : menu
42 *
43 *-----------------------------------------------------------------
44 *
45 * Object :
46 * This function print a menu on DEBUG COM port to test BFSA.
47 *
48 * Argument : NONE
49 *
50 * Return value : NONE
51 *
52 *****************************************************************/
\ In segment CODE, align 4, keep-with-next
53 void menu(void)
54 {
\ menu:
\ 00000000 F0B5 PUSH {R4-R7,LR}
\ 00000002 C9B0 SUB SP,#+292
55 ULONG status = 0;
\ 00000004 0026 MOV R6,#+0
56 char val;
57
58 if (bGet)
\ 00000006 .... LDR R4,??DataTable0 ;; _Stdout
\ 00000008 .... LDR R5,??DataTable1 ;; bGet
\ 0000000A 2868 LDR R0,[R5, #+0]
\ 0000000C 0028 CMP R0,#+0
\ 0000000E 1FD0 BEQ ??menu_0
59 {
60 TRACE_INFO( "\n\r-BFSA-\n\r");
\ 00000010 9049 LDR R1,??menu_1 ;; `?<Constant "">` + 12
\ 00000012 201C MOV R0,R4
\ 00000014 ........ _BLF fprintf,??fprintf??rT
61 TRACE_INFO( "2 mkdir\n\r");
\ 00000018 8F49 LDR R1,??menu_1+0x4 ;; `?<Constant "">` + 24
\ 0000001A 201C MOV R0,R4
\ 0000001C ........ _BLF fprintf,??fprintf??rT
62 TRACE_INFO( "3 mk file\n\r");
\ 00000020 8E49 LDR R1,??menu_1+0x8 ;; `?<Constant "">` + 36
\ 00000022 201C MOV R0,R4
\ 00000024 ........ _BLF fprintf,??fprintf??rT
63 TRACE_INFO( "4 dir\n\r");
\ 00000028 8D49 LDR R1,??menu_1+0xC ;; `?<Constant "">` + 48
\ 0000002A 201C MOV R0,R4
\ 0000002C ........ _BLF fprintf,??fprintf??rT
64 TRACE_INFO( "5 cd\n\r");
\ 00000030 8C49 LDR R1,??menu_1+0x10 ;; `?<Constant "">` + 56
\ 00000032 201C MOV R0,R4
\ 00000034 ........ _BLF fprintf,??fprintf??rT
65 TRACE_INFO( "6 delete\n\r");
\ 00000038 8B49 LDR R1,??menu_1+0x14 ;; `?<Constant "">` + 64
\ 0000003A 201C MOV R0,R4
\ 0000003C ........ _BLF fprintf,??fprintf??rT
66 TRACE_INFO( "7 Init\n\r");
\ 00000040 8A49 LDR R1,??menu_1+0x18 ;; `?<Constant "">` + 76
\ 00000042 201C MOV R0,R4
\ 00000044 ........ _BLF fprintf,??fprintf??rT
67 TRACE_INFO( "F Format\n\r");
\ 00000048 8949 LDR R1,??menu_1+0x1C ;; `?<Constant "">` + 88
\ 0000004A 201C MOV R0,R4
\ 0000004C ........ _BLF fprintf,??fprintf??rT
68 }
69
70 if (bGet=AT91F_US_Get(&val))
\ ??menu_0:
\ 00000050 05A8 ADD R0,SP,#+20
\ 00000052 ........ _BLF AT91F_US_Get,??AT91F_US_Get??rT
\ 00000056 2860 STR R0,[R5, #+0]
\ 00000058 0028 CMP R0,#+0
\ 0000005A 43D0 BEQ ??menu_2
71 {
72 TRACE_INFO( "\n\r");
\ 0000005C 85A7 ADR R7,??menu_1+0x20 ;; "\n\r"
\ 0000005E 391C MOV R1,R7
\ 00000060 201C MOV R0,R4
\ 00000062 ........ _BLF fprintf,??fprintf??rT
73
74 switch( val )
\ 00000066 8448 LDR R0,??menu_1+0x24 ;; `?<Constant "">` + 132
\ 00000068 0090 STR R0,[SP, #+0]
\ 0000006A 6846 MOV R0,SP
\ 0000006C 007D LDRB R0,[R0, #+20]
\ 0000006E 3228 CMP R0,#+50
\ 00000070 11D0 BEQ ??menu_3
\ 00000072 3328 CMP R0,#+51
\ 00000074 37D0 BEQ ??menu_4
\ 00000076 3428 CMP R0,#+52
\ 00000078 .... BNE .+5
\ 0000007A 97E0 B ??menu_5
\ 0000007C 3528 CMP R0,#+53
\ 0000007E .... BNE .+5
\ 00000080 9DE0 B ??menu_6
\ 00000082 3628 CMP R0,#+54
\ 00000084 .... BNE .+5
\ 00000086 B3E0 B ??menu_7
\ 00000088 3728 CMP R0,#+55
\ 0000008A .... BNE .+5
\ 0000008C C7E0 B ??menu_8
\ 0000008E 4628 CMP R0,#+70
\ 00000090 .... BNE .+5
\ 00000092 C9E0 B ??menu_9
\ ??menu_10:
\ 00000094 D5E0 B ??menu_11
75 {
76
77 case '2': // mkdir
78 {
79 char dirName[10]="";
\ ??menu_3:
\ 00000096 02A8 ADD R0,SP,#+8
\ 00000098 0660 STR R6,[R0, #0]
\ 0000009A 4660 STR R6,[R0, #+4]
\ 0000009C 8660 STR R6,[R0, #+8]
80
81 TRACE_INFO( "mkdir <Name>\n\r");
\ 0000009E 7749 LDR R1,??menu_1+0x28 ;; `?<Constant "">` + 100
\ 000000A0 201C MOV R0,R4
\ 000000A2 ........ _BLF fprintf,??fprintf??rT
82 TRACE_INFO( "Enter name: ");
\ 000000A6 7649 LDR R1,??menu_1+0x2C ;; `?<Constant "">` + 116
\ 000000A8 201C MOV R0,R4
\ 000000AA ........ _BLF fprintf,??fprintf??rT
83 AT91F_DBGU_scanf(dirName);
\ 000000AE 02A8 ADD R0,SP,#+8
\ 000000B0 ........ _BLF AT91F_DBGU_scanf,??AT91F_DBGU_scanf??rT
84 TRACE_INFO( "\n\r");
\ 000000B4 391C MOV R1,R7
\ 000000B6 201C MOV R0,R4
\ 000000B8 ........ _BLF fprintf,??fprintf??rT
85 for(char cnt=0;cnt<15;cnt++) dirName[cnt]=dirName[cnt+1];
\ 000000BC 0020 MOV R0,#+0
\ 000000BE 02A9 ADD R1,SP,#+8
\ ??menu_12:
\ 000000C0 02AA ADD R2,SP,#+8
\ 000000C2 521C ADD R2,R2,#+1
\ 000000C4 125C LDRB R2,[R2, R0]
\ 000000C6 0A54 STRB R2,[R1, R0]
\ 000000C8 401C ADD R0,R0,#+1
\ 000000CA 0006 LSL R0,R0,#+24
\ 000000CC 000E LSR R0,R0,#+24
\ 000000CE 0F28 CMP R0,#+15
\ 000000D0 F6D3 BCC ??menu_12
86 status = BFSA_mkdir(dirName);
\ 000000D2 02A8 ADD R0,SP,#+8
\ 000000D4 ........ _BLF BFSA_mkdir,??BFSA_mkdir??rT
\ 000000D8 061C MOV R6,R0
87 if( BFSA_SUCCESS != status )
\ 000000DA DBD1 BNE ??menu_10
88 {
89 goto FAILURE;
90 }
91 TRACE_INFO( "OK\n\r");
\ ??menu_13:
\ 000000DC 0099 LDR R1,[SP, #+0]
\ 000000DE 201C MOV R0,R4
\ 000000E0 ........ _BLF fprintf,??fprintf??rT
\ ??menu_2:
\ 000000E4 B4E0 B ??menu_14
92 }
93 break;
94
95
96 case '3': // mk file
97 {
98 unsigned int ulSize = 0;
\ ??menu_4:
\ 000000E6 0025 MOV R5,#+0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -