target.lst

来自「ARM仿真案例」· LST 代码 · 共 229 行

LST
229
字号
##############################################################################
#                                                                            #
# IAR ARM ANSI C/C++ Compiler V4.31A/W32               20/Jul/2006  19:00:03 #
# Copyright 1999-2005 IAR Systems. All rights reserved.                      #
# Time limited license: 29 days left                                         #
#                                                                            #
#    Cpu mode        =  interwork                                            #
#    Endian          =  little                                               #
#    Stack alignment =  4                                                    #
#    Source file     =  E:\Project\examples\IAR\基础实验\EINT1\target.c      #
#    Command line    =  E:\Project\examples\IAR\基础实验\EINT1\target.c      #
#                       -lCN E:\Project\examples\IAR\基础实验\EINT1\Debug\Li #
#                       st\ -lA E:\Project\examples\IAR\基础实验\EINT1\Debug #
#                       \List\ -o E:\Project\examples\IAR\基础实验\EINT1\Deb #
#                       ug\Obj\ -s9 --debug --cpu_mode thumb --endian        #
#                       little --cpu ARM7TDMI-S --stack_align 4 --interwork  #
#                       -e --fpu None --dlib_config "E:\Program Files\IAR    #
#                       Systems\Embedded Workbench                           #
#                       4.0\ARM\LIB\dl4tptinl8n.h" -I "E:\Program Files\IAR  #
#                       Systems\Embedded Workbench 4.0\ARM\INC\"             #
#    List file       =  E:\Project\examples\IAR\基础实验\EINT1\Debug\List\ta #
#                       rget.lst                                             #
#    Object file     =  E:\Project\examples\IAR\基础实验\EINT1\Debug\Obj\tar #
#                       get.r79                                              #
#                                                                            #
#                                                                            #
##############################################################################

