The command-line options to the linker give some control over
the placement of data and code, but complete control of placement
requires more detailed instructions than can be entered on the command
line.
Situations where scatter-loading is either required or very
useful:
Complex
memory maps
Code and data that must be placed
into many distinct areas of memory require detailed instructions
on where to place the sections in the memory space.
Different types of memory
Many systems contain a variety of physical memory
devices such as flash, ROM, SDRAM, and fast SRAM. A scatter-loading
description can match the code and data with the most appropriate
type of memory. For example, interrupt code might be placed into
fast SRAM to improve interrupt response time but infrequently-used
configuration information might be placed into slower flash memory.
Memory-mapped peripherals
The scatter-loading description can place a data
section at a precise address in the memory map so that memory mapped
peripherals can be accessed.
Functions at a constant location
A function can be placed at the same location in
memory even though the surrounding application has been modified
and recompiled. This is useful for jump table implementation.
Using symbols to identify the
heap and stack
Symbols can be defined for
the heap and stack location when the application is linked.
Scatter-loading is usually required for implementing embedded
systems because these use ROM, RAM, and memory-mapped peripherals.
This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.
ARM websites use two types of cookie: (1) those that enable the site to function and perform as required; and (2) analytical cookies which anonymously track visitors only while using the site. If you are not happy with this use of these cookies please review our Privacy Policy to learn how they can be disabled. By disabling cookies some features of the site will not work.