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

📄 target.s79

📁 ARM仿真案例
💻 S79
字号:
//////////////////////////////////////////////////////////////////////////////
//                                                                           /
// 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\L /
//                       ist\ -lA E:\Project\examples\IAR\基础实验\EINT1\Deb /
//                       ug\List\ -o E:\Project\examples\IAR\基础实验\EINT1\ /
//                       Debug\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\t /
//                       arget.s79                                           /
//                                                                           /
//                                                                           /
//////////////////////////////////////////////////////////////////////////////

        NAME target

        RTMODEL "ARMv4M", "USED"
        RTMODEL "ARMv4T", "USED"
        RTMODEL "StackAlign4", "USED"
        RTMODEL "__cpu_mode", "__pcs__interwork"
        RTMODEL "__data_model", "absolute"
        RTMODEL "__endian", "little"
        RTMODEL "__rt_version", "6"

        RSEG CSTACK:DATA:NOROOT(2)

        MULTWEAK ??FIQ_Exception??rA
        MULTWEAK ??TargetInit??rA
        MULTWEAK ??TargetResetInit??rA
        PUBLIC FIQ_Exception
        FUNCTION FIQ_Exception,0203H
        LOCFRAME CSTACK, 4, STACK
        PUBLIC TargetInit
        FUNCTION TargetInit,0203H
        PUBLIC TargetResetInit
        FUNCTION TargetResetInit,0203H
        
        CFI Names cfiNames0
        CFI StackFrame CFA R13 HUGEDATA
        CFI Resource R0:32, R1:32, R2:32, R3:32, R4:32, R5:32, R6:32, R7:32
        CFI Resource R8:32, R9:32, R10:32, R11:32, R12:32, CPSR:32, R13:32
        CFI Resource R14:32, SPSR:32
        CFI VirtualResource ?RET:32
        CFI EndNames cfiNames0
        
        CFI Common cfiCommon0 Using cfiNames0
        CFI CodeAlign 4
        CFI DataAlign 4
        CFI ReturnAddress ?RET CODE
        CFI CFA R13+0
        CFI R0 Undefined
        CFI R1 Undefined
        CFI R2 Undefined
        CFI R3 Undefined
        CFI R4 SameValue
        CFI R5 SameValue
        CFI R6 SameValue
        CFI R7 SameValue
        CFI R8 SameValue
        CFI R9 SameValue
        CFI R10 SameValue
        CFI R11 SameValue
        CFI R12 Undefined
        CFI CPSR SameValue
        CFI R14 Undefined
        CFI SPSR SameValue
        CFI ?RET R14
        CFI EndCommon cfiCommon0
        
        
        CFI Common cfiCommon1 Using cfiNames0
        CFI CodeAlign 2
        CFI DataAlign 4
        CFI ReturnAddress ?RET CODE
        CFI CFA R13+0
        CFI R0 Undefined
        CFI R1 Undefined
        CFI R2 Undefined
        CFI R3 Undefined
        CFI R4 SameValue
        CFI R5 SameValue
        CFI R6 SameValue
        CFI R7 SameValue
        CFI R8 SameValue
        CFI R9 SameValue
        CFI R10 SameValue
        CFI R11 SameValue
        CFI R12 Undefined
        CFI CPSR SameValue
        CFI R14 Undefined
        CFI SPSR SameValue
        CFI ?RET R14
        CFI EndCommon cfiCommon1
        
FIQ_Exception       SYMBOL "FIQ_Exception"
??FIQ_Exception??rA SYMBOL "??rA", FIQ_Exception
TargetInit          SYMBOL "TargetInit"
??TargetInit??rA    SYMBOL "??rA", TargetInit
TargetResetInit     SYMBOL "TargetResetInit"
??TargetResetInit??rA SYMBOL "??rA", TargetResetInit


        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock0 Using cfiCommon0
        CFI NoFunction
        CODE32
??FIQ_Exception??rA:
        ADD         R12,PC,#+1
        BX          R12
        CFI EndBlock cfiBlock0
        REQUIRE FIQ_Exception
