/* http://www.embedds.com/programming-stm32-discovery-using-gnu-tools-linker-script/ */

ENTRY(__init)

MEMORY {
	RAM(rwx):	ORIGIN = 0x10000000,	LENGTH = 4K
	FLASH(rx):	ORIGIN = 0x0,		LENGTH = 16K
}

SECTIONS {
	.text : {
		. = ALIGN(4);
		KEEP(*(.vectors))
		*(.init)
		*(.text)
		*(.text*)
		*(.rodata)
		*(.rodata*)
		. = ALIGN(4);
	} >FLASH

	_data_flash = .;
	.data : AT(_data_flash) {
		. = ALIGN(4);
		_data_begin = .;
		*(.data)
		*(.data*)
		. = ALIGN(4);
		_data_end = .;
	} >RAM

	.bss : {
		_bss_begin = .;
		__bss_start__ = _bss_begin;
		*(.bss)
		*(.bss.*)
		*(COMMON)
		. = ALIGN(4);
		_bss_end = .;
		__bss_end__ = _bss_end;
	} >RAM

	_stack_end = ORIGIN(RAM)+LENGTH(RAM);
	_neg_stack_end = -_stack_end;
}