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.

[参考译文] AM6442:AM64x RAT 模块

Guru**** 2553450 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1244587/am6442-am64x-rat-module

器件型号:AM6442

大家好!

您可以问 AM64 RAT(基于区域的地址转换)模块吗?



如果我们要访问超过32位的地址空间(例如、  PCIE0_DAT1 :0x600000000-0x6FFFFFFFF)。
如果我们从64位 CPU (例如 A53)进行访问、CPU 是否可以在没有 RAT 模块的情况下直接看到内存空间?


在 MCU+SDK 中、请 告诉我们有关 RAT 模块示例或器件驱动程序的任何信息。



ti-clang 编译器是否允许直接以 C 语言写入内存地址?
例如*(&0x000001000)={number};

此致、

松本浩隆

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

    尊敬的 Hirotaka Matsumoto:

    我正在你的线程. 您可能会在一两天内收到回复。

    此致、

    S.Anil.

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

    S.Anil San

    感谢您的答复。
    我们期待您的更新!

    此致、

    松本浩隆

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

    尊敬的 Hirotaka Matsumoto:

    RAT 是一个简单的地址重映射逻辑。  

    假设 R5发出一个事务到地址 X。

    如果 X 未映射到任何 RAT 配置的重映射区域、则使用地址 X 将事务设置为 SoC 端。

    如果 X 位于其中一个 RAT 配置的区域中、则它将被转换为地址 Y。Y 可以是任何地址。 鼠标硬件根本不检查地址 Y。 因此、如果您希望将地址从0x8000_0000映射到 oxFFFFFFFF_FFFF、则从硬件侧不会出现问题。

    Unknown 说:
    如果我们要访问32位地址空间(例如  PCIE0_DAT1 :0x600000000-0x6FFFFFFFF)。
    [/报价]

    是的、您应该使用以下步骤在您的应用程序中启用 RAT。

    请按照以下步骤配置 RAT 模块。

    1.根据系统上的下图配置 RAT 设置。

     

    2.调用以下函数将系统地址空间(超过32位地址)转换为32位地址空间

    LocalBaseAddr =(uint32_t) AddrTranslateP_getLocalAddr (0x73D300000);

     

    3.现在您的本地地址空间为0x73D300000 Register。

    4. uint32 *ptr

    PTR =& LocalBaseAddr ;

    *LocalBaseAddr =写入您想写入的任何值,它将被分配给系统地址空间,该空间超过32位地址空间。

    根据您的要求,您应该根据地址空间设置大小,系统地址空间将为0x600000000。

    [报价 userid="177109" url="~/support/processors-group/processors/f/processors-forum/1244587/am6442-am64x-rat-module "]、如果我们从64位 CPU (例如 A53)访问、CPU 能否在没有 RAT 模块的情况下直接看到内存空间?
    [/报价]

    是。 A53可以直接访问64位地址、并且不需要任何 RAT 模块。

    Unknown 说:
    ti-clang 编译器是否允许直接用 C 语言编写内存地址?
    例如*(&0x000001000)={number};

    是的、可行。 请看上面的例子。 我已经清楚地解释了如何访问超过32位的地址空间存储器。

    我希望这对您有所帮助。

    此致、

    S.Anil.

    此致、

    S.Anil.

    [/quote]