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

📄 mci_sd.lst

📁 针对at91sam7a3为主芯片开发板开发的spi口应用程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
##############################################################################
#                                                                            #
# IAR ARM ANSI C/C++ Compiler V4.30A/W32 KICKSTART     02/Aug/2006  15:41:58 #
# Copyright 1999-2005 IAR Systems. All rights reserved.                      #
#                                                                            #
#    Cpu mode        =  interwork                                            #
#    Endian          =  little                                               #
#    Stack alignment =  4                                                    #
#    Source file     =  C:\Documents and Settings\yc\桌面\AT91SAM7A3(CAN_CAN #
#                       )(10K_5K)\BasicCAN-SAM7A3\src\MCI_SD.c               #
#    Command line    =  "C:\Documents and Settings\yc\桌面\AT91SAM7A3(CAN_CA #
#                       N)(10K_5K)\BasicCAN-SAM7A3\src\MCI_SD.c" -lC         #
#                       "C:\Documents and Settings\yc\桌面\AT91SAM7A3(CAN_CA #
#                       N)(10K_5K)\BasicCAN-SAM7A3\compil\Binary\List\" -o   #
#                       "C:\Documents and Settings\yc\桌面\AT91SAM7A3(CAN_CA #
#                       N)(10K_5K)\BasicCAN-SAM7A3\compil\Binary\Obj\" -z9   #
#                       --debug --cpu_mode thumb --endian little --cpu       #
#                       ARM7TDMI --stack_align 4 --interwork -e --fpu None   #
#                       --dlib_config "D:\IAR Systems\Embedded Workbench     #
#                       4.0 Kickstart\arm\LIB\dl4tptinl8f.h" -I              #
#                       "C:\Documents and Settings\yc\桌面\AT91SAM7A3(CAN_CA #
#                       N)(10K_5K)\BasicCAN-SAM7A3\compil\srcIAR\" -I        #
#                       "C:\Documents and Settings\yc\桌面\AT91SAM7A3(CAN_CA #
#                       N)(10K_5K)\BasicCAN-SAM7A3\compil\..\src\" -I        #
#                       "C:\Documents and Settings\yc\桌面\AT91SAM7A3(CAN_CA #
#                       N)(10K_5K)\BasicCAN-SAM7A3\compil\..\..\" -I         #
#                       "D:\IAR Systems\Embedded Workbench 4.0               #
#                       Kickstart\arm\INC\"                                  #
#    List file       =  C:\Documents and Settings\yc\桌面\AT91SAM7A3(CAN_CAN #
#                       )(10K_5K)\BasicCAN-SAM7A3\compil\Binary\List\MCI_SD. #
#                       lst                                                  #
#    Object file     =  C:\Documents and Settings\yc\桌面\AT91SAM7A3(CAN_CAN #
#                       )(10K_5K)\BasicCAN-SAM7A3\compil\Binary\Obj\MCI_SD.r #
#                       79                                                   #
#                                                                            #
#                                                                            #
##############################################################################

