#! 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 0x0001B000
|
|
/*--------------------- 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 (0x02000000 + __ROM_SIZE)
|
#define __RAM_SIZE (0x0002F800 - __ROM_SIZE)
|
|
/*--------------------- 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 0x00003800
|
#define __HEAP_SIZE 0x00000000
|
|
/*
|
;------------- <<< end of configuration section >>> ---------------------------
|
*/
|
|
|
/*----------------------------------------------------------------------------
|
User Stack & Heap boundary definition
|
*----------------------------------------------------------------------------*/
|
#define __STACK_TOP (__RAM_BASE + __RAM_SIZE) /* starts at end of RAM */
|
#define __HEAP_BASE (AlignExpr(+0, 8)) /* starts after RW_RAM section, 8 byte aligned */
|
|
|
/*----------------------------------------------------------------------------
|
Scatter File Definitions definition
|
*----------------------------------------------------------------------------*/
|
#define __RO_BASE __ROM_BASE
|
#define __RO_SIZE __ROM_SIZE
|
#define __RO_USR_SIZE 0xA0
|
|
#define __RW_BASE __RAM_BASE
|
#define __RW_SIZE (__RAM_SIZE - __STACK_SIZE - __HEAP_SIZE)
|
|
|
LR_ROM __RO_BASE __RO_SIZE - __RO_USR_SIZE { ; load region size_region
|
ER_ROM __RO_BASE __RO_SIZE - __RO_USR_SIZE { ; load address = execution address
|
*.o (RESET, +First)
|
*(InRoot$$Sections)
|
.ANY (+RO)
|
.ANY (+XO)
|
}
|
|
RW_RAM __RW_BASE UNINIT 0x0000008 { ; noinit data
|
*(.bss.noinit)
|
}
|
|
RW_RAM1 (__RW_BASE + 8) (__RW_SIZE - 8) { ; RW data
|
.ANY (+RW)
|
.ANY (+ZI) ; Takes no space in the Load Region
|
*(.XIP_SECTION)
|
}
|
|
#if __HEAP_SIZE > 0
|
ARM_LIB_HEAP __HEAP_BASE EMPTY __HEAP_SIZE { ; Reserve empty region for heap
|
}
|
#endif
|
|
ARM_LIB_STACK __STACK_TOP EMPTY -__STACK_SIZE { ; Reserve empty region for stack
|
}
|
}
|
|
LR_ROM1 +0 __RO_USR_SIZE { ; load region size_region
|
USR +0 __RO_USR_SIZE { ; load address = execution address
|
*(.ZBOOT_SECTION)
|
*(.ZBUILD_SECTION)
|
}
|
}
|
|
ScatterAssert(__ROM_SIZE >= (LoadBase(LR_ROM1) + LoadLength(LR_ROM1)))
|