The initial pointer to the stack area can be selected at boot, by setting the desired memory address in the first word of the IV table, which corresponds to the beginning of the binary image loaded in flash.
This pointer may be set at compile time, in different ways. The simple example from Chapter 4, The Boot-Up Procedure, shows how it is possible to assign a specific area for the stack, or using symbols exported from the linker script.
Using the linker script as a central point to describe memory regions and segments makes the code more portable across similar platforms.
Since our STM32F407 provides an additional, tightly coupled, 64 KB memory bank at address 0x10000000, we may want to reserve its lower 16 KB for the execution ...