📄 bfsa_api.lst
字号:
##############################################################################
# #
# IAR ARM ANSI C/C++ Compiler V4.31A/W32 EVALUATION 29/Nov/2007 16:53:55 #
# 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\FILESYSTEM\bfsa_ap #
# i.c #
# Command line = G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\FILESYSTEM\bfsa_ap #
# i.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\bfsa_api.lst #
# Object file = G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass #
# Storage\compil\Binary\Obj\bfsa_api.r79 #
# #
# #
##############################################################################
G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\FILESYSTEM\bfsa_api.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 : bfsa_api.c
12 // Object : bfsa_api routines
13 // Creation : FB 10/feb/2005
14 // Modif : JCB 15/apr/2005
15 // --------------------------------------------------------------------------
16 #include "po_types.h"
17 #include "fw_usb.h"
18 #include "po_kernel.h"
19 #include "trace.h"
20 //#include "flash.h"
21 //#include "bfsa_flash.h"
22 #include "mmc.h"
23 #include "bfsa_api.h"
24 #include "bfsa_internal.h"
25
26
27 // **************************************************
28 // Global declaration
29 // **************************************************
\ In segment DATA_Z, align 4, align-sorted
30 CURRENT_DIR BFSA_current_dir;
\ BFSA_current_dir:
\ 00000000 DS8 108
31 MEDIA_INFO BFSA_media;
32
33
\ In segment DATA_Z, align 4, align-sorted
34 union fatBuff BFSABuffer; // BFSA_media.SectPerFAT*BFSA_media.bytesPerSector
\ BFSABuffer:
\ 00000000 DS8 1024
35
36
37
\ In segment DATA_Z, align 4, align-sorted
38 FILE_OBJECT file_list[5];
\ file_list:
\ 00000000 DS8 120
\ In segment DATA_I, align 4, align-sorted
\ BFSA_media:
\ 00000000 DS8 24
\ 00000018 REQUIRE `?<Initializer for BFSA_media>`
39 char CurrentPath[BFSA_MAX_PATH_LEN]="\\"; // 102
\ CurrentPath:
\ 00000018 DS8 104
\ 00000080 REQUIRE `?<Initializer for CurrentPath>`
40
41 /*****************************************************************
42 *
43 *
44 * S U B - R O U T I N E : BFSA_init
45 *
46 *-----------------------------------------------------------------
47 *
48 * Object :
49 * This function initializes the File System. It must be called
50 * only once at start-up, before any other BFSA functions.
51 *
52 * Argument : NONE
53 *
54 * Return value : 0 if success,
55 * on error : NOT_MEDIA_FOUND
56 * NOT_A_FAT_FILESYSTEM
57 *
58 *****************************************************************/
\ In segment CODE, align 4, keep-with-next
59 ULONG BFSA_init(void)
60 {
\ BFSA_init:
\ 00000000 F0B5 PUSH {R4-R7,LR}
61 ULONG _status = BFSA_SUCCESS;
62
63 #ifndef NANDFLASH
64 // Initialize the mmc disk
65 for(int cnt=0;cnt<30;cnt++)
\ 00000002 0024 MOV R4,#+0
66 {
67 if(disk_initialize()==0x0)
\ ??BFSA_init_0:
\ 00000004 ........ _BLF disk_initialize,??disk_initialize??rT
\ 00000008 0028 CMP R0,#+0
\ 0000000A 04D1 BNE ??BFSA_init_1
68 {
69 TRACE_INFO("MMC disk initialized .\r\n") ;
\ 0000000C 3E49 LDR R1,??BFSA_init_2 ;; `?<Constant "MMC disk initialized .\\r\\n">`
\ 0000000E .... LDR R0,??DataTable3 ;; _Stdout
\ 00000010 ........ _BLF fprintf,??fprintf??rT
\ 00000014 02E0 B ??BFSA_init_3
70 break ;
71 }
72 }
\ ??BFSA_init_1:
\ 00000016 641C ADD R4,R4,#+1
\ 00000018 1E2C CMP R4,#+30
\ 0000001A F3DB BLT ??BFSA_init_0
73 #else
74 AT91F_NandFlash_Init();
75 #endif
76
77 // Read in MBR the location of the first partition, actualy our disk is always
78 // the first partition and is located just after the MBR, so from offset 200h
79 // in FLASH.
80 /* FlashBaseAdd: 此处为 mmc卡得起始地址 ,不知道该死的flash怎么会从下一个扇区开始读,
81 但对于 mmc , BPB存在于 MBR的前446字节(fat 文件系统都如此)
82 */
83 FlashBaseAdd =(UCHAR*)(BASE_mmc_Add); // +MBR_SIZE
\ ??BFSA_init_3:
\ 0000001C .... LDR R0,??DataTable1 ;; FlashBaseAdd
\ 0000001E 0021 MOV R1,#+0
\ 00000020 0160 STR R1,[R0, #+0]
84 TRACE_DEBUG_H( "FlashBase:0x%X\n\r",(int)FlashBaseAdd);
85
86 // Read Media Info()
87 _status = BFSA_readMediaInfo(&BFSA_media);
\ 00000022 .... LDR R4,??DataTable2 ;; BFSA_media
\ 00000024 201C MOV R0,R4
\ 00000026 ........ BL BFSA_readMediaInfo
\ 0000002A 051C MOV R5,R0
88 if(!BFSA_FAILURE(_status))
\ 0000002C .... LDR R6,??DataTable3 ;; _Stdout
\ 0000002E 364F LDR R7,??BFSA_init_2 ;; `?<Constant "MMC disk initialized .\\r\\n">`
\ 00000030 60D4 BMI ??BFSA_init_4
89 {
90 TRACE_INFO( "GetMediaInfo\n\r");
\ 00000032 391C MOV R1,R7
\ 00000034 3031 ADD R1,#+48
\ 00000036 301C MOV R0,R6
\ 00000038 ........ _BLF fprintf,??fprintf??rT
91 TRACE_INFO( "FatType : 0x%X\n\r",BFSA_media.FATtype);
\ 0000003C 2278 LDRB R2,[R4, #+0]
\ 0000003E 391C MOV R1,R7
\ 00000040 4031 ADD R1,#+64
\ 00000042 301C MOV R0,R6
\ 00000044 ........ _BLF fprintf,??fprintf??rT
92 TRACE_INFO( "mediaType : 0x%X\n\r",BFSA_media.mediaType);
\ 00000048 6278 LDRB R2,[R4, #+1]
\ 0000004A 391C MOV R1,R7
\ 0000004C 5431 ADD R1,#+84
\ 0000004E 301C MOV R0,R6
\ 00000050 ........ _BLF fprintf,??fprintf??rT
93 TRACE_INFO( "bytesPrSect: 0x%X\n\r",BFSA_media.bytesPerSector);
\ 00000054 6288 LDRH R2,[R4, #+2]
\ 00000056 391C MOV R1,R7
\ 00000058 6831 ADD R1,#+104
\ 0000005A 301C MOV R0,R6
\ 0000005C ........ _BLF fprintf,??fprintf??rT
94 TRACE_INFO( "SectPrClust: 0x%X\n\r",BFSA_media.SectPerCluster);
\ 00000060 2279 LDRB R2,[R4, #+4]
\ 00000062 391C MOV R1,R7
\ 00000064 1C31 ADD R1,#+28
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -