UBoot作為boot loader,默認留給malloc分配的內存的大小有限。這個大小由宏TOTAL_MALLOC_LEN定義。它在include\Common.h文件里,從宏CONFIG_SYS_MALLOC_LEN派生出來。
初始化過程中,從board\xilinx\zynqmp\Board_r.c的initr_malloc( )開始,調用common\Dlmalloc.c中的mem_malloc_init( ),初始化了三個全局變量:mem_malloc_start,mem_malloc_end, mem_malloc_brk。
分配內存時,sbrk()分配內存,並增加mem_malloc_brk的值;如果mem_malloc_brk超出范圍,就報告錯誤。
因此,增大CONFIG_SYS_MALLOC_LEN的值,可以增加增加UBoot的malloc分配的內存大小。
另外malloc_simple.c里的alloc_simple是UBoot在沒有搬運之前,簡單的malloc的實現。其中,gd->malloc_base是可用內存的開始地址, gd->malloc_ptr是當前可用的memory地址, gd->malloc_limit是可用內存的結束地址。