reserved-memory :
预留的内存区域需要从linux内核的使用区域中分离出来,仅给特定的驱动程序使用,通过memory-region参数将预留的内存空间分配给特定的设备驱动程序使用。
- shared-dma-pool
compatible="shared-dma-pool"
有的时候设备驱动程序需要采用DMA的方式使用预留的内存,对于这种场景,可以dts中的节点属性设置为shared-dma-pool,从而生成为特定设备驱动程序预留的DMA内存池。这样,设备驱动程序仅需要以常规方式使用DMA API,但无需使用默认的CMA内存池,它将使用该特定设备的预留内存区域。(独占这一块内存,仍然使用DMA的接口)
- reusable
对于reusable属性,当驱动程序不使用这些内存的时候,OS可以使用这些内存;而当驱动程序从这个CMA area分配memory的时候,OS可以释放这些内存,让驱动可以使用它。
- no-map
no-map属性与地址映射有关,如果没有no-map属性,那么OS就会为这段memory创建地址映射,象其他普通内存一样。但是对于no-map属性,往往是专用.
由于保留的内存区域已被内核排除,并标记为no-map,因此iomem信息(/ proc / iomem)显示系统RAM小于主板中的内存量。
/proc/iomem提示了系统中设备的物理布局
cat /proc/iomem
43a04000-459fffff : System RAM
5c200000-11fffffff : System RAM
5c480000-5d61ffff : Kernel code
5d770000-5e577fff : Kernel data
500000000-507ffffff : MEM