| 
									
										
										
										
											2022-03-22 16:03:53 +10:30
										 |  |  | 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); | 
					
						
							| 
									
										
										
										
											2023-03-17 16:12:49 +07:00
										 |  |  | 	} >FLASH AT>FLASH | 
					
						
							| 
									
										
										
										
											2022-03-22 16:03:53 +10:30
										 |  |  | 
 | 
					
						
							|  |  |  | 	.fini : | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		KEEP(*(SORT_NONE(.fini))) | 
					
						
							|  |  |  | 		. = ALIGN(4); | 
					
						
							|  |  |  | 	} >FLASH AT>FLASH | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	PROVIDE( _etext = . ); | 
					
						
							| 
									
										
										
										
											2023-03-17 16:12:49 +07:00
										 |  |  | 	PROVIDE( _eitcm = . ); | 
					
						
							| 
									
										
										
										
											2022-03-22 16:03:53 +10:30
										 |  |  | 
 | 
					
						
							|  |  |  | 	.preinit_array  : | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 	  PROVIDE_HIDDEN (__preinit_array_start = .); | 
					
						
							|  |  |  | 	  KEEP (*(.preinit_array)) | 
					
						
							|  |  |  | 	  PROVIDE_HIDDEN (__preinit_array_end = .); | 
					
						
							| 
									
										
										
										
											2023-03-17 16:12:49 +07:00
										 |  |  | 	} >FLASH AT>FLASH | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-22 16:03:53 +10:30
										 |  |  | 	.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 = .); | 
					
						
							| 
									
										
										
										
											2023-03-17 16:12:49 +07:00
										 |  |  | 	} >FLASH AT>FLASH | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-22 16:03:53 +10:30
										 |  |  | 	.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 = .); | 
					
						
							| 
									
										
										
										
											2023-03-17 16:12:49 +07:00
										 |  |  | 	} >FLASH AT>FLASH | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-22 16:03:53 +10:30
										 |  |  | 	.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)) | 
					
						
							| 
									
										
										
										
											2023-03-17 16:12:49 +07:00
										 |  |  | 	} >FLASH AT>FLASH | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-22 16:03:53 +10:30
										 |  |  | 	.dtors          : | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 	  KEEP (*crtbegin.o(.dtors)) | 
					
						
							|  |  |  | 	  KEEP (*crtbegin?.o(.dtors)) | 
					
						
							|  |  |  | 	  KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) | 
					
						
							|  |  |  | 	  KEEP (*(SORT(.dtors.*))) | 
					
						
							|  |  |  | 	  KEEP (*(.dtors)) | 
					
						
							| 
									
										
										
										
											2023-03-17 16:12:49 +07:00
										 |  |  | 	} >FLASH AT>FLASH | 
					
						
							| 
									
										
										
										
											2022-03-22 16:03:53 +10:30
										 |  |  | 
 | 
					
						
							|  |  |  | 	.dalign : | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		. = ALIGN(4); | 
					
						
							|  |  |  | 		PROVIDE(_data_vma = .); | 
					
						
							| 
									
										
										
										
											2023-03-17 16:12:49 +07:00
										 |  |  | 	} >RAM AT>FLASH | 
					
						
							| 
									
										
										
										
											2022-03-22 16:03:53 +10:30
										 |  |  | 
 | 
					
						
							|  |  |  | 	.dlalign : | 
					
						
							|  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2023-03-17 16:12:49 +07:00
										 |  |  | 		. = ALIGN(4); | 
					
						
							| 
									
										
										
										
											2022-03-22 16:03:53 +10:30
										 |  |  | 		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*) | 
					
						
							| 
									
										
										
										
											2023-03-17 16:12:49 +07:00
										 |  |  |      	*(.gnu.linkonce.b.*) | 
					
						
							| 
									
										
										
										
											2022-03-22 16:03:53 +10:30
										 |  |  | 		*(COMMON*) | 
					
						
							|  |  |  | 		. = ALIGN(4); | 
					
						
							|  |  |  | 		PROVIDE( _ebss = .); | 
					
						
							|  |  |  | 	} >RAM AT>FLASH | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	PROVIDE( _end = _ebss); | 
					
						
							|  |  |  | 	PROVIDE( end = . ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     .stack ORIGIN(RAM) + LENGTH(RAM) - __stack_size : | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2023-03-17 16:12:49 +07:00
										 |  |  |         PROVIDE( _heap_end = . ); | 
					
						
							| 
									
										
										
										
											2022-03-22 16:03:53 +10:30
										 |  |  |         . = ALIGN(4); | 
					
						
							|  |  |  |         PROVIDE(_susrstack = . ); | 
					
						
							|  |  |  |         . = . + __stack_size; | 
					
						
							|  |  |  |         PROVIDE( _eusrstack = .); | 
					
						
							|  |  |  |         __freertos_irq_stack_top = .; | 
					
						
							| 
									
										
										
										
											2023-03-17 16:12:49 +07:00
										 |  |  |     } >RAM | 
					
						
							| 
									
										
										
										
											2022-03-22 16:03:53 +10:30
										 |  |  | 
 | 
					
						
							|  |  |  | } |