【萌新求助】关于把数组存入【psram】问题

[复制链接]
查看244 | 回复5 | 2024-12-23 22:42:58 | 显示全部楼层 |阅读模式
最近在做一个项目,结果编译报错
d:/pai/aipi-open-kits/aithinker_ai-m6x_sdk/toolchain_gcc_t-head_windows/bin/../lib/gcc/riscv64-unknown-elf/10.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: build_out\bl616_gba_bl616.elf section `.bss' will not fit in region `ram_memory'
d:/pai/aipi-open-kits/aithinker_ai-m6x_sdk/toolchain_gcc_t-head_windows/bin/../lib/gcc/riscv64-unknown-elf/10.2.0/../../../../riscv64-unknown-elf/bin/ld.exe: region `ram_memory' overflowed by 510760 bytes
问了GPT,说是
section '.bss' will not fit in region 'ram_memory':这说明了链接器在尝试将.bss节(通常是用来存放未初始化的全局变量或静态变量的内存段)放入名为ram_memory的内存区域时出现了溢出。
region 'ram_memory' overflowed by 510760 bytes:这是指内存区域ram_memory溢出了510760字节,也就是该区域无法容纳所有的数据。
M61-32S的配置是4MBpSRAM,532KB SRAM,128KBROM,应该是SRAM不够,我看看网上的方案,应该可以用pSRAM。
其中
项目代码中的大数组在下面
数组.png
psram示例工程给了按地址写入的代码,如何把数组存入psram中呢??
为了用pSRAM,我又去找了psram的示例代码,运行了一下
在aithinker_Ai-M6X_SDK\drivers\lhal\include\compiler\compiler_ld.h
头文件里面找到这句
  • #define ATTR_PSRAM_SECTION __attribute__((section(".psram_data")))

[color=rgb(68, 68, 68) !important]复制代码

GPT说是
  • 这句宏定义 ATTR_PSRAM_SECTION 可能是为了在编写C代码时方便地将特定变量或函数指定存储在PSRAM(Pseudo Static Random Access Memory,伪静态随机存取存储器)的数据段中。
  • __attribute__((section(".psram_data"))) 是GCC编译器的一种语法,用于指定变量或函数存放的段(section)。在这里,.psram_data 可能代表着一个PSRAM的数据段,意味着被此宏修饰的变量或函数将被存放在PSRAM中。这样做的目的可能是为了利用PSRAM的高速和临时存储特性,提高对这些数据的访问速度。

[color=rgb(68, 68, 68) !important]复制代码

我写了个示例,验证了一下
psram.png
结果没有任何输出,求指教
回复

使用道具 举报

爱笑 | 2024-12-24 08:36:21 | 显示全部楼层
让泽哥给你瞧瞧!
用心做好保姆工作
回复 支持 反对

使用道具 举报

Ai-Thinker小泽 | 2024-12-24 08:44:00 | 显示全部楼层
换爱星云分支的SDK试试看
回复 支持 反对

使用道具 举报

Ai-Thinker小泽 | 2024-12-24 08:45:17 | 显示全部楼层
或者你看看D200源码那个,工程里也用到psram了
回复 支持 反对

使用道具 举报

O2C14 | 2024-12-24 15:11:43 | 显示全部楼层
ATTR_PSRAM_SECTION的位置都放错了,看ram_speed这个例子就知道怎么写了
回复 支持 反对

使用道具 举报

xiaoch669 | 2024-12-28 10:30:03 | 显示全部楼层
O2C14 发表于 2024-12-24 15:11
ATTR_PSRAM_SECTION的位置都放错了,看ram_speed这个例子就知道怎么写了

谢谢大佬
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则