mirror of
				https://github.com/FreeRTOS/FreeRTOS-Kernel.git
				synced 2025-10-26 23:36:32 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			139 lines
		
	
	
	
		
			3.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
	
		
			3.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| /*******************************************************************************
 | |
|  * (c) Copyright 2016-2018 Microsemi SoC Products Group.  All rights reserved.
 | |
|  *
 | |
|  * file name : microsemi-riscv-ram.ld
 | |
|  * Mi-V soft processor linker script for creating a SoftConsole downloadable
 | |
|  * debug image executing in SRAM.
 | |
|  *
 | |
|  * This linker script assumes that the SRAM is connected at on the Mi-V soft
 | |
|  * processor memory space. The start address and size of the memory space must
 | |
|  * be correct as per the Libero design.
 | |
|  *
 | |
|  * SVN $Revision: 9661 $
 | |
|  * SVN $Date: 2018-01-15 16:13:33 +0530 (Mon, 15 Jan 2018) $
 | |
|  */
 | |
| 
 | |
| OUTPUT_ARCH( "riscv" )
 | |
| ENTRY(_start)
 | |
| 
 | |
| 
 | |
| MEMORY
 | |
| {
 | |
|     ram (rwx) : ORIGIN = 0x80000000, LENGTH = 512k
 | |
| }
 | |
| 
 | |
| RAM_START_ADDRESS   = 0x80000000;       /* Must be the same value MEMORY region ram ORIGIN above. */
 | |
| RAM_SIZE            = 512k;              /* Must be the same value MEMORY region ram LENGTH above. */
 | |
| STACK_SIZE          = 2k;               /* needs to be calculated for your application */
 | |
| HEAP_SIZE           = 4;               /* needs to be calculated for your application */
 | |
| 
 | |
| SECTIONS
 | |
| {
 | |
|   .text : ALIGN(0x10)
 | |
|   {
 | |
|     KEEP (*(SORT_NONE(.text.entry)))
 | |
|     . = ALIGN(0x10);
 | |
|     *(.text .text.* .gnu.linkonce.t.*)
 | |
|     *(.plt)
 | |
|     . = ALIGN(0x10);
 | |
| 
 | |
|     KEEP (*crtbegin.o(.ctors))
 | |
|     KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
 | |
|     KEEP (*(SORT(.ctors.*)))
 | |
|     KEEP (*crtend.o(.ctors))
 | |
|     KEEP (*crtbegin.o(.dtors))
 | |
|     KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
 | |
|     KEEP (*(SORT(.dtors.*)))
 | |
|     KEEP (*crtend.o(.dtors))
 | |
| 
 | |
|     *(.rodata .rodata.* .gnu.linkonce.r.*)
 | |
|     *(.gcc_except_table)
 | |
|     *(.eh_frame_hdr)
 | |
|     *(.eh_frame)
 | |
| 
 | |
|     KEEP (*(.init))
 | |
|     KEEP (*(.fini))
 | |
| 
 | |
|     PROVIDE_HIDDEN (__preinit_array_start = .);
 | |
|     KEEP (*(.preinit_array))
 | |
|     PROVIDE_HIDDEN (__preinit_array_end = .);
 | |
|     PROVIDE_HIDDEN (__init_array_start = .);
 | |
|     KEEP (*(SORT(.init_array.*)))
 | |
|     KEEP (*(.init_array))
 | |
|     PROVIDE_HIDDEN (__init_array_end = .);
 | |
|     PROVIDE_HIDDEN (__fini_array_start = .);
 | |
|     KEEP (*(.fini_array))
 | |
|     KEEP (*(SORT(.fini_array.*)))
 | |
|     PROVIDE_HIDDEN (__fini_array_end = .);
 | |
|     . = ALIGN(0x10);
 | |
| 
 | |
|   } > ram
 | |
| 
 | |
|   /* short/global data section */
 | |
|   .sdata : ALIGN(0x10)
 | |
|   {
 | |
|     __sdata_load = LOADADDR(.sdata);
 | |
|     __sdata_start = .;
 | |
|     PROVIDE( __global_pointer$ = . + 0x800);
 | |
|     *(.srodata.cst16) *(.srodata.cst8) *(.srodata.cst4) *(.srodata.cst2)
 | |
|     *(.srodata*)
 | |
|     *(.sdata .sdata.* .gnu.linkonce.s.*)
 | |
|     . = ALIGN(0x10);
 | |
|     __sdata_end = .;
 | |
|   } > ram
 | |
| 
 | |
|   /* data section */
 | |
|   .data : ALIGN(0x10)
 | |
|   {
 | |
|     __data_load = LOADADDR(.data);
 | |
|     __data_start = .;
 | |
|     *(.got.plt) *(.got)
 | |
|     *(.shdata)
 | |
|     *(.data .data.* .gnu.linkonce.d.*)
 | |
|     . = ALIGN(0x10);
 | |
|     __data_end = .;
 | |
|   } > ram
 | |
| 
 | |
|   /* sbss section */
 | |
|   .sbss : ALIGN(0x10)
 | |
|   {
 | |
|     __sbss_start = .;
 | |
|     *(.sbss .sbss.* .gnu.linkonce.sb.*)
 | |
|     *(.scommon)
 | |
|     . = ALIGN(0x10);
 | |
|     __sbss_end = .;
 | |
|   } > ram
 | |
| 
 | |
|   /* sbss section */
 | |
|   .bss : ALIGN(0x10)
 | |
|   {
 | |
|     __bss_start = .;
 | |
|     *(.shbss)
 | |
|     *(.bss .bss.* .gnu.linkonce.b.*)
 | |
|     *(COMMON)
 | |
|     . = ALIGN(0x10);
 | |
|     __bss_end = .;
 | |
|   } > ram
 | |
| 
 | |
|   /* End of uninitialized data segment */
 | |
|   _end = .;
 | |
| 
 | |
|   .heap : ALIGN(0x10)
 | |
|   {
 | |
|     __heap_start = .;
 | |
|     . += HEAP_SIZE;
 | |
|     __heap_end = .;
 | |
|     . = ALIGN(0x10);
 | |
|     _heap_end = __heap_end;
 | |
|   } > ram
 | |
| 
 | |
|   .stack : ALIGN(0x10)
 | |
|   {
 | |
|     __stack_bottom = .;
 | |
|     . += STACK_SIZE;
 | |
|     __stack_top = .;
 | |
|     _sp = .;
 | |
| 	__freertos_irq_stack_top = .;
 | |
|   } > ram
 | |
| }
 | |
| 
 |