| # Sample Linker Command File for CodeWarrior for ColdFire MCF51CN128 | |
| # Memory ranges | |
| MEMORY { | |
| code (RX) : ORIGIN = 0x00000410, LENGTH = 0x0001FBF0 | |
| userram (RWX) : ORIGIN = 0x00800000, LENGTH = 0x00006000 | |
| } | |
| SECTIONS { | |
| # Heap and Stack sizes definition | |
| ___heap_size = 0x04; | |
| ___stack_size = 0x0200; | |
| # MCF51CN128 Derivative Memory map definitions from linker command files: | |
| # ___RAM_ADDRESS, ___RAM_SIZE, ___FLASH_ADDRESS, ___FLASH_SIZE linker | |
| # symbols must be defined in the linker command file. | |
| # 24 Kbytes Internal SRAM | |
| ___RAM_ADDRESS = 0x00800000; | |
| ___RAM_SIZE = 0x00006000; | |
| # 128 KByte Internal Flash Memory | |
| ___FLASH_ADDRESS = 0x00000000; | |
| ___FLASH_SIZE = 0x00020000; | |
| .userram : {} > userram | |
| .code : {} > code | |
| .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 | |
| __SP_INIT = ___SP_INIT; | |
| ___SP_AFTER_RESET = __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); | |
| } | |
| } |