237 lines
7.5 KiB
Plaintext
237 lines
7.5 KiB
Plaintext
|
//================================================================
|
||
|
//
|
||
|
// IAR XLINK command file for the IAR C/C++ Compiler for
|
||
|
// Renesas M16C/R8C
|
||
|
//
|
||
|
// This is an example XLINK command file for use with the
|
||
|
// M30627FHP derivative.
|
||
|
//
|
||
|
// Derivative group: m16c 62p
|
||
|
//
|
||
|
//
|
||
|
// Usage: xlink your_file(s) -f this_file clm16c*.r48
|
||
|
//
|
||
|
// Copyright 2001-2008 IAR Systems AB.
|
||
|
//
|
||
|
// $Revision: 2144 $
|
||
|
//
|
||
|
//================================================================
|
||
|
|
||
|
//================================================================
|
||
|
// The M16C IAR C/EC++ Compiler places code and data into named
|
||
|
// segments which are referred to by the IAR XLINK Linker. The
|
||
|
// table below shows the available segments.
|
||
|
//
|
||
|
// SEGMENT REFERENCE
|
||
|
// =================
|
||
|
//
|
||
|
// Segment Description
|
||
|
// ------- -----------
|
||
|
// BITVARS Bit variables.
|
||
|
// CODE The program code.
|
||
|
// CSTACK The stack used by C or Embedded C++ programs.
|
||
|
// CSTART The startup code.
|
||
|
// DATA16_HEAP Heap data used by malloc and free. Used by CLib and DLib
|
||
|
// FAR_HEAP Heap used by malloc and free in DLib
|
||
|
// DATA20_HEAP Heap used by malloc and free in DLib
|
||
|
//
|
||
|
// x_AC Non-initialized located const objects.
|
||
|
// x_AN Non-initialized located non-const objects.
|
||
|
// x_C Constant data, including string literals.
|
||
|
// x_I Initialized data.
|
||
|
// x_ID Data that is copied to x_I by cstartup.
|
||
|
// x_N Uninitialized data.
|
||
|
// x_Z zero initialized data.
|
||
|
//
|
||
|
// Where x can be one of:
|
||
|
// DATA13 (Range: 0-0x1FFF)
|
||
|
// DATA16 (Range: 0-0xFFFF, except DATA16_ID)
|
||
|
// DATA20 (Range: 0-0xFFFFF)
|
||
|
// FAR (Range: 0-0xFFFFF)
|
||
|
//
|
||
|
// DIFUNCT Pointers to code, typically EC++ constructors
|
||
|
// FLIST Jump table for __tiny_func functions.
|
||
|
// INTVEC Contains reset and interrupt vectors.
|
||
|
// INTVEC1 Contains the fixed reset and interrupt vectors.
|
||
|
// ISTACK The stack used by interrupts and exceptions.
|
||
|
//================================================================
|
||
|
|
||
|
// Define CPU
|
||
|
-cm16c
|
||
|
|
||
|
//================================================================
|
||
|
// USER DEFINITIONS
|
||
|
// Please customize according to your preferences.
|
||
|
//================================================================
|
||
|
|
||
|
// Size of the user stack
|
||
|
// Uncomment for command line use
|
||
|
//-D_CSTACK_SIZE=100
|
||
|
|
||
|
// Size of the interrupt stack
|
||
|
// Uncomment for command line use
|
||
|
//-D_ISTACK_SIZE=40
|
||
|
|
||
|
// Size of the heap
|
||
|
// Uncomment for command line use
|
||
|
//-D_DATA16_HEAP_SIZE=400
|
||
|
//-D_FAR_HEAP_SIZE=400
|
||
|
//-D_DATA20_HEAP_SIZE=400
|
||
|
|
||
|
// Reserved memory
|
||
|
// Reservation of RAM and ROM memory not to be used by the application.
|
||
|
// Preset for use with the E8 emulator.
|
||
|
// NOTE! Set these values to zero to utilize the whole RAM and ROM memory.
|
||
|
-D_RESERVED_RAM_SIZE=80
|
||
|
-D_RESERVED_ROM_SIZE=800
|
||
|
|
||
|
//================================================================
|
||
|
// Memory Definitions
|
||
|
//================================================================
|
||
|
|
||
|
// Memory areas available for the application
|
||
|
-D_USER_RAM_BEGIN=(00400+_RESERVED_RAM_SIZE)
|
||
|
-D_USER_RAM_END=07FFF
|
||
|
-D_DATA_FLASH_BEGIN=0F000
|
||
|
-D_DATA_FLASH_END=0FFFF
|
||
|
-D_USER_ROM_BEGIN=(A0000+_RESERVED_ROM_SIZE)
|
||
|
-D_USER_ROM_END=FFFFF
|
||
|
|
||
|
// Relocatable "bit" segment (must be in near area).
|
||
|
// As BITVARS contains bit addresses, the address has to be recalculated.
|
||
|
// Byte address 400 --> 400 * 8 = bit address 2000
|
||
|
-D_BITVAR_BEGIN=2000 // address 400
|
||
|
-D_BITVAR_END=FFFF // address 1FFF
|
||
|
|
||
|
// ID code and OFS value written to ROM memory
|
||
|
-D_ID_CODE_1=FF
|
||
|
-D_ID_CODE_2=FF
|
||
|
-D_ID_CODE_3=FF
|
||
|
-D_ID_CODE_4=FF
|
||
|
-D_ID_CODE_5=FF
|
||
|
-D_ID_CODE_6=FF
|
||
|
-D_ID_CODE_7=FF
|
||
|
-D_OFS_VALUE=FF
|
||
|
|
||
|
// _OFS2_VALUE has to be defined. It is only used in some R8C devices and will
|
||
|
// not result in any additional code or data for any other device.
|
||
|
-D_OFS2_VALUE=FF
|
||
|
|
||
|
// =======================
|
||
|
// DATA13 RAM
|
||
|
// =======================
|
||
|
|
||
|
-Z(NEAR)DATA13_AN=0-01FFF
|
||
|
-Z(NEAR)DATA13_I=_USER_RAM_BEGIN-01FFF
|
||
|
-Z(NEAR)DATA13_Z,DATA13_N=_USER_RAM_BEGIN-01FFF
|
||
|
|
||
|
// Relocatable "bit" segment. As BITVARS contains bit addresses,
|
||
|
// the desired (byte) address has to be multiplied by 8.
|
||
|
-Z(BIT)BITVARS=_BITVAR_BEGIN-_BITVAR_END
|
||
|
|
||
|
// =======================
|
||
|
// DATA16 RAM
|
||
|
// =======================
|
||
|
|
||
|
// Set up interrupt stack
|
||
|
-Z(NEAR)ISTACK+_ISTACK_SIZE#_USER_RAM_BEGIN-_USER_RAM_END
|
||
|
|
||
|
// Set up user stack
|
||
|
-Z(NEAR)CSTACK+_CSTACK_SIZE#_USER_RAM_BEGIN-_USER_RAM_END
|
||
|
|
||
|
// Set up near heap
|
||
|
-Z(NEAR)DATA16_HEAP+_DATA16_HEAP_SIZE=_USER_RAM_BEGIN-_USER_RAM_END
|
||
|
|
||
|
// Near variables
|
||
|
-Z(NEAR)DATA16_I,DATA16_Z,DATA16_N,DATA16_AN=_USER_RAM_BEGIN-_USER_RAM_END
|
||
|
|
||
|
// User defined near DATA segments
|
||
|
|
||
|
|
||
|
// =======================
|
||
|
// DATA16 ROM
|
||
|
// =======================
|
||
|
// Data flash
|
||
|
-Z(CONST)DATA_FLASH=_DATA_FLASH_BEGIN-_DATA_FLASH_END
|
||
|
|
||
|
// Constant segments (in ROM), reachable for near pointers
|
||
|
// (Use declaration -Z(CONST)DATA16_C if near ROM exists)
|
||
|
|
||
|
// User defined near CONST segments
|
||
|
|
||
|
// =======================
|
||
|
// FAR/DATA20 RAM
|
||
|
// =======================
|
||
|
|
||
|
// Far and huge data segments
|
||
|
-Z(FAR)FAR_I,FAR_Z,FAR_N,FAR_AN=_USER_RAM_BEGIN-_USER_RAM_END
|
||
|
-Z(FAR)FAR_HEAP+_FAR_HEAP_SIZE=_USER_RAM_BEGIN-_USER_RAM_END
|
||
|
-Z(HUGE)DATA20_I,DATA20_Z,DATA20_N,DATA20_AN=_USER_RAM_BEGIN-_USER_RAM_END
|
||
|
-Z(HUGE)DATA20_HEAP+_DATA20_HEAP_SIZE=_USER_RAM_BEGIN-_USER_RAM_END
|
||
|
|
||
|
// User defined far & huge DATA segments
|
||
|
|
||
|
// =======================
|
||
|
// FAR/DATA20 ROM
|
||
|
// =======================
|
||
|
|
||
|
// Fixed interrupt vector table
|
||
|
-Z(CONST)INTVEC1=FFFDC-FFFFF
|
||
|
|
||
|
|
||
|
// Special page table
|
||
|
-Z(CONST)FLIST=FFE00-FFFDB
|
||
|
|
||
|
// Variable vector table (growing downwards from _USER_ROM_END)
|
||
|
// The added -1 is too assure that all vectors start at even
|
||
|
// addresses.
|
||
|
-Z(CONST)INTVEC=D0000-(_USER_ROM_END-1)
|
||
|
|
||
|
// Constant and initializer segments (in ROM)
|
||
|
-Z(FARCONST)FAR_ID=_USER_ROM_BEGIN-_USER_ROM_END
|
||
|
-Z(FARCONST)FAR_C=_USER_ROM_BEGIN-_USER_ROM_END
|
||
|
-Z(HUGECONST)DATA20_C,DATA20_ID,CHECKSUM=_USER_ROM_BEGIN-_USER_ROM_END
|
||
|
-Z(FARCONST)DATA16_ID,DATA13_ID,DIFUNCT=_USER_ROM_BEGIN-_USER_ROM_END
|
||
|
|
||
|
// User defined far & huge CONST segments
|
||
|
|
||
|
// CODE segments
|
||
|
// TINYFUNC code must be located above 0xF0000
|
||
|
-P(CODE)TINYFUNC=F0000-_USER_ROM_END
|
||
|
|
||
|
// Startup code
|
||
|
-P(CODE)CSTART=D0000-_USER_ROM_END
|
||
|
|
||
|
// "Regular" code
|
||
|
-P(CODE)CODE=_USER_ROM_BEGIN-_USER_ROM_END
|
||
|
// User defined CODE segments
|
||
|
|
||
|
// ========================
|
||
|
// IAR C library formatting
|
||
|
// ========================
|
||
|
|
||
|
// Uncomment for command line use
|
||
|
//-e_small_write=_formatted_write
|
||
|
//-e_medium_read=_formatted_read
|
||
|
|
||
|
// ========================
|
||
|
// Output files
|
||
|
// ========================
|
||
|
// Use the -O option to create one or more output files
|
||
|
// at the same link session. Formats flags, file name and
|
||
|
// extension is optional. Please un-comment the wanted
|
||
|
// output formats below.
|
||
|
//
|
||
|
// CAUTION: Do not combine other output formats with -rt (special
|
||
|
// UBROF for Terminal I/O in C-SPY). Output files are valid but
|
||
|
// contain code that expects to be run under C-SPY.
|
||
|
|
||
|
// Motorola output
|
||
|
//-Omotorola=.mot
|
||
|
|
||
|
// IEEE-695 output with format flags for the Renesas debugger
|
||
|
//-Oieee695,lbm=.x30
|
||
|
|
||
|
// ELF/DWARF output with format flags for the Renesas debugger
|
||
|
//-Oelf,spc=.elf
|