1#! armclang -E --target=arm-arm-none-eabi -mcpu=cortex-m4 -xc 2; command above MUST be in first line (no comment above!) 3 4/* 5;-------- <<< Use Configuration Wizard in Context Menu >>> ------------------- 6*/ 7 8/*--------------------- Flash Configuration ---------------------------------- 9; <h> Flash Configuration 10; <o0> Flash Base Address <0x0-0xFFFFFFFF:8> 11; <o1> Flash Size (in Bytes) <0x0-0xFFFFFFFF:8> 12; </h> 13 *----------------------------------------------------------------------------*/ 14#define __ROM_BASE 0x00000000 15#define __ROM_SIZE 0x00080000 16 17/*--------------------- Embedded RAM Configuration --------------------------- 18; <h> RAM Configuration 19; <o0> RAM Base Address <0x0-0xFFFFFFFF:8> 20; <o1> RAM Size (in Bytes) <0x0-0xFFFFFFFF:8> 21; </h> 22 *----------------------------------------------------------------------------*/ 23#define __RAM_BASE 0x20000000 24#define __RAM_SIZE 0x00040000 25 26/*--------------------- Stack / Heap Configuration --------------------------- 27; <h> Stack / Heap Configuration 28; <o0> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> 29; <o1> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> 30; </h> 31 *----------------------------------------------------------------------------*/ 32#define __STACK_SIZE 0x00000200 33#define __HEAP_SIZE 0x00000C00 34 35/* 36;------------- <<< end of configuration section >>> --------------------------- 37*/ 38 39 40/*---------------------------------------------------------------------------- 41 User Stack & Heap boundary definition 42 *----------------------------------------------------------------------------*/ 43#define __STACK_TOP (__RAM_BASE + __RAM_SIZE) /* starts at end of RAM */ 44#define __HEAP_BASE (AlignExpr(+0, 8)) /* starts after RW_RAM section, 8 byte aligned */ 45 46 47/*---------------------------------------------------------------------------- 48 Scatter File Definitions definition 49 *----------------------------------------------------------------------------*/ 50#define __RO_BASE __ROM_BASE 51#define __RO_SIZE __ROM_SIZE 52 53#define __RW_BASE __RAM_BASE 54#define __RW_SIZE (__RAM_SIZE - __STACK_SIZE - __HEAP_SIZE) 55 56 57LR_ROM __RO_BASE __RO_SIZE { ; load region size_region 58 ER_ROM __RO_BASE __RO_SIZE { ; load address = execution address 59 *.o (RESET, +First) 60 *(InRoot$$Sections) 61 .ANY (+RO) 62 .ANY (+XO) 63 } 64 65 RW_RAM __RW_BASE __RW_SIZE { ; RW data 66 .ANY (+RW +ZI) 67 } 68 69#if __HEAP_SIZE > 0 70 ARM_LIB_HEAP __HEAP_BASE EMPTY __HEAP_SIZE { ; Reserve empty region for heap 71 } 72#endif 73 74 ARM_LIB_STACK __STACK_TOP EMPTY -__STACK_SIZE { ; Reserve empty region for stack 75 } 76} 77