全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 控制/MCU >

三大开发环境下的Standby RAM变量配置教程

时间:2025-07-05 15:18

人气:

作者:admin

标签: 瑞萨  Standby  RAM  开发环境 

导读:在嵌入式低功耗设计中,Standby RAM(待机保持内存)是芯片在深度休眠模式下仍能保持数据的关键硬件资源。但许多开发者苦于不同开发环境的配置差异,难以高效利用这一特性。...

嵌入式低功耗设计中,Standby RAM(待机保持内存)是芯片在深度休眠模式下仍能保持数据的关键硬件资源。但许多开发者苦于不同开发环境的配置差异,难以高效利用这一特性。

本文将以e2studio(瑞萨)、KEIL MDK(ARM)和IAR EW(IAR Embedded Workbench)三大主流开发环境为例,手把手教你在瑞萨RA6M4平台上实现“将变量精准分配至Standby RAM”的终极目标。对于其他内置Standby RAM的瑞萨RA系列MCU产品,均可参考本文的配置过程,并参考硬件手册做适当修改。本例中,Standby RAM的起始地址为0x28000000,大小为0x400。

9fbe7cfc-5630-11f0-b147-92fbcf53809c.png

01e2studio工程中

(1)在fsp.ld文件中添加以下内容,定义Standby RAM这部分区域:

9fd08d7a-5630-11f0-b147-92fbcf53809c.png

9fe97e98-5630-11f0-b147-92fbcf53809c.png

(2)hal_entry.c中在R_BSP_WarmStart中添加以下内容,允许使用Standby RAM并进行初始化。

a000af50-5630-11f0-b147-92fbcf53809c.png

(3)代码编辑、编译&调试,并打开Memory窗口进行验证。

需要放置到Standby RAM区域的数据需要做特定的声明。例如:

uint8_t g_standby_ram_variable[512] BSP_PLACE_IN_SECTION(“.standby_ram”) = {0,1,2,3,4,5,6,7,8,9,10};

从下图中可以看到数组g_standby_ram_variable[512]的数据已经放在Standby RAM区域中。

a0183152-5630-11f0-b147-92fbcf53809c.png

02KEIL MDK工程中

(1)打开KEIL MDK工程,点击Option for Target

a0319d72-5630-11f0-b147-92fbcf53809c.png

Target标签页Read/Write Memory Areas,定义一块区域

a09da2f6-5630-11f0-b147-92fbcf53809c.png

点击Linker标签页,取消链接勾选,自定义链接脚本,点击2处编辑

a0b1fe22-5630-11f0-b147-92fbcf53809c.png

定义一片区域

a0d5bdda-5630-11f0-b147-92fbcf53809c.png

(2)定义变量

uint8_t var00[10] __attribute__((section("SAMPLE_NAME_A")));

(3)代码中添加对这个变量的写入

a0e3a5c6-5630-11f0-b147-92fbcf53809c.png

(4)编译&调试,进行验证

从Memory窗口,可以看到放置在Standby RAM区域的变量被正常写入

a0f4d954-5630-11f0-b147-92fbcf53809c.png

03IAR EW工程中

(1)修改链接器配置文件(.icf)

在项目的链接器配置文件中定义Standby RAM区域和段:

define region STANDBY_RAM = mem:[from 0x28000000 to 0x280003FF];

define block STANDBY_BLOCK { section .standby_ram };

place in STANDBY_RAM { block STANDBY_BLOCK };

do not initialize { section .standby_ram};

(2)在代码中声明变量

使用__no_init关键字和#pragma location指令将变量分配到指定段:

#pragma location = ".standby_ram"

__no_init uint8_t g_standby_ram_variable[512];

(3)在用户代码中手动初始化,并赋值

a10bb750-5630-11f0-b147-92fbcf53809c.png

(4)编译&调试,进行验证

从Memory窗口,确认变量地址和数值。

a11d136a-5630-11f0-b147-92fbcf53809c.png

通过上述步骤,我们实现了三大开发环境下的Standby RAM变量配置。无论你使用e2studio、KEIL MDK还是IAR EW,核心逻辑始终一致:

编译器层:通过链接脚本隔离内存区域

代码层:结合复位类型检测实现按需初始化

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信