/* ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010 Giovanni Di Sirio. This file is part of ChibiOS/RT. ChibiOS/RT is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. ChibiOS/RT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . --- A special exception to the GPL can be applied should you wish to distribute a combined work that includes ChibiOS/RT, without being obliged to provide the source code for any proprietary components. See the file exception.txt for full details of how and when the exception can be applied. */ /* * ST32F103 memory setup. */ __main_stack_size__ = 0x0400; __process_stack_size__ = 0x0200; __stacks_total_size__ = __main_stack_size__ + __process_stack_size__; MEMORY { flash0 : org = @ORIGIN@, len = 4k flash : org = @ORIGIN@+0x1000, len = @FLASH_SIZE@k - 4k ram : org = 0x20000000, len = 20k } /* __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(16) SUBALIGN(16) { KEEP(*(.vectors)) sys.o(.text) sys.o(.text.*) sys.o(.rodata) sys.o(.rodata.*) . = ALIGN(1024); *(.sys.0) *(.sys.1) *(.sys.2) } > flash0 .text : ALIGN(16) SUBALIGN(16) { _text = .; KEEP(*(vectors)) *(.text) *(.text.*) *(.rodata) *(.rodata.*) *(.glue_7t) *(.glue_7) *(.gcc*) } > flash .ctors : { PROVIDE(_ctors_start_ = .); KEEP(*(SORT(.ctors.*))) KEEP(*(.ctors)) PROVIDE(_ctors_end_ = .); } > flash .dtors : { PROVIDE(_dtors_start_ = .); KEEP(*(SORT(.dtors.*))) KEEP(*(.dtors)) PROVIDE(_dtors_end_ = .); } > flash .ARM.extab : {*(.ARM.extab* .gnu.linkonce.armextab.*)} __exidx_start = .; .ARM.exidx : {*(.ARM.exidx* .gnu.linkonce.armexidx.*)} > flash __exidx_end = .; .eh_frame_hdr : {*(.eh_frame_hdr)} .eh_frame : ONLY_IF_RO {*(.eh_frame)} . = ALIGN(4); _etext = .; _textdata = _etext; .data : { _data = .; *(.data) . = ALIGN(4); *(.data.*) . = ALIGN(4); *(.ramtext) . = ALIGN(4); _edata = .; } > ram AT > flash .bss : { _bss_start = .; *(.bss) . = ALIGN(4); *(.bss.*) . = ALIGN(4); *(COMMON) . = ALIGN(4); _bss_end = .; } > ram 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*3; . = ALIGN(@FLASH_PAGE_SIZE@); } > flash =0xffffffff } __heap_base__ = _end; __heap_end__ = __ram_end__ - __stacks_total_size__;