camera内存之---cma模块(2)

本文深入探讨了CMA(Contiguous Memory Allocator)在Linux内核中的作用与实现机制,详细介绍了CMA结构体的设计原理,以及如何通过dma子系统集成,使设备驱动能够高效地分配连续物理内存。同时,文章对比了CMA与dma-coherent两种内存管理方式,并分析了rk3399平台camera模块的实际应用情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先解释下cma
CMA,Contiguous Memory Allocator,是内存管理中的一个模块,用于分配连续物理内存。
主要是针对多媒体,camera这种需要分配大段连续物理内存的模块使用(camera需要用到dma,dma正常只支持物理连续内存搬运)。
Cma还可以与dma子系统继承在一起,使用dma的设备驱动只需要访问dma相关api即可。

先看下cma结构体
用于描述一个cma

struct cma {
   
	unsigned long   base_pfn;//物理地址起始页帧号
	unsigned long   count;     //总页数
//描述分页情况 0:free 1:已分配,里面的每个bit对应后面order_per_bit表示个数的分配情况
	unsigned long   *bitmap; 
	//以order_per_bit 的2次方个page为单位申请释放
	unsigned int order_per_bit; 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值