代码及数据位置
概述
可以使用一些控制项及宏控制连接阶段代码和数据存放的位置
内存类型
内部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中 |