⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bfsa_api.lst

📁 at91sam7x256 FREERTOS sd卡的读写程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
##############################################################################
#                                                                            #
# 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 + -