mirror of https://github.com/ARMmbed/mbed-os.git
				
				
				
			Target_GigaDevice: Add ARM_LIB_STACK and ARM_LIB_HEAP section
Instead of user defined symbols in assembly files or C files, use linker scripts to add heap and stack - this is inconsistent with ARM std linker scriptspull/9766/head
							parent
							
								
									2a192509c3
								
							
						
					
					
						commit
						e731a1589f
					
				| 
						 | 
					@ -4,24 +4,40 @@
 | 
				
			||||||
; *****
 | 
					; *****
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if !defined(MBED_APP_START)
 | 
					#if !defined(MBED_APP_START)
 | 
				
			||||||
  #define MBED_APP_START 0x08000000
 | 
					  #define MBED_APP_START            0x08000000
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if !defined(MBED_APP_SIZE)
 | 
					#if !defined(MBED_APP_SIZE)
 | 
				
			||||||
  #define MBED_APP_SIZE 0x20000
 | 
					  #define MBED_APP_SIZE             0x00020000
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LR_IROM1 MBED_APP_START MBED_APP_SIZE  {    ; load region size_region (1024K)
 | 
					#define MBED_RAM_START              0x20000000
 | 
				
			||||||
 | 
					#define MBED_RAM_SIZE               0x00008000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ER_IROM1 MBED_APP_START MBED_APP_SIZE  {  ; load address = execution address
 | 
					#if !defined(MBED_BOOT_STACK_SIZE)
 | 
				
			||||||
 | 
					  #define MBED_BOOT_STACK_SIZE      0x400
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					; 84 vectors (16 core + 68 peripheral) * 4 bytes = 336 bytes to reserve (0x150)
 | 
				
			||||||
 | 
					#define VECTOR_SIZE                 0x150
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define RAM_FIXED_SIZE              (MBED_BOOT_STACK_SIZE+VECTOR_SIZE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					LR_IROM1  MBED_APP_START  MBED_APP_SIZE  {    ; load region size_region
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ER_IROM1  MBED_APP_START  MBED_APP_SIZE  {  ; load address = execution address
 | 
				
			||||||
   *.o (RESET, +First)
 | 
					   *.o (RESET, +First)
 | 
				
			||||||
   *(InRoot$$Sections)
 | 
					   *(InRoot$$Sections)
 | 
				
			||||||
   .ANY (+RO)
 | 
					   .ANY (+RO)
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ; 84 vectors (16 core + 68 peripheral) * 4 bytes = 336 bytes to reserve (0x150)
 | 
					  RW_IRAM1  (MBED_RAM_START+VECTOR_SIZE)  (MBED_RAM_SIZE-VECTOR_SIZE)  {  ; RW data
 | 
				
			||||||
  RW_IRAM1 (0x20000000+0x150) (0x8000-0x150)  {  ; RW data
 | 
					 | 
				
			||||||
   .ANY (+RW +ZI)
 | 
					   .ANY (+RW +ZI)
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ARM_LIB_HEAP  AlignExpr(+0, 16)  EMPTY  (MBED_RAM_SIZE-RAM_FIXED_SIZE+MBED_RAM_START-AlignExpr(ImageLimit(RW_IRAM1), 16))  {
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ARM_LIB_STACK  (MBED_RAM_START+MBED_RAM_SIZE)  EMPTY  -MBED_BOOT_STACK_SIZE { ; stack
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -35,31 +35,9 @@
 | 
				
			||||||
;OF SUCH DAMAGE.
 | 
					;OF SUCH DAMAGE.
 | 
				
			||||||
;*/
 | 
					;*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
; <h> Stack Configuration
 | 
					 | 
				
			||||||
;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
 | 
					 | 
				
			||||||
; </h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Stack_Size      EQU     0x00000400
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                AREA    STACK, NOINIT, READWRITE, ALIGN=3
 | 
					 | 
				
			||||||
                EXPORT  __initial_sp
 | 
					 | 
				
			||||||
Stack_Mem       SPACE   Stack_Size
 | 
					 | 
				
			||||||
__initial_sp    EQU     0x20008000 ; Top of RAM
 | 
					__initial_sp    EQU     0x20008000 ; Top of RAM
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
; <h> Heap Configuration
 | 
					 | 
				
			||||||
;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
 | 
					 | 
				
			||||||
; </h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Heap_Size       EQU     0x00000400
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
 | 
					 | 
				
			||||||
                EXPORT  __heap_base
 | 
					 | 
				
			||||||
                EXPORT  __heap_limit
 | 
					 | 
				
			||||||
__heap_base
 | 
					 | 
				
			||||||
Heap_Mem        SPACE   Heap_Size
 | 
					 | 
				
			||||||
__heap_limit    EQU (__initial_sp - Stack_Size)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                PRESERVE8
 | 
					                PRESERVE8
 | 
				
			||||||
                THUMB
 | 
					                THUMB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,24 +4,40 @@
 | 
				
			||||||
; *****
 | 
					; *****
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if !defined(MBED_APP_START)
 | 
					#if !defined(MBED_APP_START)
 | 
				
			||||||
  #define MBED_APP_START 0x08000000
 | 
					  #define MBED_APP_START            0x08000000
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if !defined(MBED_APP_SIZE)
 | 
					#if !defined(MBED_APP_SIZE)
 | 
				
			||||||
  #define MBED_APP_SIZE 0x100000
 | 
					  #define MBED_APP_SIZE             0x100000
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LR_IROM1 MBED_APP_START MBED_APP_SIZE  {    ; load region size_region (1024K)
 | 
					#define MBED_RAM_START              0x20000000
 | 
				
			||||||
 | 
					#define MBED_RAM_SIZE               0x00018000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ER_IROM1 MBED_APP_START MBED_APP_SIZE  {  ; load address = execution address
 | 
					#if !defined(MBED_BOOT_STACK_SIZE)
 | 
				
			||||||
 | 
					  #define MBED_BOOT_STACK_SIZE      0x400
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					; 84 vectors (16 core + 68 peripheral) * 4 bytes = 336 bytes to reserve (0x150)
 | 
				
			||||||
 | 
					#define VECTOR_SIZE                 0x150
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define RAM_FIXED_SIZE              (MBED_BOOT_STACK_SIZE+VECTOR_SIZE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					LR_IROM1  MBED_APP_START  MBED_APP_SIZE  {    ; load region size_region
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ER_IROM1  MBED_APP_START  MBED_APP_SIZE  {  ; load address = execution address
 | 
				
			||||||
   *.o (RESET, +First)
 | 
					   *.o (RESET, +First)
 | 
				
			||||||
   *(InRoot$$Sections)
 | 
					   *(InRoot$$Sections)
 | 
				
			||||||
   .ANY (+RO)
 | 
					   .ANY (+RO)
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ; 84 vectors (16 core + 68 peripheral) * 4 bytes = 336 bytes to reserve (0x150)
 | 
					  RW_IRAM1  (MBED_RAM_START+VECTOR_SIZE)  (MBED_RAM_SIZE-VECTOR_SIZE)  {  ; RW data
 | 
				
			||||||
  RW_IRAM1 (0x20000000+0x150) (0x18000-0x150)  {  ; RW data
 | 
					 | 
				
			||||||
   .ANY (+RW +ZI)
 | 
					   .ANY (+RW +ZI)
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ARM_LIB_HEAP  AlignExpr(+0, 16)  EMPTY  (MBED_RAM_SIZE-RAM_FIXED_SIZE+MBED_RAM_START-AlignExpr(ImageLimit(RW_IRAM1), 16))  {
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ARM_LIB_STACK  (MBED_RAM_START+MBED_RAM_SIZE)  EMPTY  -MBED_BOOT_STACK_SIZE { ; stack
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,31 +34,9 @@
 | 
				
			||||||
;OF SUCH DAMAGE.
 | 
					;OF SUCH DAMAGE.
 | 
				
			||||||
;*/
 | 
					;*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
; <h> Stack Configuration
 | 
					 | 
				
			||||||
;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
 | 
					 | 
				
			||||||
; </h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Stack_Size      EQU     0x00000400
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                AREA    STACK, NOINIT, READWRITE, ALIGN=3
 | 
					 | 
				
			||||||
                EXPORT  __initial_sp
 | 
					 | 
				
			||||||
Stack_Mem       SPACE   Stack_Size
 | 
					 | 
				
			||||||
__initial_sp    EQU     0x20010000 ; Top of RAM
 | 
					__initial_sp    EQU     0x20010000 ; Top of RAM
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
; <h> Heap Configuration
 | 
					 | 
				
			||||||
;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
 | 
					 | 
				
			||||||
; </h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Heap_Size       EQU     0x00000400
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
 | 
					 | 
				
			||||||
                EXPORT  __heap_base
 | 
					 | 
				
			||||||
                EXPORT  __heap_limit
 | 
					 | 
				
			||||||
__heap_base
 | 
					 | 
				
			||||||
Heap_Mem        SPACE   Heap_Size
 | 
					 | 
				
			||||||
__heap_limit    EQU (__initial_sp - Stack_Size)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                PRESERVE8
 | 
					                PRESERVE8
 | 
				
			||||||
                THUMB
 | 
					                THUMB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,23 +4,40 @@
 | 
				
			||||||
; *****
 | 
					; *****
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if !defined(MBED_APP_START)
 | 
					#if !defined(MBED_APP_START)
 | 
				
			||||||
  #define MBED_APP_START 0x08000000
 | 
					  #define MBED_APP_START            0x08000000
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if !defined(MBED_APP_SIZE)
 | 
					#if !defined(MBED_APP_SIZE)
 | 
				
			||||||
  #define MBED_APP_SIZE 0x200000
 | 
					  #define MBED_APP_SIZE             0x00200000
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LR_IROM1 MBED_APP_START MBED_APP_SIZE  {    ; load region size_region (3*1024K)
 | 
					#define MBED_RAM_START              0x20000000
 | 
				
			||||||
 | 
					#define MBED_RAM_SIZE               0x00020000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ER_IROM1 MBED_APP_START MBED_APP_SIZE  {  ; load address = execution address
 | 
					#if !defined(MBED_BOOT_STACK_SIZE)
 | 
				
			||||||
 | 
					  #define MBED_BOOT_STACK_SIZE      0x400
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					; 107 vectors (16 core + 91 peripheral) * 4 bytes = 428 bytes to reserve (0x1B0, 8-byte aligned)
 | 
				
			||||||
 | 
					#define VECTOR_SIZE                 0x1B0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define RAM_FIXED_SIZE              (MBED_BOOT_STACK_SIZE+VECTOR_SIZE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					LR_IROM1  MBED_APP_START  MBED_APP_SIZE  {    ; load region size_region
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ER_IROM1  MBED_APP_START  MBED_APP_SIZE  {  ; load address = execution address
 | 
				
			||||||
   *.o (RESET, +First)
 | 
					   *.o (RESET, +First)
 | 
				
			||||||
   *(InRoot$$Sections)
 | 
					   *(InRoot$$Sections)
 | 
				
			||||||
   .ANY (+RO)
 | 
					   .ANY (+RO)
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ; 107 vectors (16 core + 91 peripheral) * 4 bytes = 428 bytes to reserve (0x1B0, 8-byte aligned)
 | 
					  RW_IRAM1  (MBED_RAM_START+VECTOR_SIZE)  (MBED_RAM_SIZE-VECTOR_SIZE)  {  ; RW data
 | 
				
			||||||
  RW_IRAM1 (0x20000000+0x1B0) (0x20000-0x1B0)  {  ; RW data
 | 
					 | 
				
			||||||
   .ANY (+RW +ZI)
 | 
					   .ANY (+RW +ZI)
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ARM_LIB_HEAP  AlignExpr(+0, 16)  EMPTY  (MBED_RAM_SIZE-RAM_FIXED_SIZE+MBED_RAM_START-AlignExpr(ImageLimit(RW_IRAM1), 16))  {
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ARM_LIB_STACK  (MBED_RAM_START+MBED_RAM_SIZE)  EMPTY  -MBED_BOOT_STACK_SIZE { ; stack
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -36,31 +36,10 @@
 | 
				
			||||||
;OF SUCH DAMAGE.
 | 
					;OF SUCH DAMAGE.
 | 
				
			||||||
;*/
 | 
					;*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
; <h> Stack Configuration
 | 
					 | 
				
			||||||
;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
 | 
					 | 
				
			||||||
; </h>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
Stack_Size      EQU     0x00000800
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                AREA    STACK, NOINIT, READWRITE, ALIGN=3
 | 
					 | 
				
			||||||
                EXPORT  __initial_sp
 | 
					 | 
				
			||||||
Stack_Mem       SPACE   Stack_Size
 | 
					 | 
				
			||||||
__initial_sp    EQU     0x20020000
 | 
					__initial_sp    EQU     0x20020000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
; <h> Heap Configuration
 | 
					 | 
				
			||||||
;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
 | 
					 | 
				
			||||||
; </h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Heap_Size       EQU     0x00000400
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
 | 
					 | 
				
			||||||
                EXPORT  __heap_base
 | 
					 | 
				
			||||||
                EXPORT  __heap_limit
 | 
					 | 
				
			||||||
__heap_base
 | 
					 | 
				
			||||||
Heap_Mem        SPACE   Heap_Size
 | 
					 | 
				
			||||||
__heap_limit    EQU     (__initial_sp - Stack_Size)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                PRESERVE8
 | 
					                PRESERVE8
 | 
				
			||||||
                THUMB
 | 
					                THUMB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -39,4 +39,4 @@ LR_IROM1  MBED_APP_START  MBED_APP_SIZE  {    ; load region size_region
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ARM_LIB_STACK  (MBED_RAM_START+MBED_RAM_SIZE)  EMPTY  -MBED_BOOT_STACK_SIZE { ; stack
 | 
					  ARM_LIB_STACK  (MBED_RAM_START+MBED_RAM_SIZE)  EMPTY  -MBED_BOOT_STACK_SIZE { ; stack
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue