cma_mma

cma以及mma内存分配介绍

mstar平台为例子。

问题引入:

ssr931g在插入usb过程中会报错。

1
cma:cma_calloc:memory range at ptrval is busy,  retrying。
cma介绍

CMA –> 连续内存分配器。是一种用于申请大量的,并且物理上连续的内存块的方法。在设备驱动USB,HOST,DMA,ETH PHY中起关键作用。

内存分配 –> Sstar

image-20240913102052749

sstar的内存分配图。如上。LX_MEM有可能有好几块,例如某些SOC上会有双通道DDR,每个DDR上面会各自分配一块LX_MEM。还有某些特别的情况,一颗DDR上面可能会分配多个LX_MEM。多个LX_MEM的命名规则为LX_MEM1、LX_MEM2,以此类推。

注意:MMA Heap以及HW IP Layout分配出来的内存在物理上是连续的,但是LX_MEM分配给linux kernel的不一定是在物理上连续的。