/* linker script for application running on STM32F103x8 micro-controller * the STM32F103x8 has 64 KB of flash starting at 0x0800 0000, and 20 KB of RAM starting at 0x2000 0000 * the STM32F103xB has 128 KB of flash starting at 0x0800 0000, and 20 KB of RAM starting at 0x2000 0000 * STM32F103x8 most often have if fact 128 KB, instead of the specified and advertised 64 KB, like the STM32F103xB * you can define the desired flash size here. * the USB DFU bootloader will take the first 8 KB of flash, followed by the application * the first 4 bytes of the RAM is reserved for the DFU magic word (DFU! to start DFU bootloader) */ /* define memory regions. */ MEMORY { rom (rx) : ORIGIN = 0x08000000 + 8K, LENGTH = 64K - 8K ram (rwx) : ORIGIN = 0x20000000 + 4, LENGTH = 20K - 4 } PROVIDE(__application_beginning = ORIGIN(rom)); /* if you want the firmware to use the flash size advertised by the micro-controller itself, use the following: PROVIDE(__application_end = 0); PROVIDE(__flash_end = 0); if you want to enforce a flash size, because there is more flash than advertized by the micro-controller, use to following: PROVIDE(__application_end = ORIGIN(rom) + LENGTH(rom)); PROVIDE(__flash_end = ORIGIN(rom) + LENGTH(rom)); */ PROVIDE(__application_end = 0); PROVIDE(__flash_end = 0); /* RAM location reserved so application can talk to bootloader and tell to start DFU */ PROVIDE(__dfu_magic = ORIGIN(ram) - 4); /* include rest of the definitions for the ARM Cortex-M, including STM32F1 family */ INCLUDE cortex-m-generic.ld