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是可用内存的结束地址。

相关文章:

  • 2022-12-23
  • 2021-05-19
  • 2021-08-12
  • 2022-12-23
  • 2021-07-24
  • 2021-07-25
猜你喜欢
  • 2021-10-14
  • 2022-03-01
  • 2021-06-26
  • 2022-01-19
  • 2021-06-21
  • 2022-12-23
相关资源
相似解决方案