请教一下这是什么问题

d:/mounriver_studio/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: SDIO-FATFS-TEST.elf section `.bss' will not fit in region `RAM'

d:/mounriver_studio/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: section .stack VMA [0000000020007800,0000000020007fff] overlaps section .bss VMA [00000000200000c0,0000000020015923]

d:/mounriver_studio/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: region `RAM' overflowed by 0 bytes

collect2.exe: error: ld returned 1 exit status

make: *** [makefile:59: SDIO-FATFS-TEST.elf] Error 1


移植的原子的程序,感觉是malloc的问题

malloc.h

//定义三个内存池

#define SRAM1   0       //内部内存池SRAM1

#define SRAM2   1       //内部内存池SRAM2


#define SRAMBANK    2   //定义支持的SRAM块数.


//mem1内存参数设定.mem1处于内部SRAM1里面.

#define MEM1_BLOCK_SIZE         64                              //内存块大小为64字节

#define MEM1_MAX_SIZE           50*1024                         //SRAM2空间为96K

#define MEM1_ALLOC_TABLE_SIZE   MEM1_MAX_SIZE/MEM1_BLOCK_SIZE   //内存表大小


//mem2内存参数设定.mem2处于内部SRAM2里面.

#define MEM2_BLOCK_SIZE         64                              //内存块大小为64字节

#define MEM2_MAX_SIZE           30 *1024                        //SRAM2空间为32K

#define MEM2_ALLOC_TABLE_SIZE   MEM2_MAX_SIZE/MEM2_BLOCK_SIZE   //内存表大小


malloc.c

//内存池(32字节对齐)

__attribute__((aligned(32))) u8 mem1base[MEM1_MAX_SIZE];                                                 //内部SRAM1内存池

__attribute__((aligned(32))) u8 mem2base[MEM2_MAX_SIZE]__attribute__((at(0X20000000)));                 //内部SRAM2内存池

//内存管理表

u32 mem1mapbase[MEM1_ALLOC_TABLE_SIZE];                                                 //内部SRAM1内存池MAP

u32 mem2mapbase[MEM2_ALLOC_TABLE_SIZE]__attribute__((at(0X20000000 + MEM2_MAX_SIZE))); //内部SRAM2内存池MAP


您好,GCC目前不支持attribute at属性,需要通过section属性和LD来实现类似功能,编译显示RAM也超出了,您使用的是哪款芯片,以及具体的用法及程序可以到邮箱:yangy@wch.cn 。详细沟通下。


你好,已发送至你的邮箱,请赐教


只有登录才能回复,可以选择微信账号登录