I'm trying to write a linker script for my first firmware for STM32F103C8T6 microcontroller. I have an example script that works. What I'm trying to understand is why it works.
The linker script I have defines two memory locations:
MEMORY
{
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 64K
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 32K
}
Official STM32 programming manual section 2.2 states that "Code" memory section starts with address 0x00000000
. The next section is RAM, which is 0x20000000
, just like stated in my linker script.
Where the FLASH origin value 0x08000000
comes from?