#! armcc -E
; 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 
  }
}
