This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RTOS/AM5728:IPU 存储器映射

Guru**** 2924050 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/663512/rtos-am5728-ipu-memory-mapping

器件型号:AM5728

工具/软件:TI-RTOS

我正在尝试了解在 IPU 逻辑地址和物理地址之间应用的内存映射和虚拟化。 我知道 MMU 有几层、AMMU 最接近 IPU 内核。 我的 AMmu 配置通过配置文件在我的 SYS/BIOS 项目中进行设置。 我还了解到 AMmu 上方的 MMU 由 Linux 中的 Remoteproc 驱动程序根据我构建到 IPU 二进制映像中的资源表的内容进行设置。  

我一直在使用 TI RTOS SDK 示例中的 Ammu 和资源表实现作为指南、但对于配置存储器映射有一些问题:

1.我了解到需要将地址虚拟化到外部 DDR,因为我们并不一定会提前知道 Linux 将 DDR 段映射到 IPU 的方式。 但是、当涉及 L4外设存储器和本地 IPU RAM/ROM/MMU 寄存器等时、这些示例都对这些地址应用偏移量、但这种转换对我来说似乎完全没有必要。 我缺少什么吗? 我们应该这样做吗? 不同地说、在没有转换的情况下将外设和本地存储器地址直接传递到 IPU 是否有任何不良影响?

2.我一直使用 IPC MessageQ 示例中的 IpuAmmu.cfg 文件(\IPC_3_47_00_00\examples\DRA7XX_Linux_elf\ex02_MessageQ\ipu2\IpuAmmu.cfg)作为我自己配置文件的基准。 我注意到、此配置中存在一些重叠页。 具体而言、请考虑以下内容、其中一些小页面在中等页面内重叠:

/* ISS:对各种 ISP 寄存器使用3个小页(1 4K 和2 16K);不可高速缓冲;已转换*/*
配置小页[6]以将16K VA 0x50000000映射到 PA 0x55040000 */*
默认情况下为不可高速缓冲*/
Ammu.smallPages[6]= Ammu.Enable_Amilages[0x500mu.Amilages[0x500mu.Amilation].Amilages[0x500mu.Amilages].Amilages[0x500mu.Amilation].Amilages[0x500mu.Amages].Amilation]=0x500mu.Am64006.Am6400.Amates[



Ammu.smallPages [6]。size = Ammu.small_16K;

/*配置小页[7]以将16K VA 0x50010000映射到 PA 0x55050000 */*
默认情况下不可高速缓冲*/
Ammu.smallPages [7]页 Enabled = Ammu.Enable_Yes;
Ammu.smallPages [7]:amallAddress = 0x50010000;Amical.smallPages
[7]

= ammu.translatedma.Amages[7];Ammu.amages[7]= 0x550mu.amages[7];amages[amages.amages.amages.amages.amages.amages.amages.amages.amages.amages[a.amages].am

/*配置小页面[8]以将4K VA 0x50020000映射到 PA 0x55060000 */*
默认情况下不可高速缓存*/
Ammu.smallPages [8].pageEnabled = Ammu.Enable_Yes;
Ammu.smallPages [8].logsmallAddress = 0x50020000;Amical.smallPages
[8].translationmu.Amages[8]= 0x550mu.Ammu.Amages[8]



/******* 中页 /
//* ISS:使用媒体页面(256K)的整个 ISS 寄存器空间;可高速缓冲;已转换*/
*配置媒体页面[0]以将256K VA 0x50000000映射到 PA 0x55040000 *
//*使其 L1可高速缓冲*
/ Amlatum.pages[0]启用 Ammu.mu_Yes;AM640.AMum.Ammediages= 0x550000.Amiled.AmumPages[AM640.AM.Amum.Amed.Amed.Amages]0;AM640.AM640.AM.Amum.Ammu.Amed.Amed.AmumPages[AM640.AM.Amum.Amed.Amed.Amed.Amed.Amed.AmumPages].Amed.Amed.AmumPages[AM640.AM.Am




Ammu.mediumPosings[0].L1_cacheable = Ammu.cachepolical_cacheable;
Ammu.mediumPosings[0].L1_posted= Ammu.PostedPolicy_posted; 

此类内容的最终影响是什么、其中多页定义似乎重新映射相同的存储器空间? 我还想知道为什么重新映射这些存储器、因为 TRM 在 L3_MAIN 存储器映射中将范围0x55030000至0x5507FFFF 显示为"保留"。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Scott、

    1) 1) L4外设存储器映射的原因是为了在 Cortex-M4中处理位带、请参阅 processors.wiki.ti.com/.../DRA7xx_GLSDK_Software_Developers_Guide

    2) 2)这很有趣、让我了解一下重映射到相同存储器空间的背景、该存储器空间也是保留的。

    此致、
    Garrett
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢、Garrett! 对于 L4外设存储器的重映射而言、这当然是合理的。 我想听听您对重叠存储器映射的了解。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Scott、

    很抱歉、此问题的响应延迟。  AM57xx/DRA7xx 上的 IPUSS 源自 OMAP4/OMAP5架构。 这些地址来自 OMAP4/OMAP5、因此从技术上讲不适用于 DRA7/AM57xx。

    多页定义的工作方式与安全防火墙编程的工作方式类似、较小的条目会覆盖较大的条目空间。 因此、在下面的示例中、较小的区域条目会覆盖介质页定义的条目上的默认高速缓存属性。 一般而言,将策略应用于 unicache MMU 时,小页>中页>大页。  

     从 IPU 的角度来看、这就是使用配置文件中的 Ammu 设置对0x55040000和0x55080000的256KB 进行存储器访问的方式。

    希望这能澄清 Ammu 配置。 在 AM57xx/DRA7xx 上、这n`t 重要。  

    此致、

    Rahul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、Rahul! 这为我清除了它。