/* * ST32F103 memory setup. */ __main_stack_size__ = 0x0100; /* Exception handlers */ __process0_stack_size__ = 0x0100; /* main */ __process1_stack_size__ = 0x0140; /* ccid */ __process2_stack_size__ = 0x0180; /* rng */ __process3_stack_size__ = 0x0b00; /* gpg */ __process4_stack_size__ = 0x0100; /* intr: usb */ __process5_stack_size__ = @MSC_SIZE@; /* msc */ __process6_stack_size__ = @TIM_SIZE@; /* intr: timer */ __process7_stack_size__ = @EXT_SIZE@; /* intr: ext */ MEMORY { flash0 : org = @ORIGIN@, len = 4k flash : org = @ORIGIN@+0x1000, len = @FLASH_SIZE@k - 4k ram : org = 0x20000000, len = @MEMORY_SIZE@k } /* __flash_start__: flash ROM start address regardless of DFU_SUPPORT */ __flash_start__ = 0x08001000; __flash_end__ = ORIGIN(flash) + LENGTH(flash); __ram_start__ = ORIGIN(ram); __ram_size__ = LENGTH(ram); __ram_end__ = __ram_start__ + __ram_size__; SECTIONS { . = 0; .sys : ALIGN(4) SUBALIGN(4) { _sys = .; KEEP(*(.vectors)) . = ALIGN(16); *(.sys.version) build/sys.o(.text) build/sys.o(.text.*) build/sys.o(.rodata) build/sys.o(.rodata.*) . = ALIGN(1024); *(.sys.0) *(.sys.1) *(.sys.2) } > flash0 _text = .; .startup : ALIGN(128) SUBALIGN(128) { KEEP(*(.startup.vectors)) . = ALIGN (16); } > flash =0xffffffff .text : ALIGN(16) SUBALIGN(16) { *(.text.startup.*) *(.text) *(.text.*) *(.rodata) *(.rodata.*) *(.glue_7t) *(.glue_7) *(.gcc*) } > flash .ARM.extab : {*(.ARM.extab* .gnu.linkonce.armextab.*)} > flash .ARM.exidx : { PROVIDE(__exidx_start = .); *(.ARM.exidx* .gnu.linkonce.armexidx.*) PROVIDE(__exidx_end = .); } > flash .eh_frame_hdr : {*(.eh_frame_hdr)} > flash .eh_frame : ONLY_IF_RO {*(.eh_frame)} > flash .textalign : ONLY_IF_RO { . = ALIGN(8); } > flash _etext = .; _textdata = _etext; .stacks : { . = ALIGN(8); __main_stack_base__ = .; . += __main_stack_size__; . = ALIGN(8); __main_stack_end__ = .; __process0_stack_base__ = .; . += __process0_stack_size__; . = ALIGN(8); __process0_stack_end__ = .; __process1_stack_base__ = .; . += __process1_stack_size__; . = ALIGN(8); __process1_stack_end__ = .; __process2_stack_base__ = .; . += __process2_stack_size__; . = ALIGN(8); __process2_stack_end__ = .; __process3_stack_base__ = .; . += __process3_stack_size__; . = ALIGN(8); __process3_stack_end__ = .; __process4_stack_base__ = .; . += __process4_stack_size__; . = ALIGN(8); __process4_stack_end__ = .; __process5_stack_base__ = .; . += __process5_stack_size__; . = ALIGN(8); __process5_stack_end__ = .; __process6_stack_base__ = .; . += __process6_stack_size__; . = ALIGN(8); __process6_stack_end__ = .; __process7_stack_base__ = .; . += __process7_stack_size__; . = ALIGN(8); __process7_stack_end__ = .; . = ALIGN(8); } > ram .data : { . = ALIGN(4); PROVIDE(_data = .); *(.data) . = ALIGN(4); *(.data.*) . = ALIGN(4); *(.ramtext) . = ALIGN(4); PROVIDE(_edata = .); } > ram AT > flash .bss : { . = ALIGN(4); PROVIDE(_bss_start = .); *(.bss) . = ALIGN(4); *(.bss.*) . = ALIGN(4); *(COMMON) . = ALIGN(4); PROVIDE(_bss_end = .); } > ram . = ALIGN(16); PROVIDE(end = .); _end = .; . = ALIGN(512); _regnual_start = .; @CERTDO_SUPPORT_START@ .gnuk_ch_certificate : { . = ALIGN (@FLASH_PAGE_SIZE@); ch_certificate_start = .; LONG(0xffffffff); . += 1920; . = ALIGN (@FLASH_PAGE_SIZE@); } > flash =0xffffffff @CERTDO_SUPPORT_END@ .gnuk_flash : { . = ALIGN (@FLASH_PAGE_SIZE@); _data_pool = .; KEEP(*(.gnuk_data)) . = ALIGN(@FLASH_PAGE_SIZE@); . += @FLASH_PAGE_SIZE@; _keystore_pool = .; . += 512; . = ALIGN(@FLASH_PAGE_SIZE@); . += 512; . = ALIGN(@FLASH_PAGE_SIZE@); . += 512; . = ALIGN(@FLASH_PAGE_SIZE@); _updatekey_store = .; . += 1024; . = ALIGN(@FLASH_PAGE_SIZE@); } > flash =0xffffffff } __heap_base__ = _end; __heap_end__ = __ram_end__;