Newer
Older
mbed-os / targets / TARGET_Analog_Devices / TARGET_ADUCM302X / TARGET_ADUCM3029 / TOOLCHAIN_IAR / ADuCM3029.icf
@Jaeden Amero Jaeden Amero on 10 Sep 2020 3 KB Use boot stack size from config system
/******************************************************************************
*  File: ADuCM3029.icf
*  ILINK Configuration File for Analog Devices ADuCM3029 processor
*
*  Copyright (c) 2011 - 2014 ARM LIMITED
*  Copyright (c) 2016 - 2018 Analog Devices, Inc.
*
*  All rights reserved.
*  Redistribution and use in source and binary forms, with or without
*  modification, are permitted provided that the following conditions are met:
*  - Redistributions of source code must retain the above copyright
*    notice, this list of conditions and the following disclaimer.
*  - Redistributions in binary form must reproduce the above copyright
*    notice, this list of conditions and the following disclaimer in the
*    documentation and/or other materials provided with the distribution.
*  - Neither the name of ARM nor the names of its contributors may be used
*    to endorse or promote products derived from this software without
*    specific prior written permission.
*
*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
*  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
*  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
*  ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
*  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
*  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
*  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
*  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
*  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
*  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
*  POSSIBILITY OF SUCH DAMAGE.
******************************************************************************/

if (!isdefinedsymbol(MBED_APP_START)) {
    define symbol MBED_APP_START = 0;
}

if (!isdefinedsymbol(MBED_APP_SIZE)) {
    define symbol MBED_APP_SIZE = 0x40000;
}

if (!isdefinedsymbol(MBED_CONF_TARGET_BOOT_STACK_SIZE)) {
    define symbol MBED_CONF_TARGET_BOOT_STACK_SIZE = 0x400;
}

define symbol ADUCM_SECTOR_SIZE = 0x800;

define symbol ADUCM_VECTOR_SIZE = 0x1A0;

define memory mem with size               = 4G;
define region ROM_PAGE0_INTVEC            = mem:[from MBED_APP_START size ADUCM_VECTOR_SIZE];
define region ROM_PAGE0_CHECKSUM          = mem:[from MBED_APP_START+ADUCM_VECTOR_SIZE size ADUCM_SECTOR_SIZE-ADUCM_VECTOR_SIZE];
define region ROM_REGION                  = mem:[from MBED_APP_START+ADUCM_SECTOR_SIZE size MBED_APP_SIZE-ADUCM_SECTOR_SIZE];
define region RAM_bank1_region            = mem:[from 0x20000200 size 0x00003E00];
define region RAM_bank2_region            = mem:[from 0x20004000 size 0x00004000]
                                          | mem:[from 0x20040000 size 0x00007000];
define block CSTACK   with alignment = 16, size = MBED_CONF_TARGET_BOOT_STACK_SIZE { };
define block HEAP     with alignment = 16, size = 0x2000 { };
do not initialize                         { section .noinit };
initialize by copy                        { rw };
place at start of ROM_PAGE0_INTVEC        { ro section .vectors };
place in          ROM_PAGE0_CHECKSUM      { ro section .checksum };
place in          ROM_REGION              { ro };
place at end of   RAM_bank1_region        { block CSTACK };
place in          RAM_bank1_region        { rw section .data };
place in          RAM_bank1_region        { block HEAP };
place in          RAM_bank2_region        { rw };