168 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			168 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| ENTRY( _start )
 | |
| 
 | |
| __stack_size = 4096;
 | |
| 
 | |
| PROVIDE( _stack_size = __stack_size );
 | |
| 
 | |
| 
 | |
| MEMORY
 | |
| {
 | |
| 	FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 288K
 | |
| 	RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 32K
 | |
| }
 | |
| 
 | |
| 
 | |
| SECTIONS
 | |
| {
 | |
| 
 | |
| 	.init :
 | |
| 	{
 | |
| 		_sinit = .;
 | |
| 		. = ALIGN(4);
 | |
| 		KEEP(*(SORT_NONE(.init)))
 | |
| 		. = ALIGN(4);
 | |
| 		_einit = .;
 | |
| 	} >FLASH AT>FLASH
 | |
| 
 | |
|   .vector :
 | |
|   {
 | |
|       *(.vector);
 | |
| 	  . = ALIGN(64);
 | |
|   } >FLASH AT>FLASH
 | |
| 
 | |
| 	.text :
 | |
| 	{
 | |
| 		. = ALIGN(4);
 | |
| 		*(.text)
 | |
| 		*(.text.*)
 | |
| 		*(.rodata)
 | |
| 		*(.rodata*)
 | |
| 		*(.glue_7)
 | |
| 		*(.glue_7t)
 | |
| 		*(.gnu.linkonce.t.*)
 | |
| 		. = ALIGN(4);
 | |
| 	} >FLASH AT>FLASH
 | |
| 
 | |
| 	.fini :
 | |
| 	{
 | |
| 		KEEP(*(SORT_NONE(.fini)))
 | |
| 		. = ALIGN(4);
 | |
| 	} >FLASH AT>FLASH
 | |
| 
 | |
| 	PROVIDE( _etext = . );
 | |
| 	PROVIDE( _eitcm = . );
 | |
| 
 | |
| 	.preinit_array  :
 | |
| 	{
 | |
| 	  PROVIDE_HIDDEN (__preinit_array_start = .);
 | |
| 	  KEEP (*(.preinit_array))
 | |
| 	  PROVIDE_HIDDEN (__preinit_array_end = .);
 | |
| 	} >FLASH AT>FLASH
 | |
| 
 | |
| 	.init_array     :
 | |
| 	{
 | |
| 	  PROVIDE_HIDDEN (__init_array_start = .);
 | |
| 	  KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*)))
 | |
| 	  KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors))
 | |
| 	  PROVIDE_HIDDEN (__init_array_end = .);
 | |
| 	} >FLASH AT>FLASH
 | |
| 
 | |
| 	.fini_array     :
 | |
| 	{
 | |
| 	  PROVIDE_HIDDEN (__fini_array_start = .);
 | |
| 	  KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*)))
 | |
| 	  KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors))
 | |
| 	  PROVIDE_HIDDEN (__fini_array_end = .);
 | |
| 	} >FLASH AT>FLASH
 | |
| 
 | |
| 	.ctors          :
 | |
| 	{
 | |
| 	  /* gcc uses crtbegin.o to find the start of
 | |
| 	     the constructors, so we make sure it is
 | |
| 	     first.  Because this is a wildcard, it
 | |
| 	     doesn't matter if the user does not
 | |
| 	     actually link against crtbegin.o; the
 | |
| 	     linker won't look for a file to match a
 | |
| 	     wildcard.  The wildcard also means that it
 | |
| 	     doesn't matter which directory crtbegin.o
 | |
| 	     is in.  */
 | |
| 	  KEEP (*crtbegin.o(.ctors))
 | |
| 	  KEEP (*crtbegin?.o(.ctors))
 | |
| 	  /* We don't want to include the .ctor section from
 | |
| 	     the crtend.o file until after the sorted ctors.
 | |
| 	     The .ctor section from the crtend file contains the
 | |
| 	     end of ctors marker and it must be last */
 | |
| 	  KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
 | |
| 	  KEEP (*(SORT(.ctors.*)))
 | |
| 	  KEEP (*(.ctors))
 | |
| 	} >FLASH AT>FLASH
 | |
| 
 | |
| 	.dtors          :
 | |
| 	{
 | |
| 	  KEEP (*crtbegin.o(.dtors))
 | |
| 	  KEEP (*crtbegin?.o(.dtors))
 | |
| 	  KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
 | |
| 	  KEEP (*(SORT(.dtors.*)))
 | |
| 	  KEEP (*(.dtors))
 | |
| 	} >FLASH AT>FLASH
 | |
| 
 | |
| 	.dalign :
 | |
| 	{
 | |
| 		. = ALIGN(4);
 | |
| 		PROVIDE(_data_vma = .);
 | |
| 	} >RAM AT>FLASH
 | |
| 
 | |
| 	.dlalign :
 | |
| 	{
 | |
| 		. = ALIGN(4);
 | |
| 		PROVIDE(_data_lma = .);
 | |
| 	} >FLASH AT>FLASH
 | |
| 
 | |
| 	.data :
 | |
| 	{
 | |
|     	*(.gnu.linkonce.r.*)
 | |
|     	*(.data .data.*)
 | |
|     	*(.gnu.linkonce.d.*)
 | |
| 		. = ALIGN(8);
 | |
|     	PROVIDE( __global_pointer$ = . + 0x800 );
 | |
|     	*(.sdata .sdata.*)
 | |
| 		*(.sdata2.*)
 | |
|     	*(.gnu.linkonce.s.*)
 | |
|     	. = ALIGN(8);
 | |
|     	*(.srodata.cst16)
 | |
|     	*(.srodata.cst8)
 | |
|     	*(.srodata.cst4)
 | |
|     	*(.srodata.cst2)
 | |
|     	*(.srodata .srodata.*)
 | |
|     	. = ALIGN(4);
 | |
| 		PROVIDE( _edata = .);
 | |
| 	} >RAM AT>FLASH
 | |
| 
 | |
| 	.bss :
 | |
| 	{
 | |
| 		. = ALIGN(4);
 | |
| 		PROVIDE( _sbss = .);
 | |
|   	    *(.sbss*)
 | |
|         *(.gnu.linkonce.sb.*)
 | |
| 		*(.bss*)
 | |
|      	*(.gnu.linkonce.b.*)
 | |
| 		*(COMMON*)
 | |
| 		. = ALIGN(4);
 | |
| 		PROVIDE( _ebss = .);
 | |
| 	} >RAM AT>FLASH
 | |
| 
 | |
| 	PROVIDE( _end = _ebss);
 | |
| 	PROVIDE( end = . );
 | |
| 
 | |
|     .stack ORIGIN(RAM) + LENGTH(RAM) - __stack_size :
 | |
|     {
 | |
|         PROVIDE( _heap_end = . );
 | |
|         . = ALIGN(4);
 | |
|         PROVIDE(_susrstack = . );
 | |
|         . = . + __stack_size;
 | |
|         PROVIDE( _eusrstack = .);
 | |
|         __freertos_irq_stack_top = .;
 | |
|     } >RAM
 | |
| 
 | |
| }
 | 
