📄 main.lst
字号:
##############################################################################
# #
# IAR ARM ANSI C/C++ Compiler V4.31A/W32 EVALUATION 29/Nov/2007 16:53:59 #
# 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\Binary\List\" -o #
# "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass #
# Storage\compil\Binary\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\Binary\List\main.lst #
# Object file = G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass #
# Storage\compil\Binary\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 0024 MOV R4,#+0
56 char val;
57
58 if (bGet)
\ 00000006 .... LDR R5,??DataTable0 ;; _Stdout
\ 00000008 .... LDR R6,??DataTable1 ;; bGet
\ 0000000A 3068 LDR R0,[R6, #+0]
\ 0000000C 0028 CMP R0,#+0
\ 0000000E 1FD0 BEQ ??menu_0
59 {
60 TRACE_INFO( "\n\r-BFSA-\n\r");
\ 00000010 8949 LDR R1,??menu_1 ;; `?<Constant "wodemima">` + 32
\ 00000012 281C MOV R0,R5
\ 00000014 ........ _BLF fprintf,??fprintf??rT
61 TRACE_INFO( "2 mkdir\n\r");
\ 00000018 8849 LDR R1,??menu_1+0x4 ;; `?<Constant "wodemima">` + 44
\ 0000001A 281C MOV R0,R5
\ 0000001C ........ _BLF fprintf,??fprintf??rT
62 TRACE_INFO( "3 mk file\n\r");
\ 00000020 8749 LDR R1,??menu_1+0x8 ;; `?<Constant "wodemima">` + 56
\ 00000022 281C MOV R0,R5
\ 00000024 ........ _BLF fprintf,??fprintf??rT
63 TRACE_INFO( "4 dir\n\r");
\ 00000028 8649 LDR R1,??menu_1+0xC ;; `?<Constant "wodemima">` + 68
\ 0000002A 281C MOV R0,R5
\ 0000002C ........ _BLF fprintf,??fprintf??rT
64 TRACE_INFO( "5 cd\n\r");
\ 00000030 8549 LDR R1,??menu_1+0x10 ;; `?<Constant "wodemima">` + 76
\ 00000032 281C MOV R0,R5
\ 00000034 ........ _BLF fprintf,??fprintf??rT
65 TRACE_INFO( "6 delete\n\r");
\ 00000038 8449 LDR R1,??menu_1+0x14 ;; `?<Constant "wodemima">` + 84
\ 0000003A 281C MOV R0,R5
\ 0000003C ........ _BLF fprintf,??fprintf??rT
66 TRACE_INFO( "7 Init\n\r");
\ 00000040 8349 LDR R1,??menu_1+0x18 ;; `?<Constant "wodemima">` + 96
\ 00000042 281C MOV R0,R5
\ 00000044 ........ _BLF fprintf,??fprintf??rT
67 TRACE_INFO( "F Format\n\r");
\ 00000048 8249 LDR R1,??menu_1+0x1C ;; `?<Constant "wodemima">` + 108
\ 0000004A 281C MOV R0,R5
\ 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 3060 STR R0,[R6, #+0]
\ 00000058 0028 CMP R0,#+0
\ 0000005A 36D0 BEQ ??menu_2
71 {
72 TRACE_INFO( "\n\r");
\ 0000005C 7EA6 ADR R6,??menu_1+0x20 ;; "\n\r"
\ 0000005E 311C MOV R1,R6
\ 00000060 281C MOV R0,R5
\ 00000062 ........ _BLF fprintf,??fprintf??rT
73
74 switch( val )
\ 00000066 7D4F LDR R7,??menu_1+0x24 ;; `?<Constant "wodemima">` + 136
\ 00000068 7D48 LDR R0,??menu_1+0x28 ;; `?<Constant "wodemima">` + 152
\ 0000006A 0090 STR R0,[SP, #+0]
\ 0000006C 6846 MOV R0,SP
\ 0000006E 007D LDRB R0,[R0, #+20]
\ 00000070 3228 CMP R0,#+50
\ 00000072 11D0 BEQ ??menu_3
\ 00000074 3328 CMP R0,#+51
\ 00000076 29D0 BEQ ??menu_4
\ 00000078 3428 CMP R0,#+52
\ 0000007A .... BNE .+5
\ 0000007C 87E0 B ??menu_5
\ 0000007E 3528 CMP R0,#+53
\ 00000080 .... BNE .+5
\ 00000082 8DE0 B ??menu_6
\ 00000084 3628 CMP R0,#+54
\ 00000086 .... BNE .+5
\ 00000088 A3E0 B ??menu_7
\ 0000008A 3728 CMP R0,#+55
\ 0000008C .... BNE .+5
\ 0000008E B7E0 B ??menu_8
\ 00000090 4628 CMP R0,#+70
\ 00000092 .... BNE .+5
\ 00000094 B9E0 B ??menu_9
\ ??menu_10:
\ 00000096 C5E0 B ??menu_11
75 {
76
77 case '2': // mkdir
78 {
79 char dirName[10]="wodemima";
\ ??menu_3:
\ 00000098 02A8 ADD R0,SP,#+8
\ 0000009A 7249 LDR R1,??menu_1+0x2C ;; `?<Constant "wodemima">`
\ 0000009C 0A68 LDR R2,[R1, #0]
\ 0000009E 0260 STR R2,[R0, #0]
\ 000000A0 4A68 LDR R2,[R1, #+4]
\ 000000A2 4260 STR R2,[R0, #+4]
\ 000000A4 8A68 LDR R2,[R1, #+8]
\ 000000A6 8260 STR R2,[R0, #+8]
80
81 TRACE_INFO( "mkdir <Name>\n\r");
\ 000000A8 6F49 LDR R1,??menu_1+0x30 ;; `?<Constant "wodemima">` + 120
\ 000000AA 281C MOV R0,R5
\ 000000AC ........ _BLF fprintf,??fprintf??rT
82 TRACE_INFO( "Enter name: ");
\ 000000B0 391C MOV R1,R7
\ 000000B2 281C MOV R0,R5
\ 000000B4 ........ _BLF fprintf,??fprintf??rT
83 //AT91F_DBGU_scanf(dirName);
84 //TRACE_INFO( "\n\r");
85
86 status = BFSA_mkdir(dirName);
\ 000000B8 02A8 ADD R0,SP,#+8
\ 000000BA ........ _BLF BFSA_mkdir,??BFSA_mkdir??rT
\ 000000BE 041C MOV R4,R0
87 if( BFSA_SUCCESS != status )
\ 000000C0 E9D1 BNE ??menu_10
88 {
89 goto FAILURE;
90 }
91 TRACE_INFO( "OK\n\r");
\ ??menu_12:
\ 000000C2 0099 LDR R1,[SP, #+0]
\ 000000C4 281C MOV R0,R5
\ 000000C6 ........ _BLF fprintf,??fprintf??rT
\ ??menu_2:
\ 000000CA B2E0 B ??menu_13
92 }
93 break;
94
95
96 case '3': // mk file
97 {
98 unsigned int ulSize = 0;
\ ??menu_4:
\ 000000CC 0027 MOV R7,#+0
99 int count;
100 char fileName[10]="";
\ 000000CE 02A8 ADD R0,SP,#+8
\ 000000D0 0460 STR R4,[R0, #0]
\ 000000D2 4460 STR R4,[R0, #+4]
\ 000000D4 8460 STR R4,[R0, #+8]
101 char FileBuff[256];
102 char Size[10]="";
\ 000000D6 06A8 ADD R0,SP,#+24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -