iMX53 IPU图解之IDMAC

本文介绍了iMX53 IPU的模块构成,重点关注了IDMAC(Image DMA Controller)及其在数据传输中的作用。IDMAC控制DMA传输,与Control Module (CM) 协作,负责通道管理和数据存取。内部总线结构和地址计算单元确保高效的数据处理。此外,文章提到了数据存储格式、通道控制和参数内存等关键概念。

下面开始IPU模块框图,我们将引入部分Sansung S5PV210部分图形处理单元框图,调整视角与iMX53进行比较,因为他们都是ARM架构都将肩负同样的使命(图形处理并输出)。


IPU系统模块框图

从上图我们可以得出iMX53 IPU由以下模块构成:

CSI - Camera Sensor Interface

DI - Display Interface

DC - Display Controller

DP - Display Processor

IC - Image Converter

VDIC - Video De Interlacer

IRT - Image Rotator

IDMAC - Image DMA Controlle

DMFC - Display Multi FIFO Controller

CM - Control Module

除此之外我们还应该注意他们之间的连线,因为它反映了IPU内部数据总线的连接关系。后面我们即将深入研究的DMA传输都需要物理连接着支撑。

下面将开始内部总线研究。


该图看起来比较让人头疼,但他至少揭示了DAM需要使用的两个重点单元CMIDMAC。因此可以基于该线索对框图调整后如下图:


数据要进行DMA传输全部需要IDMAC进行控制。CM(Control Module)看看他的大名,总指挥就是他了。

再来一个Sansung描述的IPU对数据处理的框图。


该图让IPU的工作看起来更明确了。

内部控制核心IDMACCM分析:
在分析IDMAC之前我们需要先看看IDMAC数据传输需要遵循的规则。

1.数组存放规则。


经典数据存储图

根据DMA搬运原理,AXI总线每次传输64bit,需要对像素点数据进行存放,因为后面的大部分数据处理都以像素点为单位。数据存放与数据处理息息相关,代码反映为像素点格式,存储区域大小。放大到窗口内存区域。

typedef struct framebuffer_device_t {

..........

/* dimensions of the framebuffer in pixels */

const uint32_t width;

const uint32_t height;


/* frambuffer stride in pixels */

const int stride;


/* framebuffer pixel format */

const int format;

…………

};

再看IDMAC框图


该模块由大量小单元组成,但要做的事为:记录通道信息,访问优先级配置等等。还需要分析IDMAC读写控制不同的数据控制点。

IBIW & IBIR - Internal bus interface for write and read

IPU内部总线向IDMAC桥接,可以简单看成多路复用控制模块。

FCW & FCR - Format converter write and read

从框图反映为64位总线向128位总线过渡,其实他的核心工作为数据的压缩存放,与压缩数据进入IPU处理前的数据还原。下图为IPU内部支持的数据格式:


但数据位于RAM中的存储方式可并非如此,看看上方的经典数据存放图可知。

当然要想实现数据的压缩与恢复我们还需要CPMEMLUT的支持。

BCW-buffer controller for write& BCR-buffer controller for read

BUFW- buffering write&BUFR- buffering read

读写端都具有4 x 64 bytes buffers因为RGBAYUVA都有4种颜色分量构成BCW控制BUFWBCR控制BUFR

AXIW - AXI Write and AXIR - AXI Read

AXIW/AXIR控制对AXI总线的读写。IPU手册解释为:实时通道控制。因为IPUAXI发出的请求有实时总线请求与非实时总线请求,并且BCR/BCW会对他们进行控制,可用读取通道数为8,写入通道数为6.因此防止全部非实时通道造成的通道阻塞。因此需要限制IPU同时最高使用的通道数目。

CC_W & CC_R - Channel Control Write and Read

其实CC_W/CC_R才是最重要的IDMAC控制单元,

• It arbitrates the channels according to the priority.

• Controls the address arithmetic unit.

• Functions as a memory interface to the CPMEM. It reads the parameters from the CPMEM, prepares the controls accordingly and writes back updated parameters to the CPMEM.

• The read unit provides the parameters to the IBIR unit

• The write unit provides the parameters to the AXIW unit

AAU_W & AAU_R- Address Arithmetic Unit for Write and Read

DMA访问地址计算单元,地址计算公式如下:

ADDR = EBA +XB + SX* BPP + (YB + SY) *(SL + 1)


ATC - Alpha Transparency Controller


通道关联


CPMEM - Channel Parameter Memory

每个通道由160bit参数配置区控制。


The parameters and the way they are organized are different for each mode. The Pixel Format Select (PFS) value of the CPMEM words are used by the IPU to determine if the words should be interpreted as interleaved or non-interleaved format.

Locking the arbitration and reordering the AXI bursts(提高DMA效率机制)

每次读取更多的数据 。


总结:

IDMACDMA数据流处理核心单元,IPU完成的内存数据到物理设备输出,通过硬件加速提高显示效率与对总线带宽的占用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值