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

📄 sdmmc_spi.lst

📁 Tried to make CAN logger on AT91sam7X-ek, but have no idea how to implement FATFs... -( I m just a
💻 LST
📖 第 1 页 / 共 5 页
字号:
###############################################################################
#                                                                             #
#                                                       25/May/2009  02:53:24 #
# IAR ANSI C/C++ Compiler V5.20.0.20892/W32 EVALUATION for ARM                #
# Copyright 1999-2008 IAR Systems AB.                                         #
#                                                                             #
#    Cpu mode     =  arm                                                      #
#    Endian       =  little                                                   #
#    Source file  =  F:\Diplomovka\IARprojects\Diplomovka\25.4.2009\getting-s #
#                    tarted-project-at91sam7x-ek-iar\getting-started-project- #
#                    at91sam7x-ek\at91lib\memories\sdmmc\sdmmc_spi.c          #
#    Command line =  F:\Diplomovka\IARprojects\Diplomovka\25.4.2009\getting-s #
#                    tarted-project-at91sam7x-ek-iar\getting-started-project- #
#                    at91sam7x-ek\at91lib\memories\sdmmc\sdmmc_spi.c -D       #
#                    at91sam7x256 -D flash -D TRACE_LEVEL=4 -lC               #
#                    F:\Diplomovka\IARprojects\Diplomovka\25.4.2009\getting-s #
#                    tarted-project-at91sam7x-ek-iar\getting-started-project- #
#                    at91sam7x-ek\at91sam7x-ek\getting-started-project\ewp\at #
#                    91sam7x256_flash\List\ --remarks --diag_suppress         #
#                    Pe826,Pe1375 -o F:\Diplomovka\IARprojects\Diplomovka\25. #
#                    4.2009\getting-started-project-at91sam7x-ek-iar\getting- #
#                    started-project-at91sam7x-ek\at91sam7x-ek\getting-starte #
#                    d-project\ewp\at91sam7x256_flash\Obj\ --no_cse           #
#                    --no_unroll --no_inline --no_code_motion --no_tbaa       #
#                    --no_clustering --no_scheduling --debug --endian=little  #
#                    --cpu=ARM7TDMI -e --fpu=None --dlib_config "C:\Program   #
#                    Files (x86)\IAR Systems\Embedded Workbench 5.0           #
#                    Evaluation\ARM\INC\DLib_Config_Full.h" -I                #
#                    F:\Diplomovka\IARprojects\Diplomovka\25.4.2009\getting-s #
#                    tarted-project-at91sam7x-ek-iar\getting-started-project- #
#                    at91sam7x-ek\at91sam7x-ek\getting-started-project\ewp\.. #
#                    \..\..\at91lib/peripherals\ -I                           #
#                    F:\Diplomovka\IARprojects\Diplomovka\25.4.2009\getting-s #
#                    tarted-project-at91sam7x-ek-iar\getting-started-project- #
#                    at91sam7x-ek\at91sam7x-ek\getting-started-project\ewp\.. #
#                    \..\..\at91lib\ -I F:\Diplomovka\IARprojects\Diplomovka\ #
#                    25.4.2009\getting-started-project-at91sam7x-ek-iar\getti #
#                    ng-started-project-at91sam7x-ek\at91sam7x-ek\getting-sta #
#                    rted-project\ewp\..\..\..\at91lib\memories\sdmmc\ -I     #
#                    F:\Diplomovka\IARprojects\Diplomovka\25.4.2009\getting-s #
#                    tarted-project-at91sam7x-ek-iar\getting-started-project- #
#                    at91sam7x-ek\at91sam7x-ek\getting-started-project\ewp\.. #
#                    \..\..\at91lib/components\ -I                            #
#                    F:\Diplomovka\IARprojects\Diplomovka\25.4.2009\getting-s #
#                    tarted-project-at91sam7x-ek-iar\getting-started-project- #
#                    at91sam7x-ek\at91sam7x-ek\getting-started-project\ewp\.. #
#                    \..\..\at91lib/boards/at91sam7x-ek\ -I                   #
#                    F:\Diplomovka\IARprojects\Diplomovka\25.4.2009\getting-s #
#                    tarted-project-at91sam7x-ek-iar\getting-started-project- #
#                    at91sam7x-ek\at91sam7x-ek\getting-started-project\ewp\.. #
#                    \..\..\external_libs/crc\ -I "C:\Program Files           #
#                    (x86)\IAR Systems\Embedded Workbench 5.0                 #
#                    Evaluation\ARM\INC\" --interwork --cpu_mode arm -Oh      #
#    List file    =  F:\Diplomovka\IARprojects\Diplomovka\25.4.2009\getting-s #
#                    tarted-project-at91sam7x-ek-iar\getting-started-project- #
#                    at91sam7x-ek\at91sam7x-ek\getting-started-project\ewp\at #
#                    91sam7x256_flash\List\sdmmc_spi.lst                      #
#    Object file  =  F:\Diplomovka\IARprojects\Diplomovka\25.4.2009\getting-s #
#                    tarted-project-at91sam7x-ek-iar\getting-started-project- #
#                    at91sam7x-ek\at91sam7x-ek\getting-started-project\ewp\at #
#                    91sam7x256_flash\Obj\sdmmc_spi.o                         #
#                                                                             #
#                                                                             #
###############################################################################

F:\Diplomovka\IARprojects\Diplomovka\25.4.2009\getting-started-project-at91sam7x-ek-iar\getting-started-project-at91sam7x-ek\at91lib\memories\sdmmc\sdmmc_spi.c
      1          /* ----------------------------------------------------------------------------
      2           *         ATMEL Microcontroller Software Support
      3           * ----------------------------------------------------------------------------
      4           * Copyright (c) 2008, Atmel Corporation
      5          
      6           * All rights reserved.
      7           *
      8           * Redistribution and use in source and binary forms, with or without
      9           * modification, are permitted provided that the following conditions are met:
     10           *
     11           * - Redistributions of source code must retain the above copyright notice,
     12           * this list of conditions and the disclaimer below.
     13           *
     14           * Atmel's name may not be used to endorse or promote products derived from
     15           * this software without specific prior written permission.
     16           *
     17           * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
     18           * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
     19           * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
     20           * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
     21           * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     22           * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
     23           * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
     24           * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
     25           * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
     26           * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     27           * ----------------------------------------------------------------------------
     28           */
     29          
     30          //------------------------------------------------------------------------------
     31          //         Headers
     32          //------------------------------------------------------------------------------
     33          
     34          #include "sdmmc_spi.h"
     35          #include "sdspi.h"
     36          #include <board.h>
     37          #include <utility/assert.h>
     38          #include <utility/trace.h>
     39          
     40          #include <string.h>

   \                                 In section .text, align 4
   \   __??Code32?? __intrinsic __code __interwork void *memset(void *, int, size_t)
   \                     memset:
   \   00000000   10402DE9           PUSH     {R4,LR}
   \   00000004   0040A0E1           MOV      R4,R0
   \   00000008   0200A0E1           MOV      R0,R2
   \   0000000C   0120A0E1           MOV      R2,R1
   \   00000010   0010A0E1           MOV      R1,R0
   \   00000014   0400A0E1           MOV      R0,R4
   \   00000018   ........           BL       __aeabi_memset
   \   0000001C   0400A0E1           MOV      R0,R4
   \   00000020   1040BDE8           POP      {R4,LR}
   \   00000024   1EFF2FE1           BX       LR               ;; return
     41          
     42          //------------------------------------------------------------------------------
     43          //         Local constants
     44          //------------------------------------------------------------------------------
     45          
     46          // SD card operation states
     47          #define SD_STATE_STBY     0
     48          #define SD_STATE_DATA     1
     49          #define SD_STATE_RCV      2
     50          
     51          // Card type
     52          #define UNKNOWN_CARD      0
     53          #define CARD_SD           1
     54          #define CARD_SDHC         2
     55          #define CARD_MMC          3
     56          
     57          // Delay between sending MMC commands
     58          #define MMC_DELAY     0x4FF
     59          
     60          #define SD_ADDRESS(pSd, address) (((pSd)->cardType == CARD_SDHC) ? \
     61                                           (address):((address) << SD_BLOCK_SIZE_BIT))
     62          
     63          //-----------------------------------------------------------------------------
     64          /// MMC/SD in SPI mode reports R1 status always, and R2 for SEND_STATUS
     65          /// R1 is the low order byte; R2 is the next highest byte, when present.
     66          //-----------------------------------------------------------------------------
     67          #define R1_SPI_IDLE             (1 << 0)
     68          #define R1_SPI_ERASE_RESET      (1 << 1)
     69          #define R1_SPI_ILLEGAL_COMMAND  (1 << 2)
     70          #define R1_SPI_COM_CRC          (1 << 3)
     71          #define R1_SPI_ERASE_SEQ        (1 << 4)
     72          #define R1_SPI_ADDRESS          (1 << 5)
     73          #define R1_SPI_PARAMETER        (1 << 6)
     74          // R1 bit 7 is always zero
     75          #define R2_SPI_CARD_LOCKED      (1 << 0)
     76          #define R2_SPI_WP_ERASE_SKIP    (1 << 1)
     77          #define R2_SPI_LOCK_UNLOCK_FAIL R2_SPI_WP_ERASE_SKIP
     78          #define R2_SPI_ERROR            (1 << 2)
     79          #define R2_SPI_CC_ERROR         (1 << 3)
     80          #define R2_SPI_CARD_ECC_ERROR   (1 << 4)
     81          #define R2_SPI_WP_VIOLATION     (1 << 5)
     82          #define R2_SPI_ERASE_PARAM      (1 << 6)
     83          #define R2_SPI_OUT_OF_RANGE     (1 << 7)
     84          #define R2_SPI_CSD_OVERWRITE    R2_SPI_OUT_OF_RANGE
     85          
     86          // Status register constants
     87          #define STATUS_READY_FOR_DATA   (1 << 8)
     88          #define STATUS_IDLE             (0 << 9)
     89          #define STATUS_READY            (1 << 9)
     90          #define STATUS_IDENT            (2 << 9)
     91          #define STATUS_STBY             (3 << 9)
     92          #define STATUS_TRAN             (4 << 9)
     93          #define STATUS_DATA             (5 << 9)
     94          #define STATUS_RCV              (6 << 9)
     95          #define STATUS_PRG              (7 << 9)
     96          #define STATUS_DIS              (8 << 9)
     97          #define STATUS_STATE          (0xF << 9)
     98          
     99          //-----------------------------------------------------------------------------
    100          /// OCR Register
    101          //-----------------------------------------------------------------------------
    102          #define AT91C_VDD_16_17          (1 << 4)
    103          #define AT91C_VDD_17_18          (1 << 5)
    104          #define AT91C_VDD_18_19          (1 << 6)
    105          #define AT91C_VDD_19_20          (1 << 7)
    106          #define AT91C_VDD_20_21          (1 << 8)
    107          #define AT91C_VDD_21_22          (1 << 9)
    108          #define AT91C_VDD_22_23          (1 << 10)
    109          #define AT91C_VDD_23_24          (1 << 11)
    110          #define AT91C_VDD_24_25          (1 << 12)
    111          #define AT91C_VDD_25_26          (1 << 13)
    112          #define AT91C_VDD_26_27          (1 << 14)
    113          #define AT91C_VDD_27_28          (1 << 15)
    114          #define AT91C_VDD_28_29          (1 << 16)
    115          #define AT91C_VDD_29_30          (1 << 17)
    116          #define AT91C_VDD_30_31          (1 << 18)
    117          #define AT91C_VDD_31_32          (1 << 19)
    118          #define AT91C_VDD_32_33          (1 << 20)
    119          #define AT91C_VDD_33_34          (1 << 21)
    120          #define AT91C_VDD_34_35          (1 << 22)
    121          #define AT91C_VDD_35_36          (1 << 23)
    122          #define AT91C_CARD_POWER_UP_BUSY (1 << 31)
    123          
    124          #define AT91C_MMC_HOST_VOLTAGE_RANGE     (AT91C_VDD_27_28 +\
    125                                                    AT91C_VDD_28_29 +\
    126                                                    AT91C_VDD_29_30 +\
    127                                                    AT91C_VDD_30_31 +\
    128                                                    AT91C_VDD_31_32 +\
    129                                                    AT91C_VDD_32_33)
    130          #define AT91C_CCS    (1 << 30)
    131          
    132          // SPI_CMD Register Value
    133          #define AT91C_POWER_ON_INIT         (0)
    134          
    135          //-----------------------------------------------------------------------------
    136          // Command Classes
    137          //-----------------------------------------------------------------------------
    138          //
    139          // Class 0, 2, 4, 5, 7 and 8 are mandatory and shall be supported by all SD Memory Cards.
    140          // Basic Commands (class 0)
    141          //
    142          // Cmd0 MCI + SPI
    143          #define   AT91C_GO_IDLE_STATE_CMD     (0)
    144          // Cmd1 SPI
    145          #define   AT91C_MMC_SEND_OP_COND_CMD  (1)
    146          // Cmd2 MCI
    147          #define   AT91C_ALL_SEND_CID_CMD      (2)
    148          // Cmd3 MCI
    149          #define   AT91C_SET_RELATIVE_ADDR_CMD (3)
    150          // Cmd4 MCI
    151          //#define AT91C_SET_DSR_CMD           (4)
    152          // cmd7 MCI
    153          #define   AT91C_SEL_DESEL_CARD_CMD    (7)
    154          // Cmd8 MCI + SPI
    155          #define   AT91C_SEND_IF_COND          (8)
    156          // Cmd9 MCI + SPI
    157          #define   AT91C_SEND_CSD_CMD          (9)
    158          // Cmd10 MCI + SPI
    159          #define   AT91C_SEND_CID_CMD          (10)

⌨️ 快捷键说明

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