#! armclang --target=arm-arm-none-eabi -mcpu=cortex-m4 -xc -E
; *******************************************************************************************
;  @file      : Linker_Flash_Z20K148M.scf
;  @brief     : Linker script file
;               - Platform: Z20K14xM
;               - Autosar Version: 4.6.0
;  @version   : 1.1.0
;  @author    : Zhixin Semiconductor
;  @note      : None
;
;  @copyright : Copyright (c) 2021-2023 Zhixin Semiconductor Ltd. All rights reserved.
; *******************************************************************************************
 
 
#define VECT_SIZE     	   			0x00000400



#define PFLASH_START               0x00000000
#define PFLASH_SIZE                0x00200000     /* 2MB */
 

#define RAM2_START                 0x1FFE0000
#define RAM2_SIZE                  0x00020000    /* 128KB */
#define RAM2_END                   RAM2_START + RAM2_SIZE



#define RAM1_START                 0x20000000
#define RAM1_SIZE                  0x00020000    /* 128KB */
#define RAM1_END                   RAM1_START + RAM1_SIZE


#define STACK_SIZE                0x1000

LR_IROM1 PFLASH_START PFLASH_SIZE  {    ; load region size_region
  BOOTLOADER 0x00000000  0x0002FFFF
  {
  
  }
  EOL_AREA   0x00030000  0xEFF 
  { 
    *(.EFT_DATA)
  }
  
  MEM_APPL_CODING_DATA  0x00034000  0x3FFF 
  { 
    *(.APPL_CODING_DATA)
  }
  
  ivr_vector  0x00040000 VECT_SIZE   ; load address = execution address
  { 
    *(.intc_vector,+First)
  }
  
  
  cfgid_configdata  0x00040540 0x100    
  {  
    *(.cfgid_configdata)
  }
  
  
  Os_Supervisor_Code  0x00040640 0xFF80    
  {  
    *(.startup)
    *(.systeminit)
  }
  
  OS_ROM +0  ALIGN 4   
  {
	*(.OS_CONST_32)
	*(.OS_CONFIG_DATA_32)
	*(.OS_CONST_16)
	*(.OS_CONFIG_DATA_16)
	*(.OS_CONST_8)
	*(.OS_CONFIG_DATA_8)
	*(.OS_CONST_1)
	*(.OS_CONFIG_DATA_1)
	*(.OS_CONST_UNSPECIFIED)
	*(.OS_CONFIG_DATA_UNSPECIFIED)
	*(.OS_CODE)
	*(.OS_CALLOUT_CODE)
	*(.OS_CODE_LIB)
	*(.APP1_ROMCODE)
	*(.APP2_ROMCODE)
	*(.APP3_ROMCODE)
	*(.APP4_ROMCODE)  
  }
  
  
  flash_text  0x000505C0 0x9FA00    
  {  
	*(.init1) 
   *(.text)
   *(.text.*)
   *(.DefaultSecTextOff)
   *(.internal_flash)
   *(.ghtws.text)
   *(.picbase)
   *(.vletext)
   *(.fixaddr)
   *(.fixtype)
   *(.syscall)
   *(.sdata2)
   *(.secinfo) 
   *(.mcal_code)
   *(.fls_ac_code_rom) 
   *(.T_CODE)
   *(.T_CALLOUT_CODE)
   *(.WDG_CODE)
   *(.app_start)
   *(.DefaultSecText)
   *(.T1_code)     
   *(.T1_codeFast)

    ;//.ROM.syscall                ROM(.syscall)     	
  } 
  
  
  nt_code  0x000F0000 0x30000    
  {                                                   
	*(.NT_CODE)
	*(.NT_CALLOUT_CODE)
	*(.NT_CONST_ROM_8BIT)
	*(.NT_CONST_ROM_16BIT)
	*(.NT_CONST_ROM_32BIT)
	*(.NT_CONST_ROM_64BIT)
	*(.NT_CONST_ROM_BOOLEAN)
	*(.NT_CONST_ROM_UNSPECIFIED)
	*(.NT_CONST_SAVED_RECOVERY_ZONE_ROM_8)
	*(.NT_CONST_SAVED_RECOVERY_ZONE_ROM_16)
	*(.NT_CONST_SAVED_RECOVERY_ZONE_ROM_32)
	*(.NT_CONST_SAVED_RECOVERY_ZONE_ROM_64)
	*(.NT_CONST_SAVED_RECOVERY_ZONE_ROM_BOOLEAN)
	*(.NT_CONST_SAVED_RECOVERY_ZONE_ROM_UNSPECIFIED)
	*(.NT_CONFIG_CONST_ROM_8)
	*(.NT_CONFIG_CONST_ROM_16)
	*(.NT_CONFIG_CONST_ROM_32)
	*(.NT_CONFIG_CONST_ROM_64)
	*(.NT_CONFIG_CONST_ROM_BOOLEAN)
	*(.NT_CONFIG_CONST_ROM_UNSPECIFIED)
	*(.NT_CONFIG_DATA_ROM_8)
	*(.NT_CONFIG_DATA_ROM_16)
	*(.NT_CONFIG_DATA_ROM_32)
	*(.NT_CONFIG_DATA_ROM_64)
	*(.NT_CONFIG_DATA_ROM_BOOLEAN)
	*(.NT_CONST_ROM_PTR) 
	 
  }
  
  MEM_RTE_CONFIG_DATA_ROM_UNSPECIFIED  0x00120000 0x20    
  {  
    *(.T_RTE_CONFIG_DATA_ROM_UNSPECIFIED)
  }
  
  flash_rodata  0x001AE000 0x50000    
  {  
    *(.rozdata)
    *(.robase)
    *(.rosdata)
    *(.rodata)
	
    *(.mcal_config_data)
    *(.mcal_const)
    *(.init_table)
    *(.zero_table)
	
	
    *(.rodata.*)
  } 
  
 
	nt_tasks_ram1 0x1FFE0000 0x00002000
	{
		*(.OS_NO_INIT_STACK8192_CORE0_UNSPECIFIED) 
	}
	nt_tasks_ram2 0x1FFE2000 0x00002000
	{
		
		*(.OS_NO_INIT_STACK4096_CORE0_UNSPECIFIED)
	}
	nt_tasks_ram3 0x1FFE4000 0x00004000
	{ 
		*(.OS_NO_INIT_STACK2048_CORE0_UNSPECIFIED)
	}
	nt_tasks_ram4 0x1FFE8000 0x00001000
	{
		
		*(.OS_NO_INIT_STACK1024_CORE0_UNSPECIFIED)
	}
	nt_tasks_ram5 0x1FFE9000 0x00000800
	{ 
		*(.OS_NO_INIT_STACK512_CORE0_UNSPECIFIED)
	} 
	t_tasks_ram0 0x1FFE9800  0x0000E000
	{ 
		*(.OS_NO_INIT_STACK1_CORE0_UNSPECIFIED)
	}
	
  
	ARM_LIB_STACK 0x1FFF7800+STACK_SIZE EMPTY - STACK_SIZE
	{
	
	}; Stack region growing down  
 
            
	MEM_RTE_VARIANT_PTR 0x1FFFE000  0x20
	{ 
		*(.T_VAR_NO_INIT_UNSPECIFIED_VAR_PTR)
	}
	
	       
	ram_rsvd2 0x1FFFE100  0x800
	{  
		*(.cypress_rsvd)
	} 
	
    ;//----------------------------------------------------------------------------// 

	ram_start_rsvd 0x20000800  0x4
	{  
		*(.ram_start_rsvd)
	} 
	 
    MEM_ADR_LR_DET      0x20000804 0x4
	{ 
		*(.VAR_MOUNTING_SIDE)
	}
    Boot_ResRam         0x2000080C 0x164
	{
		*(.DLOG_VAR_NO_INIT_32)
	}
    Ecc_Fault_log       0x20000974 0x2
	{
		*(.T_VAR_NO_INIT_UNSPECIFIED_VAR_PTR)
	}
    Ext_Wdg_fingerprint 0x20000976 0x2           
	{
		*(.T_VAR_NO_INIT_UNSPECIFIED_VAR_PTR)
	}
    MPU_SELFTEST_RESET  0x20000978 0x2         
	{
		*(.T_VAR_NO_INIT_UNSPECIFIED_VAR_PTR)
	}
    WDG_RESET           0x20000980 0x2          
	{
		*(.T_VAR_NO_INIT_UNSPECIFIED_VAR_PTR)
	}
								   
    ReProgPatn          0x20000984 0x8
	{
		*(.T_VAR_NO_INIT_UNSPECIFIED_VAR_PTR)
	}
								   
    ram_intvec          0x20000A00 VECT_SIZE
	{
		*(.T_VAR_NO_INIT_UNSPECIFIED_VAR_PTR)
	}
    ram_start_rsvd2     0x20000A00+VECT_SIZE  0x00001580
	{
		*(.T_VAR_NO_INIT_UNSPECIFIED_VAR_PTR)
	}
								   
    nt_ram              0x20008000 0x00008000
	{
		*(.T_VAR_NO_INIT_UNSPECIFIED_VAR_PTR)
	}
    rw_ram_sec_init     0x20010000 0x00003000
	{
		*(.sdata)
		*(.pidbase)
		*(.data) 
		*(.mcal_data) 
	}
	
    OS_INIT_RAM     +0  
	{
		*(.OS_INIT_32)
		*(.OS_FAST_INIT_32)
		*(.OS_INIT_16)
		*(.OS_FAST_INIT_16)
		*(.OS_INIT_8)
		*(.OS_INIT_32)
		*(.OS_FAST_INIT_8)
		*(.OS_INIT_1)
		*(.OS_FAST_INIT_1)
		*(.OS_INIT_UNSPECIFIED)
		*(.OS_FAST_INIT_UNSPECIFIED)
	}
	
    RAMCODE    +0  
	{		
		*(.ramcode)                
		*(.APP_RTE_VARIANT_PTR_START)
		*(.T_VAR_INIT_32)
		*(.T_VAR_POWER_ON_INIT_32)
		*(.T_VAR_FAST_INIT_32)
		*(.T_VAR_FAST_INIT_64)
		*(.T_VAR_INIT_16)
		*(.T_VAR_POWER_ON_INIT_16)
		*(.T_VAR_FAST_INIT_16)
		*(.T_VAR_INIT_8)
		*(.T_VAR_INIT_ASIL_D_8)
		*(.T_VAR_INIT_ASIL_D_16)
		*(.T_VAR_INIT_ASIL_D_32)
		*(.T_VAR_INIT_ASIL_D_64)
		*(.T_VAR_INIT_ASIL_D_BOOLEAN)
		*(.T_VAR_INIT_ASIL_B_BOOLEAN)
		*(.T_VAR_INIT_ASIL_D_UNSPECIFIED)
		*(.T_VAR_INIT_64)
		*(.T_VAR_POWER_ON_INIT_8)
		*(.T_VAR_POWER_ON_INIT_64)
		*(.T_VAR_FAST_INIT_8)
		*(.T_VAR_INIT_BOOLEAN)
		*(.T_VAR_POWER_ON_INIT_BOOLEAN)
		*(.T_VAR_FAST_INIT_BOOLEAN)
		*(.T_VAR_INIT_UNSPECIFIED)
		*(.T_VAR_POWER_ON_INIT_UNSPECIFIED)
		*(.T_VAR_FAST_INIT_UNSPECIFIED)
		*(.T_VAR_INIT_PTR)
		*(.RAM_INIT_8BIT)
	} 
	
    rw_ram_sec_noinit   0x20013000 0x00008000
	{
		*(.sbss)
		*(.bss)
		*(.mcal_bss)
		*(.T1_clear)
		*(.T1_bss)
		*(.T1_bssCore0)
		*(.T1_traceBufferCore0)
		*(.T1_bssCoreComms)
		
		
		*(.bss.*)
	}
	
	OS_CLR_RAM +0
	{
		*(.OS_CLEARED_1)
		*(.OS_CLEARED_8)
		*(.OS_CLEARED_16)
		*(.OS_CLEARED_32)
		*(.OS_CLEARED_UNSPECIFIED)
		*(.OS_NO_INIT_1)
		*(.OS_NO_INIT_8)
		*(.OS_NO_INIT_16)
		*(.OS_NO_INIT_32)
		*(.OS_NO_INIT_UNSPECIFIED)
		
		*(.zbss)  /* zero initialized data in ZDA area*/
		*(.T_VAR_NO_INIT_32)
		*(.T_VAR_SAVED_ZONE_NO_INIT_32)
		*(.T_VAR_FAST_NO_INIT_32)
		*(.T_VAR_FAST_NO_INIT_64)
		*(.T_VAR_NO_INIT_16)
		*(.T_VAR_NO_INIT_64)
		*(.T_VAR_SAVED_ZONE_NO_INIT_16)
		*(.T_VAR_FAST_NO_INIT_16)
		*(.T_VAR_NO_INIT_8)
		*(.T_VAR_NO_INIT_ASIL_D_8)
		*(.T_VAR_SAVED_ZONE_NO_INIT_8)
		*(.T_VAR_SAVED_ZONE_NO_INIT_64)
		*(.T_VAR_FAST_NO_INIT_8)
		*(.T_VAR_SAVED_ZONE_NO_INIT_BOOLEAN)
		*(.T_VAR_NO_INIT_BOOLEAN)
		*(.VAR_NO_INIT_STACK_CORE1_UNSPECIFIED)
		*(.T_VAR_FAST_NO_INIT_BOOLEAN)
		*(.T_VAR_NO_INIT_UNSPECIFIED)
		*(.T_VAR_SAVED_ZONE_NO_INIT_UNSPECIFIED)
		*(.T_VAR_CLEARED_NO_INIT_PTR)
		*(.T_VAR_NO_INIT_PTR)	
		*(.T_VAR_FAST_NO_INIT_UNSPECIFIED)	
	}
	
    rw_ram_sec_clear    0x2001B000 0x00002000
	{
		*(.T_VAR_CLEARED_NO_INIT_32)
		*(.RAM_CLEARED_32BIT)
		*(.T_VAR_POWER_ON_CLEARED_NO_INIT_32)     
		*(.T_VAR_POWER_ON_CLEARED_NO_INIT_64)
		*(.T_VAR_FAST_CLEARED_INIT_32)
		*(.T_VAR_FAST_CLEARED_INIT_64)
		*(.T_VAR_CLEARED_NO_INIT_16)
		*(.T_VAR_POWER_ON_CLEARED_NO_INIT_16)
		*(.T_VAR_FAST_CLEARED_INIT_16)
		*(.T_VAR_CLEARED_NO_INIT_8)
		*(.T_VAR_CLEARED_NO_INIT_64)
		*(.T_VAR_CLEARED_NO_INIT_ASIL_D_8)
		*(.T_VAR_CLEARED_NO_INIT_ASIL_D_16)
		*(.T_VAR_CLEARED_NO_INIT_ASIL_D_32)
		*(.T_VAR_CLEARED_NO_INIT_ASIL_D_64)
		*(.T_VAR_CLEARED_NO_INIT_ASIL_D_UNSPECIFIED)
		*(.T_VAR_POWER_ON_CLEARED_NO_INIT_8)
		*(.T_VAR_FAST_CLEARED_INIT_8)
		*(.T_VAR_CLEARED_NO_INIT_BOOLEAN)
		*(.T_VAR_POWER_ON_CLEARED_NO_INIT_BOOLEAN)
		*(.T_VAR_FAST_CLEARED_INIT_BOOLEAN)
		*(.T_VAR_CLEARED_NO_INIT_UNSPECIFIED)
		*(.T_VAR_CLEARED_NO_INIT_ASIL_D_BOOLEAN)
		*(.T_VAR_POWER_ON_CLEARED_NO_INIT_UNSPECIFIED)
		*(.T_VAR_FAST_CLEARED_INIT_UNSPECIFIED)
		*(.VAR_NO_INIT_UNSPECIFIED_STACK)
		*(.VAR_INIT_BOOLEAN_RAM)
		*(.RAM_INIT_16BIT)
		*(.RAM_INIT_1BIT)
		*(.RAM_INIT_UNSPECIFIED)
		*(.RAM_CLEARED_UNSPECIFIED)
		*(.RAM_CLEARED_1BIT)
		*(.RAM_NO_INIT_8)
	}
								   
    rw_ram_end          0x2001FFF0 0x00000010
	{
		*(.End)
	}
				 
 
}

