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
//定義三個內(nèi)存池
#define SRAM1? ?0? ? ? ?//內(nèi)部內(nèi)存池SRAM1
#define SRAM2? ?1? ? ? ?//內(nèi)部內(nèi)存池SRAM2
#define SRAMBANK? ? 2? ?//定義支持的SRAM塊數(shù).
//mem1內(nèi)存參數(shù)設(shè)定.mem1處于內(nèi)部SRAM1里面.
#define MEM1_BLOCK_SIZE? ? ? ? ?64? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //內(nèi)存塊大小為64字節(jié)
#define MEM1_MAX_SIZE? ? ? ? ? ?50*1024? ? ? ? ? ? ? ? ? ? ? ? ?//SRAM2空間為96K
#define MEM1_ALLOC_TABLE_SIZE? ?MEM1_MAX_SIZE/MEM1_BLOCK_SIZE? ?//內(nèi)存表大小
//mem2內(nèi)存參數(shù)設(shè)定.mem2處于內(nèi)部SRAM2里面.
#define MEM2_BLOCK_SIZE? ? ? ? ?64? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //內(nèi)存塊大小為64字節(jié)
#define MEM2_MAX_SIZE? ? ? ? ? ?30 *1024? ? ? ? ? ? ? ? ? ? ? ? //SRAM2空間為32K
#define MEM2_ALLOC_TABLE_SIZE? ?MEM2_MAX_SIZE/MEM2_BLOCK_SIZE? ?//內(nèi)存表大小
malloc.c
//內(nèi)存池(32字節(jié)對齊)
__attribute__((aligned(32))) u8 mem1base[MEM1_MAX_SIZE];? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//內(nèi)部SRAM1內(nèi)存池
__attribute__((aligned(32))) u8 mem2base[MEM2_MAX_SIZE]__attribute__((at(0X20000000)));? ? ? ? ? ? ? ? ?//內(nèi)部SRAM2內(nèi)存池
//內(nèi)存管理表
u32 mem1mapbase[MEM1_ALLOC_TABLE_SIZE];? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//內(nèi)部SRAM1內(nèi)存池MAP
u32 mem2mapbase[MEM2_ALLOC_TABLE_SIZE]__attribute__((at(0X20000000 + MEM2_MAX_SIZE))); //內(nèi)部SRAM2內(nèi)存池MAP