Newer
Older
mbed-os / targets / TARGET_NUVOTON / TARGET_NUC472 / device / TOOLCHAIN_ARM_STD / TARGET_NU_XRAM_SUPPORTED / NUC472.sct
@Jaeden Amero Jaeden Amero on 10 Sep 2020 1 KB Use boot stack size from config system
#! armcc -E

#if !defined(MBED_APP_START)
  #define MBED_APP_START 0x00000000
#endif

#if !defined(MBED_APP_SIZE)
  #define MBED_APP_SIZE 0x00080000
#endif

#if !defined(MBED_CONF_TARGET_BOOT_STACK_SIZE)
  #define MBED_CONF_TARGET_BOOT_STACK_SIZE      0x400
#endif

LR_IROM1 MBED_APP_START {
  ER_IROM1 MBED_APP_START {  ; load address = execution address
   *(RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  
  
  ARM_LIB_STACK 0x20000000 EMPTY MBED_CONF_TARGET_BOOT_STACK_SIZE {
  }

  /* VTOR[TBLOFF] alignment requires:
   *
   * 1. Minumum 32-word
   * 2. Rounding up to the next power of two of table size
   */
  ER_IRAMVEC AlignExpr(+0, 1024) EMPTY (4*(16 + 142)) {  ; Reserve for vectors
  }
  
  RW_m_crash_data AlignExpr(+0, 0x100) EMPTY 0x100 { ; Reserve for crash data storage
  }

  RW_IRAM1 AlignExpr(+0, 16) {  ; 16 byte-aligned
   .ANY (+RW +ZI)
  }

  ; Too large to place into internal SRAM. So place into external SRAM instead.
  ER_XRAM1 0x60000000 {
    *lwip_* (+ZI)
    aes.o (+ZI)
    mesh_system.o (+ZI)
  }
  
  ; Extern SRAM for HEAP
  ARM_LIB_HEAP AlignExpr(+0, 16) EMPTY (0x60000000 + 0x100000 - AlignExpr(ImageLimit(ER_XRAM1), 16)) {
  }
}
ScatterAssert(LoadLimit(LR_IROM1) <= (MBED_APP_START + MBED_APP_SIZE))    ; 512 KB APROM
ScatterAssert(ImageLimit(RW_IRAM1) <= 0x20010000)   ; 64 KB SRAM (internal)
ScatterAssert(ImageLimit(ARM_LIB_HEAP) <= 0x60100000)   ; 1 MB SRAM (external)