ucosIII+Fatfs MDK编译内存不足

来源:互联网 发布:桌面世界时钟软件 编辑:程序博客网 时间:2024/05/23 19:13

使用正点原子的stm32mini板,按照原子的教程先移植好ucosIII,使用正常,移植好Fatfs,只跑fatfs,也正常,但两者一起使用编译,就出问题了。


MDK编辑器件报错,内存不足。为了查看是什么文件占用了这么大内存,我更换了大内存device,编译成功后查看 .map文件



    Total RO  Size (Code + RO Data)                42160 (  41.17kB)    Total RW  Size (RW Data + ZI Data)             52256 (  51.03kB)    Total ROM Size (Code + RO Data + RW Data)      42492 (  41.50kB)

原子的mini板用的是stm32f103rct6,sram为48k,而此处的RW Size为51.03K,超了。继续查看.map文件,发现

       300         30          0         20      38080       4873   malloc.o       144         16          0          0          0       1869   misc.o

主要是malloc.c中的 
//ÄÚ´æ²ÎÊýÉ趨.#define MEM_BLOCK_SIZE32    #define MEM_MAX_SIZE35*1024  #define MEM_ALLOC_TABLE_SIZEMEM_MAX_SIZE/MEM_BLOCK_SIZE 
太占用内存了。

因而我将malloc的内存池改小点,便可以编译成功了。

通过对比原子的综合例程,发现,原子的综合例程也占用了sram 44.80k,我的工程与其的主要SRAM占用区别在于系统,原子用的为UCOSII,我的工程为UCOSIII,UCOSII系统文件所用SRAM较小,而UCOSIII的几个文件的SRAM占用较大,因而导致了超出48K。

原创粉丝点击