代码及数据位置

概述

可以使用一些控制项及宏控制连接阶段代码和数据存放的位置

内存类型

  • 内部RAM (IRAM)

    riscv 中的片上存储,可以存放代码(text)和数据(data, rodata, bss), 代码和数据在此位置具有理论最高的访问速度

  • XIP flash只读存储 (XIP_CACHE)

    flash存储,可以存放代码(text)和只读数据(rodata), 代码在此位置需要讲过cache,未命中时从外部读取,效率较低

  • PSRAM (外部读写内存)

    psram存储,可以存放代码(text)和数据(data, rodata, bss), 此位置访问速度同XIP,但是由于同时会存储可写内容,代码在此位置执行时整体效率将低于XIP

配置

  • CONFIG_SMALL_IRAM

    降低内部iram的使用,将非关键代码段放在非iram中

  • *CORE_PSRAM_LENGTH

    分配给某个core的PSRAM长度

  • *CORE_PSRAM_DATA_SECTION

    默认将data段放进psram中

  • *CORE_PSRAM_BSS_SECTION

    默认将bss段放进psram中

说明

IRAM_TEXT

将代码放进内部ram中

IRAM_RODATA

将只读数据放进内部ram中

IRAM_DATA

将数据放进内部ram中

IRAM_BSS

将未初始化数据放进内部ram中

XIP_TEXT

将代码放进Flash中

XIP_RODATA

将只读数据放进Flash中

PSRAM_TEXT

将代码放进psram中

PSRAM_RODATA

将只读数据放进psram中

PSRAM_DATA

将数据放进psram中

PSRAM_BSS

将未初始化数据放进psram中