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

📄 pmc.lst

📁 本代bootloader通过usb下载代码首先存放在sdram中
💻 LST
📖 第 1 页 / 共 2 页
字号:
###############################################################################
#                                                                             #
#                                                       24/Apr/2009  16:18:24 #
# IAR ARM ANSI C/C++ Compiler V5.11.0.20622/W32 EVALUATION                    #
# Copyright 1999-2007 IAR Systems. All rights reserved.                       #
#                                                                             #
#    Cpu mode     =  arm                                                      #
#    Endian       =  little                                                   #
#    Source file  =  D:\basic-dataflash-project-at91sam7se-ek\at91lib\periphe #
#                    rals\pmc\pmc.c                                           #
#    Command line =  D:\basic-dataflash-project-at91sam7se-ek\at91lib\periphe #
#                    rals\pmc\pmc.c -D at91sam7se512 -D sram -D               #
#                    TRACE_LEVEL=4 -lC D:\basic-dataflash-project-at91sam7se- #
#                    ek\at91sam7se-ek\basic-dataflash-project\ewp\at91sam7se5 #
#                    12_sram\List\ --remarks --diag_suppress Pe826,Pe1375 -o  #
#                    D:\basic-dataflash-project-at91sam7se-ek\at91sam7se-ek\b #
#                    asic-dataflash-project\ewp\at91sam7se512_sram\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 "D:\Program Files\arm\ARM\INC\DLib_Config_ #
#                    Full.h" -I D:\basic-dataflash-project-at91sam7se-ek\at91 #
#                    sam7se-ek\basic-dataflash-project\ewp\..\..\..\at91lib/p #
#                    eripherals\ -I D:\basic-dataflash-project-at91sam7se-ek\ #
#                    at91sam7se-ek\basic-dataflash-project\ewp\..\..\..\at91l #
#                    ib\ -I D:\basic-dataflash-project-at91sam7se-ek\at91sam7 #
#                    se-ek\basic-dataflash-project\ewp\..\..\..\at91lib/memor #
#                    ies\ -I D:\basic-dataflash-project-at91sam7se-ek\at91sam #
#                    7se-ek\basic-dataflash-project\ewp\..\..\..\at91lib/boar #
#                    ds/at91sam7se-ek\ -I "D:\Program Files\arm\ARM\INC\"     #
#                    --interwork --cpu_mode arm -Oh                           #
#    List file    =  D:\basic-dataflash-project-at91sam7se-ek\at91sam7se-ek\b #
#                    asic-dataflash-project\ewp\at91sam7se512_sram\List\pmc.l #
#                    st                                                       #
#    Object file  =  D:\basic-dataflash-project-at91sam7se-ek\at91sam7se-ek\b #
#                    asic-dataflash-project\ewp\at91sam7se512_sram\Obj\pmc.o  #
#                                                                             #
#                                                                             #
###############################################################################