// 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 ********************************************************************************************************/

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock1 Using cfiCommon1
        CFI Function FIQ_Exception
        CODE16
//   39         void FIQ_Exception(void)
//   40 {
//   41     while(1);                   // 这一句替换为自己的代码
FIQ_Exception:
??FIQ_Exception_0:
        B           ??FIQ_Exception_0
        CFI EndBlock cfiBlock1
//   42 }

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock2 Using cfiCommon0
        CFI NoFunction
        CODE32
??TargetInit??rA:
        ADD         R12,PC,#+1
        BX          R12
        CFI EndBlock cfiBlock2
        REQUIRE TargetInit
//   43 
//   44 /*********************************************************************************************************
//   45 ** 函数名称: TargetInit
//   46 ** 功能描述: 目标板初始化代码,在需要的地方调用,根据需要改变
//   47 ** 输 入: 无
//   48 **
//   49 ** 输 出: 无
//   50 **         
//   51 ** 全局变量: 无
//   52 ** 调用模块: 无
//   53 ********************************************************************************************************/

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock3 Using cfiCommon1
        CFI Function TargetInit
        CODE16
//   54         void TargetInit(void)
//   55 {
//   56     /* 添加自己的代码 */
//   57 }
TargetInit:
        BX          LR                 ;; return
        CFI EndBlock cfiBlock3

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock4 Using cfiCommon0
        CFI NoFunction
        CODE32
??TargetResetInit??rA:
        ADD         R12,PC,#+1
        BX          R12
        CFI EndBlock cfiBlock4
        REQUIRE TargetResetInit
//   58 
//   59 /*********************************************************************************************************
//   60 ** 函数名称: TargetResetInit
//   61 ** 功能描述: 调用main函数前目标板初始化代码,根据需要改变,不能删除
//   62 ** 输 入: 无
//   63 **
//   64 ** 输 出: 无
//   65 **         
//   66 ** 全局变量: 无
//   67 ** 调用模块: 无
//   68 ********************************************************************************************************/

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock5 Using cfiCommon1
        CFI Function TargetResetInit
        CODE16
//   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:
        LDR         R0,??TargetResetInit_0  ;; 0xe01fc000
        MOV         R1,#+2
        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;
        LDR         R0,??TargetResetInit_0+0x4  ;; 0xe01fc004
        MOV         R1,#+3
        STRB        R1,[R0, #+0]
//  125 #endif
//  126 #endif
//  127        
//  128     /* 初始化VIC */
//  129     VICIntEnClr = 0xffffffff;//清所有中断使能,即关中断
        LDR         R0,??TargetResetInit_0+0x8  ;; 0xfffff014
        MOV         R1,#+0
        MVN         R1,R1              ;; #-1
        STR         R1,[R0, #+0]
//  130     VICVectAddr = 0;//默认向量地址寄存器
        MOV         R0,#+0
        LDR         R1,??TargetResetInit_0+0xC  ;; 0xfffff030
        STR         R0,[R1, #+0]
//  131     VICIntSelect = 0;//1:对应的中断请求分配为FIQ。0:对应的中断请求分配为IRQ。
        LDR         R1,??TargetResetInit_0+0x10  ;; 0xfffff00c
        STR         R0,[R1, #+0]
//  132 
//  133     /* 添加自己的代码 */
//  134 
//  135 }
        BX          LR                 ;; return
        DATA
??TargetResetInit_0:
        DC32        0xe01fc000
        DC32        0xe01fc004
        DC32        0xfffff014
        DC32        0xfffff030
        DC32        0xfffff00c
        CFI EndBlock cfiBlock5

        END
//  136 
//  137 /*********************************************************************************************************
//  138 **                            End Of File
//  139 ********************************************************************************************************/
// 
// 80 bytes in segment CODE
// 
// 56 bytes of CODE memory (+ 24 bytes shared)
//
//Errors: none
//Warnings: none

⌨️ 快捷键说明

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