Reserved memory: created CMA memory poolat0x0000000940000000, size512MiB OF:reserved mem: initialized node linux-cma-buffers@931000000,compatible idshared-dma-pool 对应设备树节点(另外,CMA 也可以通过 cmdline 和 .config 文件进行配置,配置的优先级 dts > cmdline > .config): reserved_memory: reserved-me...
以vexpress-v2p-ca9.dts中保留内存的定义方式为例,说明dts文件中如何定义保留内存。 reserved-memory { #address-cells = <1>; #size-cells = <1>; ranges; /* Chipselect 3 is physically at 0x4c000000 */ vram: vram@4c000000 { /* 8 MB of designated video RAM */ compatible = "shared-dma-...
/include/ "system-conf.dtsi" / { reserved-memory { #address-cells = <1>; #size-cells = <1>; ranges; reserved: buffer@0x38000000 { no-map; reg = <0x38000000 0x08000000>; }; }; reserved-driver@0 { compatible = "xlnx,reserved-memory"; memory-region = <&reserved>; }; }; 1...
/include/"system-conf.dtsi" /{ reserved-memory{ #address-cells = <1>; #size-cells = <1>; ranges; reserved:buffer@0x38000000{ no-map; reg=<0x380000000x08000000>; }; }; reserved-driver@0{ compatible="xlnx,reserved-memory"; memory-region=<&reserved>; }; }; 1. 2. 3. 4. 5....
如上案例中,引用reserved-memory节点,并删除了ranges属性,删除了hyp_mem节点,新增了kboot_uboot_logmem节点; 规则3:只有引用申明的节点,在dtsi中“&节点名”才会生效,否则引用点将不生效;例如:firmware节点下fstab 节点的定义如下 firmware:firmware中“:”之前的内容为引用申明。只有申明后才可以在其他地方引用。Fir...
4)把内核镜像占用的物理内存范围添加到memblock.reserved中; ( 5)从dts文件中的内存保留区域(memory reserve map,对应设备树源文件的字段“/memreserve/”)和节点“/reserved-memory”读取保留的物理内存范围,添加到memblock.reserved中。 API接口 memblock_add ...
staticconststructreserved_mem_ops rmem_dma_ops = { .device_init = rmem_dma_device_init, .device_release = rmem_dma_device_release, }; 3. 设备树中保留内存的定义方式 以vexpress-v2p-ca9.dts中保留内存的定义方式为例,说明dts文件中如何定义保留内存。
如上案例中,引用reserved-memory节点,并删除了ranges属性,删除了hyp_mem节点,新增了kboot_uboot_logmem节点; 规则3:只有引用申明的节点,在dtsi中“&节点名”才会生效,否则引用点将不生效;例如:firmware节点下fstab 节点的定义如下 firmware:firmware中“:”之前的内容为引用申明。只有申明后才可以在其他地方引用。Fir...
在dts文件里,每个大括号{ }代表一个节点,比如根节点里有个大括号,对应一个device_node结构体;memory也有一个大括号,也对应一个device_node结构体。 节点里面有各种属性,也可能里面还有子节点,所以它们还有一些父子关系。 根节点下的memory、chosen、led等节点是并列关系,兄弟关系。 对于父子关系、兄弟关系,在device...
CMA:Contiguous Memory Allocator,连续内存分配框架,它是在前面的页面迁移功能的基础上实现的。旨在解决视频播放摄录等需要预留大量连续内存导致运行内存紧张问题。其可以通过dts(设备树)、参数或者宏配置开启。虽然有分配(cma_alloc())和释放(cma_release())接口的定义,但是通常不会直接使用,更多的是嵌入到DMA中使用。