【简介】
S32K3XX 系列系列有着丰富的RAM资源,本地使用的S32K328片内有三块SRAM,每块大小为256KB

对应的RAM 范围为0x20400000~204bffff,此地址范围和link file 中的定义的范围也是匹配的。

从芯片手册中可以看出SRAM0 的64KB支持standby 模式保存的属性,从说明可知RAM 支持ECC ,每64bit ram 数据对应 8bit 的ECC校验码,采用的ECC算法为SECDEC

对于64KB的Standby RAM link file 中有如下配置弱国超出64KB 会触发异常的断言。
__STANDBY_RAM_LIMIT_END  = 0x2040FFFF;  /* 64Kbyte for standby ram */
.sram_bss (NOLOAD) :
{
. = ALIGN(8);
__standby_ram_begin__ = .;
*(.standby_data)
. = ALIGN(8);
__standby_ram_end__ = .;
. = ALIGN(16);
__sram_bss_start = .;
*(.bss)
*(.bss*)
. = ALIGN(16);
*(.mcal_bss)
. = ALIGN(4);
__sram_bss_end = .;
} > int_sram
    ASSERT(__standby_ram_end__ <= __STANDBY_RAM_LIMIT_END, "Memory for standby ram overflow")S32K3 系列芯片是支持ECC特性的,ECC 默认为开启状态,使用RAM资源前需要对RAM 进行ECC初始化处理,启动代码中有如下的初始化处理。
/******************************************************************/ /* Autosar Guidance - The start-up code shall initialize a */ /* minimum amount of RAM in order to allow proper execution of */ /* the MCU driver services and the caller of these services. */ /******************************************************************/ RamInit: /* Initialize SRAM ECC */ ldr r0, =__RAM_INIT cmp r0, 0 /* Skip if __RAM_INIT is not set */ beq SRAM_LOOP_END ldr r0, =MCRGM_DES ldr r1, [r0] ldr r2, =MCRGM_DES_F_POR and r1, r1, r2 cmp r1, 0 beq NO_INIT_STANDBY_REGION ldr r2, =__INT_SRAM_START ldr r3, =__INT_SRAM_END b ZERO_64B_RAM NO_INIT_STANDBY_REGION: #ifdef EXTEND_LOWRAM_DERIVATIVES #if defined(S32K310)||defined(S32K311)||defined(S32M276)||defined(S32M274) ldr r2, =__BSS_SRAM_NC_START #else ldr r2, =__BSS_SRAM_START #endif #else ldr r2, =__BSS_SRAM_START #endif ldr r3, =__INT_SRAM_END ZERO_64B_RAM: cmp r2, r3 bge SRAM_LOOP_END movs r0, 0 movs r1, 0 SRAM_LOOP: strd r0, r1, [r2], #8 cmp r2, r3 blt SRAM_LOOP SRAM_LOOP_END:
以上代码 RAM 的ECC 的初始化是否执行是根据__RAM_INIT flag 来决定是否进行初始化,此符号是在link file中进行的定义,默认值为1,对应代码如下:

我们可以修改__RAM_INIT = 0 来关闭RAM ECC 初始化处理。
上述初始化代码会根据当前启动是否为POR 重启,如果是POR 重启则对整片的SRAM进行初始化,如果为非POR重启则跳过standby 的RAM区域进行初始化。以下的代码根据是否初始化standby RAM 来配置初始化RAM 的开始结束地址。

上述的符号的定义也是在link file 中进行定义。


 
					
				 
						
 
			
			
			
						
			 我要赚赏金
 我要赚赏金 STM32
STM32 MCU
MCU 通讯及无线技术
通讯及无线技术 物联网技术
物联网技术 电子DIY
电子DIY 板卡试用
板卡试用 基础知识
基础知识 软件与操作系统
软件与操作系统 我爱生活
我爱生活 小e食堂
小e食堂

