7840 ram地址分配


7840 standby低功耗下ram数据保留
keil的sct中配置如下

代码调用
cpp
uint8 g_standbyTest __attribute__((section(".uinit_ram1fff"), zero_init));
uint8 g_standbyTestv1 __attribute__((section(".uinit_ram1400"), zero_init));
在休眠之前定义

退出休眠后
发现数据保留了

7843 ram地址分配


7843 standby低功耗下ram数据保留
sct链接文件修改

变量定义
cpp
uint8 g_standbyTest __attribute__((section(".uinit_ram1fff"), zero_init));
uint8 g_standbyTestv1 __attribute__((section(".uinit_ram2000"), zero_init));
uint8 g_standbyTestBuff[3] __attribute__ ((section(".uinit_ram1fff"),zero_init));

测试代码

cpp
int main(void)
{
Spm_Reg_SelectLVDThreshold(SPM_LOW); /* 设置低电压检测阈值: SPM_LOW对应3.3V供电系统, SPM_HIGH对应5V供电系统 */
Ckgen_Hal_InitClk(&g_clockGenCfg);
Ckgen_Hal_DistributeClk(&g_clkDistributeCfg);
OsIf_Init();
Debug_Init();
GPIO_KeyInit();
GPIO_LedInit();
Spm_Hal_Init(&Spm_UserConfig);
Debug_Printf("GPIO Basic Test-----------------\r\n");
spmWakeupStatus = Spm_Hal_GetStandbyWakeupStatus();
Debug_Printf("spmWakeupStatus = %x\r\n",spmWakeupStatus);
resetStatus = Rcm_Hal_GetResetStatus();
Debug_Printf("resetStatus = %x\r\n",resetStatus);
Debug_Printf("standbyTest = %d\r\n",g_standbyTest);
Debug_Printf("standbyTestv1 = %d\r\n",g_standbyTestv1);
Debug_Printf("g_standbyTestBuff = %d\r\n",g_standbyTestBuff[0]);
g_standbyTest = 100; /*standbyTest 赋值后 Standby 唤醒后SRAM中保持为0x64*/
g_standbyTestv1 = 100;
g_standbyTestBuff[0] = 100;
OsIf_UDelay(1000000);
Rcm_Hal_ClearResetStatus();
while (1)
{
LED_Toggle_Task();
if (FALSE != Get_Key1_Status())
{
Spm_Hal_SetPowerMode(SPM_MODE_STANDBY);
LED1_TOGGLE;
LED2_TOGGLE;
}
}
}
