#! armclang -E --target=arm-arm-none-eabi -mcpu=cortex-m0 -xc
; command above MUST be in first line (no comment above!)

/*
;-------- <<< Use Configuration Wizard in Context Menu >>> ------------------
*/

/*--------------------- Flash Configuration -------------------------
; <h> Flash Configuration
;   <o0> Flash Base Address <0x0-0xFFFFFFFF:8>
;   <o1> Flash Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
 *----------------------------------------------------------------------------*/
#define __ROM_BASE     0x00000000
#define __ROM_SIZE     0x00200000

/*--------------------- Embedded RAM Configuration ---------------------------
; <h> RAM Configuration
;   <o0> RAM Base Address    <0x0-0xFFFFFFFF:8>
;   <o1> RAM Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
 *----------------------------------------------------------------------------*/
#define __RAM_BASE     0x20000000
#define __RAM_SIZE     0x00200000

/*--------------------- Stack / Heap Configuration ---------------------------
; <h> Stack / Heap Configuration
;   <o0> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
;   <o1> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
 *----------------------------------------------------------------------------*/
#define __STACK_SIZE       0x00000400
#define __HEAP_SIZE        0x00000C00


/*----------------------------------------------------------------------------
  User Stack & Heap boundery definition
 *----------------------------------------------------------------------------*/
#define __STACK_TOP        (__RAM_BASE + __RAM_SIZE)
#define __HEAP_BASE        (__RAM_BASE + __RAM_SIZE - __STACK_SIZE - __HEAP_SIZE)


/*----------------------------------------------------------------------------
  Scatter File Definitions definition
 *----------------------------------------------------------------------------*/
#define __RO_BASE         __ROM_BASE
#define __RO_SIZE         __ROM_SIZE

#define __RW_BASE        (__RAM_BASE        )
#define __RW_SIZE        (__RAM_SIZE - __STACK_SIZE - __HEAP_SIZE)



LR_ROM __RO_BASE __RO_SIZE  {                       ; load region size_region
  ER_ROM __RO_BASE __RO_SIZE  {                     ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  
  RW_RAM __RW_BASE __RW_SIZE  {                     ; RW data
   .ANY (+RW +ZI)
  }

  ARM_LIB_HEAP  __HEAP_BASE EMPTY  __HEAP_SIZE  { ; Reserve empty region for heap
  }

  ARM_LIB_STACK __STACK_TOP EMPTY -__STACK_SIZE { ; Reserve empty region for stack 
  }
}
