DM81xx DVR_RDK Memory Map

=======================================================================================================

转载请注明原文地址:http://blog.csdn.net/crushonme/article/details/14517109

以下内容译自DM81xx DVR_RDK Memory Map.pdf文件。

=======================================================================================================



DVR RDK中支持多种不同的usecases,为了更有效地利用内存,在SYS/BIOS侧将物理内存配制成多个段,不同的段的大小是可以配置的,具体属性各不相同。

    下面简单介绍下各个区域的用途:

Linux Memory分配给linux管理的内存区域

Shared Regions:受限制的共享内存区,根据配置不同,其属性也各不相同,具体配置请参考syslink文档

Syslink MessageQ/IPC ListMPNon-cached on M3

Bitstream BufferCached on A8. Cached on M3, although access by DMAs

Frame BufferVPSS - Video M3 Frame Buf

IPC ListMP for Dual-M3Cached on M3

Slave Code and Data Section Memory各个处理器的代码段和数据段,包括DSPDual-M3系统

Remote Debug Memory即2.2.1中所说的Remote debug部分的共享内存

VPDMA Descriptiors Memory用于存放VPSS M3部分分配的DMA配置

Host VPSS Notify Shared Memory用于使用FBDev时传递A8侧命令至VPSS M3

Tiler Memory为HDVPSSHDVICP提供Tiled内存,包含8bit区和16bit区。

FBDev Shared Memory为VPSS M3侧驱动提供内存

硬件上的限制:

  • Ducati M3系统无法访问超过0xA0000000的代码区;
  • Ducati M3系统无法访问超过0xE0000000的数据区;
  • Ducati M3系统中的AMMU只能管理512MB或者32MB的大内存段(largePages),被划分成了四个段,其中一段用于映射寄存器,因此AMMU只能访问这三个内存段;

软件上的限制:

  •  由于linux系统的内核空间为1GB、用户空间为3GB,因此内核最大只能映射1GB的存储空间,其中包含了启动参数及共享内存区;
  •  共享内存是静态分配的,因此修改后需要重新编译链接;
  • 由于映射Frame Buffer会消耗大量的内核空间,因此并未被映射到A8侧,用户在需要的时候动态映射(如使用IPC Frames In/Out link);


在修改内存分布的时候需要注意的事项:

  •  必须考虑上述的软硬件上的限制;即VPSS M3VIDEO M3的代码段必须放置在低512MB的物理内存里,并且需要在AMMU配置中将虚拟地址一一映射到物理地址;
  • 最少需要留2MB的空间给Syslink-Notify给内核空间,用于A8VPSS M3的通信,位置改变的时候,需要注意bootargs中的参数notifyk.vpssm3_sva也需要相应修改;
  • RemoteDebug段是用于方便调试用的打印消息暂存区,除A8外,所有消息打印都存在该区域,并使用Vps_printf调用,送到linux侧串口终端打印出来。可用于日志记录。在原有的一套代码中,需要自己根据内存配置指定日志记录所处的内存位置。用户可以将该套代码修改后集成到源程序中,做出实时打印来方便调试。具体位置可以根据配置,修改TI原有的genaddrinfo.xs脚本来产生一个头文件来指定(具体可仿照genaddriinfo.xs中生成env_xx_xx.sh的方法生成一个宏定义的头文件autocfg_mem.h,供其他代码调用)。
  • Linux Memory大小改变同样也需要修改bootargs中的mem参数,如果被分成多段的话,则可以使用mem=<SIZE>@<ADDR>来指定,需要注意的是TI在后续版本中要求Linux Memory需要按照4MB对齐。
  • Tiler Memory的起始地址需要128MB对齐,如果不使用Tiler Memory,该段内存会被用于Frame Buffer或者Bitstream Buffer的补充;

你可能感兴趣的:(dm8168,ti,内存分布,Davinci,DM81XX)