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

📄 bfsa_internal.lst

📁 at91sam7x256 FREERTOS sd卡的读写程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
##############################################################################
#                                                                            #
# IAR ARM ANSI C/C++ Compiler V4.31A/W32 EVALUATION    04/Dec/2007  10:02: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_in #
#                       ternal.c                                             #
#    Command line    =  G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\FILESYSTEM\bfsa_in #
#                       ternal.c -D AT91SAM7X256 -D PULL_UP_USB -D USE_LED   #
#                       -lC "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mas #
#                       s 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\bfsa_internal.lst      #
#    Object file     =  G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass     #
#                       Storage\compil\RAM_Debug\Obj\bfsa_internal.r79       #
#                                                                            #
#                                                                            #
##############################################################################

G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\FILESYSTEM\bfsa_internal.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_internal.c
     12          // Object              : Internal functions to perfom basic IO on disk sectors
     13          // Creation            : FB  10/feb/2005
     14          // Modif               : JCB 15/apr/2005
     15          // --------------------------------------------------------------------------
     16          #include "po_types.h"
     17          #include "po_kernel.h"
     18          #include "trace.h"
     19          //#include "flash.h"
     20          #include "mmc.h"
     21          //#include "bfsa_flash.h"
     22          #include "bfsa_api.h"
     23          #include "bfsa_internal.h"
     24          #include "board.h"
     25          
     26          #ifdef NANDFLASH
     27          #include <stdlib.h>
     28          #include "nand.h"
     29          #include "nand_ids.h"
     30          #include "jffs2.h"
     31          
     32          #include "NandFlash.h"
     33          
     34          extern unsigned char bBlock[SIZEONESECTOR];
     35          #endif
     36          
     37          // **************************************************
     38          //     Global
     39          // **************************************************
     40          

   \                                 In segment DATA_Z, align 4, align-sorted
     41          UCHAR* FlashBaseAdd =(UCHAR*)BASE_mmc_Add ;      // Flash base address, only for read operations
   \                     FlashBaseAdd:
   \   00000000                      DS8 4
     42          //ULONG FlashBaseAdd = BASE_mmc_Add ;      // Flash base address, only for read operations
     43          
     44          /*****************************************************************
     45          *
     46          *
     47          * S U B - R O U T I N E  : readBPB
     48          *
     49          *-----------------------------------------------------------------
     50          *
     51          * int readBPB(UCHAR *pucBuff, USHORT uSize)
     52          *
     53          * Object :
     54          *   This function read BPB from Flash.
     55          *
     56          * Argument:
     57          *       pucBuff         :[OUT] pointer to buffer that will receive the BPB,
     58          *                        allocated by caller.
     59          *       uSize           :[IN]  size of pucBuff.
     60          *
     61          * Return value : 0 if success,
     62          *       on error :      NO_MEDIA_FOUND
     63          *                       FLASH_ACCESS_ERROR
     64          *
     65          *****************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
     66          ULONG readBPB(UCHAR *pucBuff, USHORT uSize)
     67          {
   \                     readBPB:
   \   00000000   10B5               PUSH        {R4,LR}
     68            ULONG _status = BFSA_SUCCESS;
   \   00000002   0024               MOV         R4,#+0
     69          
     70            if (uSize > BPB_SIZE)
   \   00000004   3F29               CMP         R1,#+63
   \   00000006   01D3               BCC         ??readBPB_0
     71            {
     72              _status = MMC_ACCESS_ERROR;
   \   00000008   ....               LDR         R4,??DataTable7    ;; 0x80000100
   \   0000000A   04E0               B           ??readBPB_1
     73            }
     74            else
     75            {
     76               // Copy first bytes from FLASH
     77               AT91F_ReadMedia((unsigned int)FlashBaseAdd, uSize, pucBuff);
   \                     ??readBPB_0:
   \   0000000C   021C               MOV         R2,R0
   \   0000000E   ....               LDR         R0,??DataTable20   ;; FlashBaseAdd
   \   00000010   0068               LDR         R0,[R0, #+0]
   \   00000012   ........           _BLF        AT91F_ReadMedia,??AT91F_ReadMedia??rT
     78            }
     79            return _status;
   \                     ??readBPB_1:
   \   00000016   201C               MOV         R0,R4
   \   00000018   ....               B           ?Subroutine15
     80          }

   \                                 In segment CODE, align 4, keep-with-next
   \                     ?Subroutine15:
   \   00000000   10BC               POP         {R4}
   \   00000002   02BC               POP         {R1}
   \   00000004   0847               BX          R1                 ;; return
     81          
     82          /*****************************************************************
     83          *
     84          *
     85          * S U B - R O U T I N E  : readFAT
     86          *
     87          *-----------------------------------------------------------------
     88          *
     89          * void readFAT(void)
     90          *
     91          * Object :
     92          *   This function copy the FAT from disk to global buffer.
     93          *
     94          * Argument:
     95          *       none.
     96          *
     97          *****************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
     98          void readFAT(void)
     99          {
   \                     readFAT:
   \   00000000   00B5               PUSH        {LR}
    100            ULONG _fatSizeFromDisk = BFSA_media.SectPerFAT*BFSA_media.bytesPerSector;
   \   00000002   ....               LDR         R0,??DataTable22   ;; BFSA_media
   \   00000004   4188               LDRH        R1,[R0, #+2]
   \   00000006   0289               LDRH        R2,[R0, #+8]
   \   00000008   4A43               MUL         R2,R1
    101          
    102          #ifdef NANDFLASH
    103            size_t total;
    104          #endif
    105          
    106            #ifndef NANDFLASH
    107              po_memcpy((void*)BFSABuffer.BFSA_fatBuff,
    108                        (void*)(BFSA_media.FATSectStart*BFSA_media.bytesPerSector + (ULONG)FlashBaseAdd),
    109                        min(_fatSizeFromDisk,sizeofBFSA_fatBuff));
   \   0000000A   8023               MOV         R3,#+128
   \   0000000C   DB00               LSL         R3,R3,#+3          ;; #+1024
   \   0000000E   9A42               CMP         R2,R3
   \   00000010   00D3               BCC         ??readFAT_0
   \   00000012   1A1C               MOV         R2,R3
   \                     ??readFAT_0:
   \   00000014   C088               LDRH        R0,[R0, #+6]
   \   00000016   4843               MUL         R0,R1
   \   00000018   ....               LDR         R1,??DataTable20   ;; FlashBaseAdd
   \   0000001A   0968               LDR         R1,[R1, #+0]
   \   0000001C   4118               ADD         R1,R0,R1
   \   0000001E   ....               LDR         R0,??DataTable15   ;; BFSABuffer
   \   00000020   ........           _BLF        po_memcpy,??po_memcpy??rT
    110            #else
    111              nand_rw(nand_dev_desc + curr_device,
    112                      NANDRW_READ,
    113                      BFSA_media.FATSectStart*BFSA_media.bytesPerSector + (ULONG)FlashBaseAdd - AT91_SMARTMEDIA_BASE,
    114                      sizeofBFSA_fatBuff,
    115                      &total,
    116                      BFSA_fatBuff);
    117            #endif
    118          }
   \   00000024   01BC               POP         {R0}
   \   00000026   0047               BX          R0                 ;; return
    119          
    120          /*****************************************************************
    121          *
    122          *
    123          * S U B - R O U T I N E  : writeFAT
    124          *
    125          *-----------------------------------------------------------------
    126          *
    127          * ULONG writeFAT(void)
    128          *
    129          * Object :
    130          *   This function writes back the FAT from global buffer to disk.
    131          *
    132          * Argument:
    133          *       none.
    134          *
    135          * Return value :
    136          *       BFSA_SUCCESS       on success
    137          *       FLASH_ACCESS_ERROR on error
    138          *
    139          *****************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    140          ULONG writeFAT(void)
    141          {
   \                     writeFAT:
   \   00000000   F0B5               PUSH        {R4-R7,LR}
    142            UCHAR _i;
    143            ULONG status = BFSA_SUCCESS;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -