You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
216 lines
8.5 KiB
Plaintext
216 lines
8.5 KiB
Plaintext
/*;******************** (C) COPYRIGHT 2005 STMicroelectronics ******************
|
|
;* File Name : lnkarm_flash.xcl
|
|
;* Author : MCD Application Team
|
|
;* Date First Issued : 03/10/2006
|
|
;* Description : XLINK command file for EWARM/ICCARM
|
|
;* : Usage: xlink -f lnkarm <your_object_file(s)>
|
|
;* : -s <program start label> <C/C++ runtime library>
|
|
;*******************************************************************************
|
|
; History:
|
|
; 07/17/2006 : V1.0
|
|
; 03/10/2006 : V0.1
|
|
;*******************************************************************************
|
|
; THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
|
|
; WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
|
|
; AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
|
|
; INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
|
|
; CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
|
|
; INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
|
|
;******************************************************************************/
|
|
|
|
// Embedded Flash (256/128/64Kbytes)
|
|
// The user has to change the flash memory length depending STR75xFxx devices
|
|
|
|
// Code memory in flash
|
|
-DROMSTART=0x20000000
|
|
-DROMEND=0x2003FFFF //0x2001FFFF;0x200FFFF
|
|
|
|
// Data memory
|
|
-DRAMSTART=0x40000000
|
|
-DRAMEND=0x40003FFF
|
|
|
|
|
|
//*************************************************************************
|
|
// -------------
|
|
// Code segments - may be placed anywhere in memory.
|
|
// -------------
|
|
//
|
|
// INTVEC -- Exception vector table.
|
|
// SWITAB -- Software interrupt vector table.
|
|
// ICODE -- Startup (cstartup) and exception code.
|
|
// DIFUNCT -- Dynamic initialization vectors used by C++.
|
|
// CODE -- Compiler generated code.
|
|
// CODE_I -- Compiler generated code declared __ramfunc (executes in RAM)
|
|
// CODE_ID -- Initializer for CODE_I (ROM).
|
|
//
|
|
// -------------
|
|
// Data segments - may be placed anywhere in memory.
|
|
// -------------
|
|
//
|
|
// CSTACK -- The stack used by C/C++ programs (system and user mode).
|
|
// IRQ_STACK -- The stack used by IRQ service routines.
|
|
// SVC_STACK -- The stack used in supervisor mode
|
|
// UND_STACK -- The stack used in Und mode
|
|
// ABT_STACK -- The stack used in Abort mode
|
|
// FIQ_STACK -- The stack used by FIQ service routines
|
|
// HEAP -- The heap used by malloc and free in C and new and
|
|
// delete in C++.
|
|
// INITTAB -- Table containing addresses and sizes of segments that
|
|
// need to be initialized at startup (by cstartup).
|
|
// CHECKSUM -- The linker places checksum byte(s) in this segment,
|
|
// when the -J linker command line option is used.
|
|
// DATA_y -- Data objects.
|
|
//
|
|
// Where _y can be one of:
|
|
//
|
|
// _AN -- Holds uninitialized located objects, i.e. objects with
|
|
// an absolute location given by the @ operator or the
|
|
// #pragma location directive. Since these segments
|
|
// contain objects which already have a fixed address,
|
|
// they should not be mentioned in this linker command
|
|
// file.
|
|
// _C -- Constants (ROM).
|
|
// _I -- Initialized data (RAM).
|
|
// _ID -- The original content of _I (copied to _I by cstartup) (ROM).
|
|
// _N -- Uninitialized data (RAM).
|
|
// _Z -- Zero initialized data (RAM).
|
|
//
|
|
// Note: Be sure to use end values for the defined address ranges.
|
|
// Otherwise, the linker may allocate space outside the
|
|
// intended memory range.
|
|
//*************************************************************************
|
|
|
|
|
|
//************************************************
|
|
// Inform the linker about the CPU family used.
|
|
//************************************************
|
|
|
|
-carm
|
|
|
|
//*************************************************************************
|
|
// Segment placement - General information
|
|
//
|
|
// All numbers in the segment placement command lines below are interpreted
|
|
// as hexadecimal unless they are immediately preceded by a '.', which
|
|
// denotes decimal notation.
|
|
//
|
|
// When specifying the segment placement using the -P instead of the -Z
|
|
// option, the linker is free to split each segment into its segment parts
|
|
// and randomly place these parts within the given ranges in order to
|
|
// achieve a more efficient memory usage. One disadvantage, however, is
|
|
// that it is not possible to find the start or end address (using
|
|
// the assembler operators .sfb./.sfe.) of a segment which has been split
|
|
// and reformed.
|
|
//
|
|
// When generating an output file which is to be used for programming
|
|
// external ROM/Flash devices, the -M linker option is very useful
|
|
// (see xlink.pdf for details).
|
|
//*************************************************************************
|
|
|
|
|
|
//*************************************************************************
|
|
// Read-only segments mapped to ROM.
|
|
//*************************************************************************
|
|
|
|
//************************************************
|
|
// Address range for reset and exception
|
|
// vectors (INTVEC).
|
|
//************************************************
|
|
|
|
-Z(CODE)INTVEC=ROMSTART-ROMEND
|
|
|
|
//************************************************
|
|
// Startup code and exception routines (ICODE).
|
|
//************************************************
|
|
|
|
-Z(CODE)ICODE,DIFUNCT=ROMSTART-ROMEND
|
|
-Z(CODE)SWITAB=ROMSTART-ROMEND
|
|
|
|
//************************************************
|
|
// Code segments may be placed anywhere.
|
|
//************************************************
|
|
|
|
-Z(CODE)CODE=ROMSTART-ROMEND
|
|
|
|
//************************************************
|
|
// Original ROM location for __ramfunc code copied
|
|
// to and executed from RAM.
|
|
//************************************************
|
|
|
|
-Z(CONST)CODE_ID=ROMSTART-ROMEND
|
|
|
|
//************************************************
|
|
// Various constants and initializers.
|
|
//************************************************
|
|
|
|
-Z(CONST)INITTAB,DATA_ID,DATA_C=ROMSTART-ROMEND
|
|
-Z(CONST)CHECKSUM=ROMSTART-ROMEND
|
|
|
|
|
|
//*************************************************************************
|
|
// Read/write segments mapped to RAM.
|
|
//*************************************************************************
|
|
|
|
//************************************************
|
|
// Data segments.
|
|
//************************************************
|
|
|
|
-Z(DATA)DATA_I,DATA_Z,DATA_N=RAMSTART-RAMEND
|
|
|
|
//************************************************
|
|
// __ramfunc code copied to and executed from RAM.
|
|
//************************************************
|
|
|
|
-Z(DATA)CODE_I=RAMSTART-RAMEND
|
|
|
|
//************************************************
|
|
// ICCARM produces code for __ramfunc functions in
|
|
// CODE_I segments. The -Q XLINK command line
|
|
// option redirects XLINK to emit the code in the
|
|
// CODE_ID segment instead, but to keep symbol and
|
|
// debug information associated with the CODE_I
|
|
// segment, where the code will execute.
|
|
//************************************************
|
|
|
|
-QCODE_I=CODE_ID
|
|
|
|
//*************************************************************************
|
|
// Stack and heap segments.
|
|
//*************************************************************************
|
|
|
|
// Add size >0 for ABT_Stack, UND_Stack if you need them.
|
|
// size must be 8 byte aligned.
|
|
|
|
-D_CSTACK_SIZE=0x100
|
|
-D_SVC_STACK_SIZE=0x400
|
|
-D_IRQ_STACK_SIZE=0x400
|
|
-D_FIQ_STACK_SIZE=0x40
|
|
-D_ABT_STACK_SIZE=0x0
|
|
-D_UND_STACK_SIZE=0x0
|
|
-D_HEAP_SIZE=0x10
|
|
|
|
-Z(DATA)CSTACK+_CSTACK_SIZE=RAMSTART-RAMEND
|
|
-Z(DATA)SVC_STACK+_SVC_STACK_SIZE=RAMSTART-RAMEND
|
|
-Z(DATA)ABT_STACK+_ABT_STACK_SIZE=RAMSTART-RAMEND
|
|
-Z(DATA)UND_STACK+_UND_STACK_SIZE=RAMSTART-RAMEND
|
|
-Z(DATA)FIQ_STACK+_FIQ_STACK_SIZE=RAMSTART-RAMEND
|
|
-Z(DATA)IRQ_STACK+_IRQ_STACK_SIZE=RAMSTART-RAMEND
|
|
-Z(DATA)HEAP+_HEAP_SIZE=RAMSTART-RAMEND
|
|
|
|
//*************************************************************************
|
|
// ELF/DWARF support.
|
|
//
|
|
// Uncomment the line "-Felf" below to generate ELF/DWARF output.
|
|
// Available format specifiers are:
|
|
//
|
|
// "-yn": Suppress DWARF debug output
|
|
// "-yp": Multiple ELF program sections
|
|
// "-yas": Format suitable for debuggers from ARM Ltd (also sets -p flag)
|
|
//
|
|
// "-Felf" and the format specifiers can also be supplied directly as
|
|
// command line options, or selected from the Xlink Output tab in the
|
|
// IAR Embedded Workbench.
|
|
//*************************************************************************
|
|
|
|
// -Felf
|