GFXMMU是面向图形的内存管理单元,旨在根据显示形状来优化内存使用。 该外设允许微控制器仅将非矩形显示的可见部分存储在连续物理存储区域中,从而可以减少 帧缓冲存储器占用空间。 由于可将帧缓冲区存储在内部RAM中,无需使用外部RAM,GFXMMU为图形应用提供了高度集 成的解决方案。该外设可提高性能、降低功耗并降低系统成本。
GFXMMU拥有主/从接口。主接口管理对不同从存储器(闪存,SRAM,FMC,OCTOSPI)的访 问。从接口由不同的主设备(LTDC,DMA2D,Cortex M,DMA,SDMMC)访问。 系统主机通过GFXMMU访问图形帧缓冲区。GFXMMU在其从接口上接收读/写请求,并执行地 址解析以确定目标物理地址。然后它通过主接口将传输请求重定向到保存物理地址的内存 中。
使用LTDC时的虚拟缓冲区使用情况
LTDC层间距是从一行开始到下一行开始之间的字节数。它在LTDC_LxCFBLR寄存器中进行配 置,并以字节表示。 当LTDC使用GFXMMU虚拟缓冲区时,LTDC层间距等于虚拟缓冲区行宽(以字节为单位,即 3072或4096)。
使用DMA2D时的虚拟缓冲区使用情况 DMA2D缓冲区行偏移量加到每行末尾,来确定下一行的起始地址。DMA2D缓冲区行偏移量以 像素表示。
为了确保虚拟缓冲区在不同帧缓冲区色深时每行都具有整数个像素,有两种工作模式可以使 用: • 256块模式 在这种模式下,虚拟缓冲区每行有256块,每块16字节。 此模式对应的行宽为256 x 16 = 4096字节。 • 192块模式 在这种模式下,虚拟缓冲区每行有192块,每块16字节。 此模式下的行宽为192 x 16 = 3072字节。 使用24 bpp缓冲区时,引入192个块模式,可使得每行具有整数个像素。
每行的LUT都必须有特定配置: • 行使能 • 第一个可见块的编号 • 最后一个可见块的编号 • 物理缓冲区内,行的地址偏移量 通过编程每行的地址偏移量,可见块能够以连续的方式排列在物理缓冲区中。
块粒度开销 对应着映射到物理内存但在显示屏幕上不可见的像素。这就是所谓的块粒 度开销。GFXMMU具有16字节的块粒度,所以一个块可以容纳不止一个像素。 对于边缘上的块(第一个和最后一个块),一些像素可能在屏幕上不可见。例如,如果一行 中的可见像素位于像素181和208之间,则使用16 bpp帧缓冲区时,必须使能的第一个块是 块22。块22容纳了像素176至183。所有这些像素都被映射并物理分配到内存中,但只有 像素181到183在显示屏幕上可见(见图 4)。
|