/* * Copyright (C) 2013-2016 Fabio Utzig, http://fabioutzig.com * (C) 2016 flabbergast <s3+flabbergast@sdfeu.org> * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ /* * KL26Z64 memory setup. */ MEMORY { flash0 : org = 0x00000000, len = 0x100 flash1 : org = 0x00000400, len = 0x10 flash2 : org = 0x00000410, len = 62k - 0x410 flash3 : org = 0x0000F800, len = 2k flash4 : org = 0x00000000, len = 0 flash5 : org = 0x00000000, len = 0 flash6 : org = 0x00000000, len = 0 flash7 : org = 0x00000000, len = 0 ram0 : org = 0x1FFFF800, len = 8k ram1 : org = 0x00000000, len = 0 ram2 : org = 0x00000000, len = 0 ram3 : org = 0x00000000, len = 0 ram4 : org = 0x00000000, len = 0 ram5 : org = 0x00000000, len = 0 ram6 : org = 0x00000000, len = 0 ram7 : org = 0x00000000, len = 0 } /* Flash region for the configuration bytes.*/ SECTIONS { .cfmprotect : ALIGN(4) SUBALIGN(4) { KEEP(*(.cfmconfig)) } > flash1 } /* For each data/text section two region are defined, a virtual region and a load region (_LMA suffix).*/ /* Flash region to be used for exception vectors.*/ REGION_ALIAS("VECTORS_FLASH", flash0); REGION_ALIAS("VECTORS_FLASH_LMA", flash0); /* Flash region to be used for constructors and destructors.*/ REGION_ALIAS("XTORS_FLASH", flash2); REGION_ALIAS("XTORS_FLASH_LMA", flash2); /* Flash region to be used for code text.*/ REGION_ALIAS("TEXT_FLASH", flash2); REGION_ALIAS("TEXT_FLASH_LMA", flash2); /* Flash region to be used for read only data.*/ REGION_ALIAS("RODATA_FLASH", flash2); REGION_ALIAS("RODATA_FLASH_LMA", flash2); /* Flash region to be used for various.*/ REGION_ALIAS("VARIOUS_FLASH", flash2); REGION_ALIAS("VARIOUS_FLASH_LMA", flash2); /* Flash region to be used for RAM(n) initialization data.*/ REGION_ALIAS("RAM_INIT_FLASH_LMA", flash2); /* RAM region to be used for Main stack. This stack accommodates the processing of all exceptions and interrupts.*/ REGION_ALIAS("MAIN_STACK_RAM", ram0); /* RAM region to be used for the process stack. This is the stack used by the main() function.*/ REGION_ALIAS("PROCESS_STACK_RAM", ram0); /* RAM region to be used for data segment.*/ REGION_ALIAS("DATA_RAM", ram0); REGION_ALIAS("DATA_RAM_LMA", flash2); /* RAM region to be used for BSS segment.*/ REGION_ALIAS("BSS_RAM", ram0); /* RAM region to be used for the default heap.*/ REGION_ALIAS("HEAP_RAM", ram0); __eeprom_workarea_start__ = ORIGIN(flash3); __eeprom_workarea_size__ = LENGTH(flash3); __eeprom_workarea_end__ = __eeprom_workarea_start__ + __eeprom_workarea_size__; /* Generic rules inclusion.*/ INCLUDE rules.ld