E:\Project\examples\IAR\基础实验\EINT1\target.c
      1          /**--------------文件信息--------------------------------------------------------------------------------
      2          **文   件   名: target.c
      3          **描        述: lpc210x(飞利浦的ARM)目标板特殊的代码,包括异常处理程序和目标板初始化程序
      4          **              每个工程应当具有这个文件的拷贝,用户根据程序的需要修改本文件。
      5          **注        意:本文件必须以ARM(32位代码)方式编译,否则,必须更改init.s和vector.s文件
      6          **              别的C代码不必使用ARM(32位代码)方式编译
      7          ********************************************************************************************************/
      8          
      9          #define IN_TARGET
     10          #include "config.h"
     11          
     12          /*********************************************************************************************************
     13          ** 函数名称: IRQ_Exception
     14          ** 功能描述: 中断异常处理程序,用户根据需要自己改变程序
     15          **
     16          ** 输 入: 无
     17          **
     18          ** 输 出: 无
     19          **         
     20          ** 全局变量: 无
     21          ** 调用模块: 无
     22          ********************************************************************************************************/
     23          //void __irq IRQ_Exception(void)
     24          	//{
     25             // while(1);                   // 这一句替换为自己的代码
     26          	//}
     27          
     28          /*********************************************************************************************************
     29          ** 函数名称: FIQ_Exception
     30          ** 功能描述: 快速中断异常处理程序,用户根据需要自己改变程序
     31          **           
     32          ** 输 入: 无
     33          **
     34          ** 输 出: 无
     35          **         
     36          ** 全局变量: 无
     37          ** 调用模块: 无
     38          ********************************************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
     39                  void FIQ_Exception(void)
     40          {
     41              while(1);                   // 这一句替换为自己的代码
   \                     FIQ_Exception:
   \                     ??FIQ_Exception_0:
   \   00000000   FEE7               B           ??FIQ_Exception_0
     42          }
     43          
     44          /*********************************************************************************************************
     45          ** 函数名称: TargetInit
     46          ** 功能描述: 目标板初始化代码,在需要的地方调用,根据需要改变
     47          ** 输 入: 无
     48          **
     49          ** 输 出: 无
     50          **         
     51          ** 全局变量: 无
     52          ** 调用模块: 无
     53          ********************************************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
     54                  void TargetInit(void)
     55          {
     56              /* 添加自己的代码 */
     57          }
   \                     TargetInit:
   \   00000000   7047               BX          LR                 ;; return
     58          
     59          /*********************************************************************************************************
     60          ** 函数名称: TargetResetInit
     61          ** 功能描述: 调用main函数前目标板初始化代码,根据需要改变,不能删除
     62          ** 输 入: 无
     63          **
     64          ** 输 出: 无
     65          **         
     66          ** 全局变量: 无
     67          ** 调用模块: 无
     68          ********************************************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
     69                  void TargetResetInit(void)
     70          {
     71          
     72              /* 设置系统各部分时钟 */
     73          /*    PLLCON = 1;
     74          #if ((Fcclk / 4) / Fpclk) == 1
     75              VPBDIV = 0;
     76          #endif
     77          
     78          #if ((Fcclk / 4) / Fpclk) == 2
     79              VPBDIV = 2;
     80          #endif
     81          
     82          #if ((Fcclk / 4) / Fpclk) == 4
     83              VPBDIV = 1;
     84          #endif
     85          
     86          #if (Fcco / Fcclk) == 2
     87              PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);
     88          #endif
     89          #if (Fcco / Fcclk) == 4
     90              PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);
     91          #endif
     92          #if (Fcco / Fcclk) == 8
     93              PLLCFG = ((Fcclk / Fosc) - 1) | (2 << 5);
     94          #endif
     95          #if (Fcco / Fcclk) == 16
     96              PLLCFG = ((Fcclk / Fosc) - 1) | (3 << 5);
     97          #endif
     98              PLLFEED = 0xaa;
     99              PLLFEED = 0x55;
    100              while((PLLSTAT & (1 << 10)) == 0);
    101              PLLCON = 3;
    102              PLLFEED = 0xaa;
    103              PLLFEED = 0x55;
    104          */  
    105              
    106              /* 设置存储器加速模块 */
    107              MAMCR = 2;		//MAMCR 8u2 00-MAM 功能被禁止、01-MAM功能部分使能、10-MAM功能完全使能
   \                     TargetResetInit:
   \   00000000   0748               LDR         R0,??TargetResetInit_0  ;; 0xe01fc000
   \   00000002   0221               MOV         R1,#+2
   \   00000004   0170               STRB        R1,[R0, #+0]
    108              /* MAMTIM 8u3
    109              000=0-保留
    110              001=1-一段时间内只有 1 个处理器时钟(cclk)用于 MAM 取指。
    111              010=2-一段时间内只有2个处理器时钟(cclk)用于MAM取指。
    112              011=3-一段时间内只有 3 个处理器时钟(cclk)用于 MAM 取指。
    113              100=4-一段时间内只有4个处理器时钟(cclk)用于 MAM 取指。
    114              101=5-一段时间内只有5 个处理器时钟(cclk)用于 MAM 取指。
    115              110=6-一段时间内只有 6 个处理器时钟(cclk)用于 MAM 取指。
    116              111=7-一段时间内只有7个处理器时钟(cclk)用于 MAM 取指。
    117               */
    118          #if Fcclk < 20000000
    119              MAMTIM = 1;
    120          #else
    121          #if Fcclk < 40000000
    122              MAMTIM = 2;
    123          #else
    124              MAMTIM = 3;
   \   00000006   0748               LDR         R0,??TargetResetInit_0+0x4  ;; 0xe01fc004
   \   00000008   0321               MOV         R1,#+3
   \   0000000A   0170               STRB        R1,[R0, #+0]
    125          #endif
    126          #endif
    127                 
    128              /* 初始化VIC */
    129              VICIntEnClr = 0xffffffff;//清所有中断使能,即关中断
   \   0000000C   0648               LDR         R0,??TargetResetInit_0+0x8  ;; 0xfffff014
   \   0000000E   0021               MOV         R1,#+0
   \   00000010   C943               MVN         R1,R1              ;; #-1
   \   00000012   0160               STR         R1,[R0, #+0]
    130              VICVectAddr = 0;//默认向量地址寄存器
   \   00000014   0020               MOV         R0,#+0
   \   00000016   0549               LDR         R1,??TargetResetInit_0+0xC  ;; 0xfffff030
   \   00000018   0860               STR         R0,[R1, #+0]
    131              VICIntSelect = 0;//1:对应的中断请求分配为FIQ。0:对应的中断请求分配为IRQ。
   \   0000001A   0549               LDR         R1,??TargetResetInit_0+0x10  ;; 0xfffff00c
   \   0000001C   0860               STR         R0,[R1, #+0]
    132          
    133              /* 添加自己的代码 */
    134          
    135          }
   \   0000001E   7047               BX          LR                 ;; return
   \                     ??TargetResetInit_0:
   \   00000020   00C01FE0           DC32        0xe01fc000
   \   00000024   04C01FE0           DC32        0xe01fc004
   \   00000028   14F0FFFF           DC32        0xfffff014
   \   0000002C   30F0FFFF           DC32        0xfffff030
   \   00000030   0CF0FFFF           DC32        0xfffff00c
    136          
    137          /*********************************************************************************************************
    138          **                            End Of File
    139          ********************************************************************************************************/

   Maximum stack usage in bytes:

     Function        CSTACK
     --------        ------
     FIQ_Exception       4
     TargetInit          0
     TargetResetInit     0


   Segment part sizes:

     Function/Label    Bytes
     --------------    -----
     ??FIQ_Exception_0    2
     TargetInit           2
     TargetResetInit     52
      Others             24

 
 80 bytes in segment CODE
 
 56 bytes of CODE memory (+ 24 bytes shared)

Errors: none
Warnings: none

⌨️ 快捷键说明

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