Newer
Older
mbed-os / targets / TARGET_Samsung / TARGET_SIDK_S5JS100 / device / TOOLCHAIN_IAR / sidk_s5js100.icf
@Jaeden Amero Jaeden Amero on 10 Sep 2020 2 KB Use boot stack size from config system
/****************************************************************************
 *
 * Copyright 2020 Samsung Electronics All Rights Reserved.
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
 * either express or implied. See the License for the specific
 * language governing permissions and limitations under the License.
 *
 ****************************************************************************/

/* Linker file for the IAR Compiler for ARM */
/* Specials */
/* Meory Regions */
define symbol S5JS100_BOOTMEM_BASE     = 0x00000000;
define symbol S5JS100_BOOTMEM_END     = S5JS100_BOOTMEM_BASE + 8K;
define symbol S5JS100_IRAM_BASE     = 0x00100000;
define symbol S5JS100_IRAM_END      = S5JS100_IRAM_BASE + 512K;
define symbol S5JS100_CODE_BASE     = 0x406F4000;
define symbol S5JS100_CODE_END      = S5JS100_CODE_BASE + 1492K;
define symbol S5JS100_FLASH_BASE    = 0x40000000;

/* Stack Size & Heap Size*/
if (!isdefinedsymbol(MBED_CONF_TARGET_BOOT_STACK_SIZE)) {
    define symbol MBED_CONF_TARGET_BOOT_STACK_SIZE = 0x400;
}

define symbol CSTACK_SIZE   = MBED_CONF_TARGET_BOOT_STACK_SIZE;
define symbol __ICFEDIT_size_heap__   = 0x50000;

/*Meory regions*/
define memory mem with size = 4G;
define region VECTOR_REGION = mem:[from S5JS100_BOOTMEM_BASE to S5JS100_BOOTMEM_END];
define region ROM_REGION    = mem:[from S5JS100_CODE_BASE to S5JS100_CODE_END];
define region IRAM_REGION   = mem:[from S5JS100_IRAM_BASE to S5JS100_IRAM_END];

define block CSTACK with alignment = 8, size = CSTACK_SIZE { };
define block HEAP   with alignment = 8, size = __ICFEDIT_size_heap__ { };
define block RW     { readwrite };
define block ZI     { zi };

initialize by copy  { readwrite };
do not initialize   { section .noinit };

place at address mem:S5JS100_CODE_BASE { readonly section .intvec}; 
/* place at address mem:S5JS100_BOOTMEM_BASE { readwrite section .isr_vector }; */
place in ROM_REGION     { readonly };
place in IRAM_REGION    { block RW, block ZI, block HEAP, block CSTACK};