# Sample Linker Command File for CodeWarrior for ColdFire | |
KEEP_SECTION {.vectortable} | |
# Memory ranges | |
MEMORY { | |
vectorrom (RX) : ORIGIN = 0x00000000, LENGTH = 0x00000400 | |
cfmprotrom (RX) : ORIGIN = 0x00000400, LENGTH = 0x00000020 | |
code (RX) : ORIGIN = 0x00000500, LENGTH = 0x0001FB00 | |
userram (RWX) : ORIGIN = 0x20000000, LENGTH = 0x00004000 | |
} | |
SECTIONS { | |
# Heap and Stack sizes definition | |
___heap_size = 0x4; | |
___stack_size = 0x100; | |
# MCF52221 Derivative Memory map definitions from linker command files: | |
# __IPSBAR, __RAMBAR, __RAMBAR_SIZE, __FLASHBAR, __FLASHBAR_SIZE linker | |
# symbols must be defined in the linker command file. | |
# Memory Mapped Registers (IPSBAR= 0x40000000) | |
___IPSBAR = 0x40000000; | |
# 16 Kbytes Internal SRAM | |
___RAMBAR = 0x20000000; | |
___RAMBAR_SIZE = 0x00004000; | |
# 128 KByte Internal Flash Memory | |
___FLASHBAR = 0x00000000; | |
___FLASHBAR_SIZE = 0x00020000; | |
___SP_AFTER_RESET = ___RAMBAR + ___RAMBAR_SIZE - 4; | |
.userram : {} > userram | |
.code : {} > code | |
.vectors : | |
{ | |
exceptions.c(.vectortable) | |
. = ALIGN (0x4); | |
} > vectorrom | |
.cfmprotect : | |
{ | |
*(.cfmconfig) | |
. = ALIGN (0x4); | |
} > cfmprotrom | |
.text : | |
{ | |
*(.text) | |
. = ALIGN (0x4); | |
*(.rodata) | |
. = ALIGN (0x4); | |
___ROM_AT = .; | |
___DATA_ROM = .; | |
} >> code | |
.data : AT(___ROM_AT) | |
{ | |
___DATA_RAM = .; | |
. = ALIGN(0x4); | |
*(.exception) | |
. = ALIGN(0x4); | |
__exception_table_start__ = .; | |
EXCEPTION | |
__exception_table_end__ = .; | |
___sinit__ = .; | |
STATICINIT | |
__START_DATA = .; | |
*(.data) | |
. = ALIGN (0x4); | |
__END_DATA = .; | |
__START_SDATA = .; | |
*(.sdata) | |
. = ALIGN (0x4); | |
__END_SDATA = .; | |
___DATA_END = .; | |
__SDA_BASE = .; | |
. = ALIGN (0x4); | |
} >> userram | |
.bss : | |
{ | |
___BSS_START = .; | |
__START_SBSS = .; | |
*(.sbss) | |
. = ALIGN (0x4); | |
*(SCOMMON) | |
__END_SBSS = .; | |
__START_BSS = .; | |
*(.bss) | |
. = ALIGN (0x4); | |
*(COMMON) | |
__END_BSS = .; | |
___BSS_END = .; | |
. = ALIGN(0x4); | |
} >> userram | |
.custom : | |
{ | |
___HEAP_START = .; | |
___heap_addr = ___HEAP_START; | |
___HEAP_END = ___HEAP_START + ___heap_size; | |
___SP_END = ___HEAP_END; | |
___SP_INIT = ___SP_END + ___stack_size; | |
. = ALIGN (0x4); | |
} >> userram | |
# ___VECTOR_RAM = ADDR(.vectorram); | |
__SP_INIT = ___SP_INIT; | |
_romp_at = ___ROM_AT + SIZEOF(.data); | |
.romp : AT(_romp_at) | |
{ | |
__S_romp = _romp_at; | |
WRITEW(___ROM_AT); | |
WRITEW(ADDR(.data)); | |
WRITEW(SIZEOF(.data)); | |
WRITEW(0); | |
WRITEW(0); | |
WRITEW(0); | |
} | |
} |