D:\basic-dataflash-project-at91sam7se-ek\at91lib\peripherals\pmc\pmc.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 "pmc.h"
     35          #include <board.h>
     36          #include <utility/assert.h>
     37          #include <utility/trace.h>
     38          
     39          #ifdef CP15_PRESENT
     40          #include <cp15/cp15.h>
     41          #endif
     42          
     43          #define MASK_STATUS 0x3FFFFFFC
     44          
     45          //------------------------------------------------------------------------------
     46          //         Global functions
     47          //------------------------------------------------------------------------------
     48          
     49          #if defined(at91sam7l64) || defined(at91sam7l128)
     50          //------------------------------------------------------------------------------
     51          /// Sets the fast wake-up inputs that can get the device out of Wait mode.
     52          /// \param inputs  Fast wake-up inputs to enable.
     53          //------------------------------------------------------------------------------
     54          void PMC_SetFastWakeUpInputs(unsigned int inputs)
     55          {
     56              SANITY_CHECK((inputs & ~0xFF) == 0);
     57              AT91C_BASE_PMC->PMC_FSMR = inputs;
     58          }
     59          
     60          #if !defined(__ICCARM__)
     61          __attribute__ ((section (".ramfunc"))) // GCC
     62          #endif
     63          //------------------------------------------------------------------------------
     64          /// Disables the main oscillator, making the device enter Wait mode.
     65          //------------------------------------------------------------------------------
     66          void PMC_DisableMainOscillatorForWaitMode(void)
     67          {
     68              AT91C_BASE_PMC->PMC_MOR = 0x37 << 16;
     69              while ((AT91C_BASE_PMC->PMC_MOR & AT91C_PMC_MAINSELS) != AT91C_PMC_MAINSELS);
     70          }
     71          
     72          #endif
     73          
     74          #if defined(at91sam7l)
     75          //------------------------------------------------------------------------------
     76          /// Disables the main oscillator when NOT running on it.
     77          //------------------------------------------------------------------------------
     78          void PMC_DisableMainOscillator(void)
     79          {
     80              AT91C_BASE_PMC->PMC_MOR = 0x37 << 16;
     81              while ((AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MAINSELS) == AT91C_PMC_MAINSELS);
     82          }
     83          #endif
     84          
     85          //------------------------------------------------------------------------------
     86          /// Disables the processor clock
     87          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
     88          void PMC_DisableProcessorClock(void)
     89          {    
     90              AT91C_BASE_PMC->PMC_SCDR = AT91C_PMC_PCK;   
   \                     PMC_DisableProcessorClock:
   \   00000000   FB00E0E3           MVN      R0,#+251
   \   00000004   C00FC0E3           BIC      R0,R0,#0x300
   \   00000008   0110A0E3           MOV      R1,#+1
   \   0000000C   001080E5           STR      R1,[R0, #+0]
     91              while ((AT91C_BASE_PMC->PMC_SCSR & AT91C_PMC_PCK) != AT91C_PMC_PCK); 
   \                     ??PMC_DisableProcessorClock_0:
   \   00000010   F700E0E3           MVN      R0,#+247
   \   00000014   C00FC0E3           BIC      R0,R0,#0x300
   \   00000018   000090E5           LDR      R0,[R0, #+0]
   \   0000001C   010010E3           TST      R0,#0x1
   \   00000020   FAFFFF0A           BEQ      ??PMC_DisableProcessorClock_0
     92          }
   \   00000024   1EFF2FE1           BX       LR               ;; return
     93          
     94          //------------------------------------------------------------------------------
     95          /// Enables the clock of a peripheral. The peripheral ID (AT91C_ID_xxx) is used
     96          /// to identify which peripheral is targetted.
     97          /// Note that the ID must NOT be shifted (i.e. 1 << AT91C_ID_xxx).
     98          /// \param id  Peripheral ID (AT91C_ID_xxx).
     99          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    100          void PMC_EnablePeripheral(unsigned int id)
    101          {
   \                     PMC_EnablePeripheral:
   \   00000000   01402DE9           PUSH     {R0,LR}
    102              SANITY_CHECK(id < 32);
   \   00000004   200050E3           CMP      R0,#+32
   \   00000008   0600003A           BCC      ??PMC_EnablePeripheral_0
   \   0000000C   ........           LDR      R0,??DataTable3  ;; `?<Constant "-F- ASSERT: ">`
   \   00000010   ........           BL       printf
   \   00000014   6620A0E3           MOV      R2,#+102
   \   00000018   ........           LDR      R1,??DataTable4  ;; `?<Constant "D:\\\\basic-dataflash-pr...">`
   \   0000001C   ........           LDR      R0,??DataTable5  ;; `?<Constant "Sanity check failed a...">`
   \   00000020   ........           BL       printf
   \                     ??PMC_EnablePeripheral_1:
   \   00000024   FEFFFFEA           B        ??PMC_EnablePeripheral_1
    103          
    104              if ((AT91C_BASE_PMC->PMC_PCSR & (1 << id)) == (1 << id)) {
   \                     ??PMC_EnablePeripheral_0:
   \   00000028   E710E0E3           MVN      R1,#+231
   \   0000002C   C01FC1E3           BIC      R1,R1,#0x300
   \   00000030   001091E5           LDR      R1,[R1, #+0]
   \   00000034   0120A0E3           MOV      R2,#+1
   \   00000038   121001E0           AND      R1,R1,R2, LSL R0
   \   0000003C   120051E1           CMP      R1,R2, LSL R0
   \   00000040   1200A011           LSLNE    R0,R2,R0
   \   00000044   EF10E013           MVNNE    R1,#+239
   \   00000048   C01FC113           BICNE    R1,R1,#0x300
   \   0000004C   00008115           STRNE    R0,[R1, #+0]
    105          
    106                  TRACE_INFO("PMC_EnablePeripheral: clock of peripheral"
    107                             " %u is already enabled\n\r",
    108                             id);
   \   00000050   0010A001           MOVEQ    R1,R0
   \   00000054   08009F05           LDREQ    R0,??PMC_EnablePeripheral_2  ;; `?<Constant "-I- PMC_EnablePeriphe...">`
   \   00000058   ........           BLEQ     printf
    109              }
    110              else {
    111          
    112                  AT91C_BASE_PMC->PMC_PCER = 1 << id;
    113              }
    114          }
   \   0000005C   0050BDE8           POP      {R12,LR}
   \   00000060   1EFF2FE1           BX       LR               ;; return
   \                     ??PMC_EnablePeripheral_2:
   \   00000064   ........           DC32     `?<Constant "-I- PMC_EnablePeriphe...">`
    115          
    116          //------------------------------------------------------------------------------
    117          /// Disables the clock of a peripheral. The peripheral ID (AT91C_ID_xxx) is used
    118          /// to identify which peripheral is targetted.
    119          /// Note that the ID must NOT be shifted (i.e. 1 << AT91C_ID_xxx).
    120          /// \param id  Peripheral ID (AT91C_ID_xxx).
    121          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    122          void PMC_DisablePeripheral(unsigned int id)
    123          {
   \                     PMC_DisablePeripheral:
   \   00000000   01402DE9           PUSH     {R0,LR}
    124              SANITY_CHECK(id < 32);
   \   00000004   200050E3           CMP      R0,#+32
   \   00000008   0600003A           BCC      ??PMC_DisablePeripheral_0
   \   0000000C   ........           LDR      R0,??DataTable3  ;; `?<Constant "-F- ASSERT: ">`
   \   00000010   ........           BL       printf
   \   00000014   7C20A0E3           MOV      R2,#+124
   \   00000018   ........           LDR      R1,??DataTable4  ;; `?<Constant "D:\\\\basic-dataflash-pr...">`
   \   0000001C   ........           LDR      R0,??DataTable5  ;; `?<Constant "Sanity check failed a...">`
   \   00000020   ........           BL       printf
   \                     ??PMC_DisablePeripheral_1:
   \   00000024   FEFFFFEA           B        ??PMC_DisablePeripheral_1
    125          
    126              if ((AT91C_BASE_PMC->PMC_PCSR & (1 << id)) != (1 << id)) {
   \                     ??PMC_DisablePeripheral_0:
   \   00000028   E710E0E3           MVN      R1,#+231
   \   0000002C   C01FC1E3           BIC      R1,R1,#0x300
   \   00000030   001091E5           LDR      R1,[R1, #+0]
   \   00000034   0120A0E3           MOV      R2,#+1
   \   00000038   121001E0           AND      R1,R1,R2, LSL R0
   \   0000003C   120051E1           CMP      R1,R2, LSL R0
   \   00000040   1200A001           LSLEQ    R0,R2,R0
   \   00000044   EB10E003           MVNEQ    R1,#+235
   \   00000048   C01FC103           BICEQ    R1,R1,#0x300
   \   0000004C   00008105           STREQ    R0,[R1, #+0]
    127          
    128                  TRACE_INFO("PMC_DisablePeripheral: clock of peripheral"
    129                             " %u is not enabled\n\r",
    130                             id);
   \   00000050   0010A011           MOVNE    R1,R0
   \   00000054   08009F15           LDRNE    R0,??PMC_DisablePeripheral_2  ;; `?<Constant "-I- PMC_DisablePeriph...">`
   \   00000058   ........           BLNE     printf
    131              }
    132              else {
    133          
    134                  AT91C_BASE_PMC->PMC_PCDR = 1 << id;
    135              }
    136          }
   \   0000005C   0050BDE8           POP      {R12,LR}
   \   00000060   1EFF2FE1           BX       LR               ;; return
   \                     ??PMC_DisablePeripheral_2:
   \   00000064   ........           DC32     `?<Constant "-I- PMC_DisablePeriph...">`
    137          
    138          //------------------------------------------------------------------------------
    139          /// Enable all the periph clock via PMC
    140          /// (Becareful of the last 2 bits, it is not periph clock)
    141          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    142          void PMC_EnableAllPeripherals(void)
    143          {
   \                     PMC_EnableAllPeripherals:
   \   00000000   01402DE9           PUSH     {R0,LR}
    144              AT91C_BASE_PMC->PMC_PCER = MASK_STATUS;
   \   00000004   EF00E0E3           MVN      R0,#+239

⌨️ 快捷键说明

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