CN / EN
文档反馈
感谢关注汇顶文档,期待您的宝贵建议!
感谢您的反馈,祝您愉快!

RAM存储映射

GR533x RAM起始地址为0x2000_0000,由6个内存块(RAM Block)组成(6*16 KB)。每个RAM内存块均可由软件独立打开或关闭电源。

96 KB RAM存储布局如下图所示。

图 8 96 KB RAM存储布局

程序运行模式为Execute in Place(XIP)模式,即片上运行模式。用户应用程序存储于片上Flash空间,且程序运行空间和加载空间相同。系统完成上电配置后,通过Cache Controller直接从Flash空间取指运行。

典型RAM布局

下图为包含Bluetooth LE工程程序运行时的典型RAM布局。开发者可以根据产品需求,自定义RAM布局。

图 9 XIP模式的RAM(含Bluetooth LE工程)布局
  • RAM CODE字段中存储了在RAM中执行的代码。为提高执行效率,建议将其定义在同物理地址的0x00100000 Aliasing Memory区域 。

  • EM供Bluetooth LE CORE使用,并与MCU所使用的SRAM统一管理,位于SRAM的最高地址空间处。其Size取决于custom_config.h中配置的蓝牙业务数量。若工程不包含Bluetooth LE业务,则可将custom_config.h中宏EM_BUFF_ENABLE的值设置为0。

  • Stack字段中存储了任务调用栈。在不含Bluetooth LE业务的外设工程中,将Stack定义在RAM最高地址处;在含Bluetooth LE业务的工程中,将Stack定义在EM之下。Stack大小由宏SYSTEM_STACK_SIZE定义,开发者需根据工程的函数调用深度和调用栈消耗情况确定其大小。

RAM电源管理

每一个RAM Block可以处于三种不同电源状态:Full Power、Retention Power 或Power Off。

  • Full Power:系统处于Active状态时,MCU可以进行RAM Block读写。
  • Retention Power:系统进入Sleep模式时, RAM Block中存储的数据不会丢失,可供系统从Sleep状态恢复到Active状态态使用。
  • Power off:系统关机时, RAM Block会掉电,其存储的数据也会丢失。因此,开发者需提前保存数据。

GR533x的电源管理单元(PMU)在系统启动时默认开启全部RAM电源。GR533x SDK中也提供了完备的RAM电源管理API,开发者可以根据应用需求,合理配置RAM Block电源状态。

系统启动时,默认启用自动RAM功耗管理模式:根据Application的RAM使用情况,自动进行RAM Block电源状态控制,具体配置规则如下:

  • 在系统Active状态下,将未使用的RAM Block设置为Power off状态,使用的RAM Block设置为Full Power状态。
  • 当系统进入Sleep状态时,将未使用的RAM Block保持为Power off状态,而使用的RAM Block设置为Retention Power状态。

在实际应用中,建议RAM配置如下:

  • 在Bluetooth LE应用中,RAM_16K_0的前 8 KB预留给Bootloader和Bluetooth LE协议栈使用,Application不可使用。在系统Active状态下,RAM_16K_0应处于Full Power状态;在系统Sleep期间,RAM_16K_0应处于Retention Power状态。非Bluetooth LE类MCU应用可以使用该RAM Block。
  • RAM_16K_1及其他RAM Block的用途可由Application进行规划定义。GR533x RAM已根据执行效率和SRAM的资源利用率进行合理布局,开发者也可根据实际应用需求重新规划。这些RAM Block的电源状态可以全部开启,也可以由Application自行控制。
说明:
  • 仅当RAM Block处于Full Power状态时,MCU才能对其进行访问。
  • 更多RAM电源管理API的详细说明,可参考SDK_Folder\components\sdk\platform_sdk.h

扫描关注

打开微信,使用“扫一扫”即可关注。