C:\Documents and Settings\yc\桌面\AT91SAM7A3(CAN_CAN)(10K_5K)\BasicCAN-SAM7A3\src\MCI_SD.c
      1          //*******************************************************************************************
      2          #include "MCI_SD.h"
      3          #include "string.h"
      4          #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,#+0x2
   \   00000002   0162               STR         R1,[R0, #+0x20]
   \   00000004   0902               LSL         R1,R1,#+0x8
   \   00000006   0162               STR         R1,[R0, #+0x20]
   \   00000008   0021               MOV         R1,#+0
   \   0000000A   8161               STR         R1,[R0, #+0x18]
   \   0000000C   C161               STR         R1,[R0, #+0x1C]
   \   0000000E   0161               STR         R1,[R0, #+0x10]
   \   00000010   4161               STR         R1,[R0, #+0x14]
   \   00000012   8160               STR         R1,[R0, #+0x8]
   \   00000014   C160               STR         R1,[R0, #+0xC]
   \   00000016   0160               STR         R1,[R0, #+0]
   \   00000018   4160               STR         R1,[R0, #+0x4]
   \   0000001A   0121               MOV         R1,#+0x1
   \   0000001C   0162               STR         R1,[R0, #+0x20]
   \   0000001E   0902               LSL         R1,R1,#+0x8
   \   00000020   0162               STR         R1,[R0, #+0x20]
   \   00000022   7047               BX          LR                 ;; return
      5          #include "trace.h"
      6          

   \                                 In segment DATA_Z, align 4, align-sorted
      7          unsigned int *getresData ;
   \                     getresData:
   \   00000000                      DS8 4
      8          //****************************************** For SD card init*********************************

   \                                 In segment CODE, align 4, keep-with-next
      9          void MCI_Int_Handler(void)   //检查状态已决定执行相应的操作
     10           {
   \                     MCI_Int_Handler:
   \   00000000   00B5               PUSH        {LR}
     11            unsigned long int Status ;
     12            Status=AT91F_MCI_GetStatus(AT91C_BASE_MCI) ;                            //place interrupt code here
   \   00000002   ....               LDR         R0,??DataTable9    ;; 0xfffac040
   \   00000004   0068               LDR         R0,[R0, #+0]
     13            if((Status & AT91C_MCI_CMDRDY)==AT91C_MCI_CMDRDY)
   \   00000006   C007               LSL         R0,R0,#+0x1F
   \   00000008   03D5               BPL         ??MCI_Int_Handler_0
     14             {
     15              Read_CMD_Respond(ResponedType) ;
   \   0000000A   ....               LDR         R0,??DataTable11   ;; ResponedType
   \   0000000C   0068               LDR         R0,[R0, #+0]
   \   0000000E   ........           BL          Read_CMD_Respond
     16             }
     17            AT91F_MCI_DisableIt(AT91C_BASE_MCI ,AT91C_MCI_ENDRX) ;
   \                     ??MCI_Int_Handler_0:
   \   00000012   4020               MOV         R0,#+0x40
   \   00000014   ....               LDR         R1,??DataTable4    ;; 0xfffac048
   \   00000016   0860               STR         R0,[R1, #+0]
     18          
     19            AT91F_MCI_EnableIt(AT91C_BASE_MCI ,AT91C_MCI_ENDRX) ;
   \   00000018   ....               LDR         R1,??DataTable6    ;; 0xfffac044
   \   0000001A   ....               B           ?Subroutine13
     20           }

   \                                 In segment CODE, align 4, keep-with-next
   \                     ?Subroutine13:
   \   00000000   0860               STR         R0,[R1, #+0]
   \   00000002   01BC               POP         {R0}
   \   00000004   0047               BX          R0                 ;; return
   \   00000006   C046               NOP         
   \                     ??Subroutine13_0:
   \   00000008   ........           DC32        Get_Respond_Buffer
     21          //*******************************************************************************************

   \                                 In segment CODE, align 4, keep-with-next
     22          void  delay(void)
     23          {
     24            for(int n=0 ;n<10000;)
     25              n++ ;
     26          }
   \                     delay:
   \   00000000   7047               BX          LR                 ;; return
     27          
     28          //*******************************************************************************************

   \                                 In segment CODE, align 4, keep-with-next
     29          void  MCI_Port_Init(void)
     30          {
   \                     MCI_Port_Init:
   \   00000000   F0B5               PUSH        {R4-R7,LR}
     31            AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOA ) ;
   \   00000002   134C               LDR         R4,??MCI_Port_Init_0  ;; 0xfffffc10
   \   00000004   0420               MOV         R0,#+0x4
   \   00000006   2060               STR         R0,[R4, #+0]
     32            AT91F_PIO_Enable(AT91C_BASE_PIOA,AT91C_PA14_MCDA3) ;
   \   00000008   1248               LDR         R0,??MCI_Port_Init_0+0x4  ;; 0xfffff400
   \   0000000A   8025               MOV         R5,#+0x80
   \   0000000C   ED01               LSL         R5,R5,#+0x7        ;; #+0x4000
   \   0000000E   0560               STR         R5,[R0, #+0]
     33            AT91F_PIO_OutputEnable(AT91C_BASE_PIOA ,SD_CLK | AT91C_PA14_MCDA3|AT91C_PA16_MCCDA |AT91C_PA15_MCDA0 |
     34                                   AT91C_PA17_MCCK |AT91C_PA12_MCDA1 |AT91C_PA13_MCDA2 ) ;
   \   00000010   1149               LDR         R1,??MCI_Port_Init_0+0x8  ;; 0xfffff410
   \   00000012   FC26               MOV         R6,#+0xFC
   \   00000014   B602               LSL         R6,R6,#+0xA        ;; #+0x3F000
   \   00000016   0E60               STR         R6,[R1, #+0]
     35          
     36            AT91F_PIO_CfgOutput(AT91C_BASE_PIOA,AT91C_PA14_MCDA3) ;
   \   00000018   0560               STR         R5,[R0, #+0]
   \   0000001A   0D60               STR         R5,[R1, #+0]
     37          
     38            AT91F_PIO_SetOutput(AT91C_BASE_PIOA,AT91C_PA14_MCDA3) ; //set it to high,delay 74 clock at least
   \   0000001C   0F48               LDR         R0,??MCI_Port_Init_0+0xC  ;; 0xfffff430
   \   0000001E   0560               STR         R5,[R0, #+0]
     39            for(int n=0 ;n<=30;n++)
   \   00000020   1F27               MOV         R7,#+0x1F
     40            delay() ;
   \                     ??MCI_Port_Init_1:
   \   00000022   ........           BL          delay
   \   00000026   7F1E               SUB         R7,R7,#+0x1
   \   00000028   FBD1               BNE         ??MCI_Port_Init_1
     41            AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,AT91C_PA14_MCDA3) ;
   \   0000002A   0D48               LDR         R0,??MCI_Port_Init_0+0x10  ;; 0xfffff434
   \   0000002C   0560               STR         R5,[R0, #+0]
     42            delay() ;
   \   0000002E   ........           BL          delay
     43            delay() ;
   \   00000032   ........           BL          delay
     44            AT91F_MCI_CfgPIO () ;
   \   00000036   0B48               LDR         R0,??MCI_Port_Init_0+0x14  ;; 0xfffff470
   \   00000038   0021               MOV         R1,#+0
   \   0000003A   0160               STR         R1,[R0, #+0]
   \   0000003C   0A48               LDR         R0,??MCI_Port_Init_0+0x18  ;; 0xfffff474
   \   0000003E   0660               STR         R6,[R0, #+0]
   \   00000040   0A48               LDR         R0,??MCI_Port_Init_0+0x1C  ;; 0xfffff404
   \   00000042   0660               STR         R6,[R0, #+0]
     45            AT91F_MCI_CfgPMC() ;
   \   00000044   6809               LSR         R0,R5,#+0x5
   \   00000046   2060               STR         R0,[R4, #+0]
     46          }
   \   00000048   F0BC               POP         {R4-R7}
   \   0000004A   01BC               POP         {R0}
   \   0000004C   0047               BX          R0                 ;; return
   \   0000004E   C046               NOP         
   \                     ??MCI_Port_Init_0:
   \   00000050   10FCFFFF           DC32        0xfffffc10
   \   00000054   00F4FFFF           DC32        0xfffff400
   \   00000058   10F4FFFF           DC32        0xfffff410
   \   0000005C   30F4FFFF           DC32        0xfffff430
   \   00000060   34F4FFFF           DC32        0xfffff434
   \   00000064   70F4FFFF           DC32        0xfffff470
   \   00000068   74F4FFFF           DC32        0xfffff474
   \   0000006C   04F4FFFF           DC32        0xfffff404
     47          //*******************************************************************************************

   \                                 In segment CODE, align 4, keep-with-next
     48          void MCI_Init(void)
     49          
     50          {
   \                     MCI_Init:
   \   00000000   70B5               PUSH        {R4-R6,LR}
     51            AT91PS_MCI pMCI ;
     52            pMCI=AT91C_BASE_MCI ;
     53            AT91F_MCI_SW_Reset(pMCI) ;
   \   00000002   1D4C               LDR         R4,??MCI_Init_0    ;; 0xfffac000
   \   00000004   8020               MOV         R0,#+0x80
   \   00000006   2060               STR         R0,[R4, #+0]
     54            //配置工作模式
     55            AT91F_MCI_Configure(pMCI,
     56                                  (AT91C_MCI_DTOCYC & 0x1 )|(AT91C_MCI_DTOMUL & AT91C_MCI_DTOMUL_256), //数据暂停乘数=16
     57                                  (AT91C_MCI_CLKDIV & 0x01)                                            //时钟4分频 |当填充数据到写传输时,使用0x00
     58                                 |(AT91C_MCI_PDCMODE)|(AT91C_MCI_BLKLEN & (Max_BlockSize <<18))        //使能PDC 传输 ,块长度为最大
     59                                 ,(AT91C_MCI_SCDSEL & 0x00 )                                            //选择SD 卡A , 1 位数据总线(运行后可调)
     60                                ) ;

⌨️ 快捷键说明

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