CMSIS-Core (Cortex-M): Scatter-Loading description file \<device\>_ac<5|6>.sct

| CMSIS-Core (Cortex-M) Version 5.6.0 CMSIS-Core support for Cortex-M processor-based devices

- Main Page
- Usage and Description
- Reference

All Data Structures Files Functions Variables Enumerations Enumerator Groups Pages
Scatter-Loading description file <device>_ac<5|6>.sct

A scatter file for linking is required when using a C startup file.

The Scatter-Loading description file <device>_ac<5|6>.sct contains regions for:

- Code (read-only data, execute-only data)
- RAM (read/write data, zero-initialized data)
- Stack
- Heap
- Stack seal (Armv8-M/v8.1-M)
- CMSE veneer (Armv8-M/v8.1-M)

Within the scatter file, the user needs to specify a set of macros. The scatter file is passed through the C preprocessor which uses these macros to calculate the start address and the size of the different regions.

/*--------------------- 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 0x00080000
/*--------------------- 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 0x00040000
/*--------------------- 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 0x00000200
#define __HEAP_SIZE 0x00000C00
/*--------------------- CMSE Veneer Configuration ---------------------------
; <h> CMSE Veneer Configuration
; <o0> CMSE Veneer Size (in Bytes) <0x0-0xFFFFFFFF:32>
; </h>
*----------------------------------------------------------------------------*/
#define __CMSEVENEER_SIZE 0x200

Note
  The stack is placed at the end of the available RAM and is growing downwards whereas the Heap is placed after the application data and growing upwards.

# Preprocessor command

The scatter file uses different preprocessor commands for Arm Compiler V6 and Arm Compiler V5

- AC6: #! armclang -E –target=arm-arm-none-eabi -mcpu=<mcpu> -xc
- AC5: #! armcc -E