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:M4F 和 RAT 模块

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1042415/am6442-m4f-and-rat-module

器件型号:AM6442
Thread 中讨论的其他器件:SysConfig

您好!

我想知道如何从 M4F 内核访问 DDR RAM。 我知道 M4F 是隔离式的、应该使用自己的存储器、但我仍然想知道这是如何工作的。

我不知道如何理解带有 RAT 区域的存储器映射。 例如、表2-5中 M4F 内核的存储器映射(实际 TRM 中的第45页)列出了一个名为"MCU0_M4FSS0_RAT_REGION0"的存储器、该存储器指向地址0x60000000、大小为2GB。 我假设这是 DDR 存储器、它应该指向系统存储器映射中的0x080000000。 是这样吗? 我无法从 TRM 中读取此信息

我想知道0x60000000 (M4F 视图)是 OSPI 还是 DDR 存储器?

下一个示例:

R5FSS0/1子系统具有一个名为"R5FSS0/1_RAT_Region3"的内存映 射、该映射指向0x80000000、大小为2BG。 (表2-3第39页)

什么是"R5FSS0/1_RAT_Region3"? 背后的物理模块或存储器是什么?

TRM 中没有任何解释!!

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

    尊敬的 Andreas:

    有关 RAT 硬件模块的详细信息、请参阅 TRM 第8.2节"基于区域的地址转换(RAT)模块"。

    有关表2-3至2-5中描述的 RAT 区域的信息、请参阅 TRM 第2.4节"基于区域的地址转换":

    • 表2-3到2-5中未描述为 RAT 区域的存储器区域与子系统本地的硬件相关联。
    • 被描述为 RAT 区域的存储器区域专用于通过 RAT 硬件进行重映射。 重映射仅在应用程序需要时使用。 例如、如果 R5F 或 M4F 需要访问超出主存储器映射中32位地址范围的寄存器、则必须使用 RAT 硬件将32位本地地址转换为36位地址。 在这种情况下、可以在 RAT 硬件中创建一个区域(每个 RAT 硬件模块最多支持16个区域)、在其中一个专用 RAT 存储器区域中执行重映射。
    • 被描述为 RAT 配置的存储器区域用于表8-91中列出的 RAT 寄存器。 RAT 寄存器。
    [引用 userid="445251" URL"~/support/processors-group/processors/f/processors-forum/1042415/am6442-m4f-and-rat-module ]我想知道如何从 M4F 内核访问 DDR RAM。 [/报价]

    DDR 位于32位地址范围0x080000000 - 0x0FFFFFFFF 内、因此无需为 M4F 访问 DDR 配置 RAT。 如果定义并启用了重新映射32位 DDR 地址范围的 RAT 区域、则可以屏蔽 DDR。

    [引用 userid="445251" URL"~/support/processors-group/processors/f/processors-forum/1042415/am6442-m4f-and-rat-module ]]我想知道0x60000000 (M4F 视图)是 OSPI 还是 DDR 存储器?

    如果没有 RAT 区域来重新映射0x60000000、则 M4F 应在主存储器映射(FSS0_DAT_REG1)中列出视图。

    [引用 userid="445251" URL"~/support/processors-group/processors/f/processors-forum/1042415/am6442-m4f-and-rat-module ]"R5FSS0/1_RAT_Region3"是什么? 背后的物理模块或存储器是什么? [/报价]

    这是一个存储器区域、可用于将 R5F 本地32位地址重新映射到36位地址。 如果不需要重映射、则主存储器映射中列出的地址适用。 如果 RAT 被启用、那么针对该区域的本地32位地址被映射、如部分8.2所述。

    [引用 userid="445251" URL"~/support/processors-group/processors/f/processors-forum/1042415/am6442-m4f-and-rat-module "] TRM 中没有说明!

    事实上、TRM 中几乎没有什么解释、而是什么令人困惑。

    MCU+ SDK 中有一些 M4F RAT 配置示例、您可以查看这些示例。 RAT 区域在 SysConfig 中配置。

    请告诉我这种解释是否足够!

    此致、
    弗兰克

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

    您好、Frank、

    感谢您的详细描述。 现在更清楚了。

    但是、例如、如果 M4F 上的0x60000000与 A53上的"模块"(OSPI 闪存/XIP)相同、为什么该地址用作 M4F 的 RAT 区域? 是否可以覆盖它?

    R5FSS0/1_RAT_Region3也是如此、它是0x80000000、但也是用于 R5F 和 M4F 内核的 DDR 子系统。

    我的同事还检查了如何从 M4F 访问主域的 UART0。 他修改了静态变量"gUartConfig"、该变量保存所有 UART 的信息以访问 UART0。 然后、他能够使用 UART0进行访问和注销。 在调试器中,我们可以看到 UART_Init()中的驱动程序将地址从0x02800000转换为0x82800000。 但是、如果我们应该能够从 M4F 访问0x02800000、因为它是32位地址、那么为什么需要这样做?

    此致

    Andreas
     

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

    您好、Frank、

    我和我的同事从 SDK"empty/nortos"获取了 M4示例。 在 SysConfig 文件中、有一个 RAT 配置集。 我们仍然没有得到 RAT 的点。 因为此时它不符合您在帖子中的解释。

    例如、配置了 RAT 区域(Region3)、该区域从本地地址0x6000.0000到系统地址0x6000.0000。 我在这里不明白这一点。 为什么需要这样做? 不会让人很满意!

    另一个区域从本地地址0x8000.0000映射到系统地址0x0。 此处相同... 为什么?

    例如、Region2从0xC000.0000映射到0x4000.0000。 我删除了该选项、M4F 固件无法再运行。 在 sysfw 初始化时出错。

    此致

    Andreas

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

    尊敬的 Andreas:

    我认为我的基本描述是正确的。 但是、我被告知 M4F 需要有 RAT 映射才能访问某些硬件资源。 SysConfig 文件中存在 MCU+SDK M4F 示例所需的映射。

    我将进一步对此进行调查、稍后将向您提供更多详细信息。

    此致、
    弗兰克

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

    尊敬的 Andreas:

    我对此进行了进一步调查。

    我在此处找到有关 M4F 存储器映射和 RAT 的更多信息:

    • AM64x/AM243x TRM (SPRUIM2B)
      • 6.3.3.6 MCU_M4FSS 内存视图
      • 6.3.3.7 MCU_M4FSS RAT
    • ARM Cortex M4修订版 r0p1 TRM、3.4处理器内存模型
    • ARM Cortex M4通用用户指南(DUI0553)、2.2存储器模型

    我在 AM64x GP EVM 上对 M4F 进行了试验、并确定当 M4F RAT 被禁用时:

    • M4F 可以访问 MCU_M4FSS0_RAT_REGION0地址范围内的主域硬件、例如、M4F 可以在禁用 RAT 的情况下访问 MSRAM 和 DDR。
    • M4F 无法访问 MCU_M4FSS0_RAT_REGION0之外的主域存储器映射中的硬件、例如无法访问 PADCFG_CTRL0_CFG0和 GPIO0。  

    CONFIG_ADDR_translation_REGION0 - 3提供对大多数硬件映射的主域存储器映射的前2 GB 的访问。 例如、CONFIG_ADDR_translation_REGION0提供对0x000000000 - 0x1FFFFFFF 主域的访问。 启用此区域时:

    • 可通过0x8000F0000访问 PADCFG_CTRL0_CFG0
    • GPIO0可在0x080600000处访问。

    访问其他外部硬件(包括 DDR)需要添加新的 RAT 区域、并减小现有区域的大小。 例如、将 CONFIG_ADDR_translation_REGION1的大小减小到256 MB、通过以下命令为 DDR 添加新区域:

    • 本地地址= 0xB0000000
    • 转换后的地址= 0x80000000
    • 大小= 256 MB。

    我也看不到 CONFIG_ADDR_translation_Region3将0x60000000转换为系统地址0x60000000的原因。 我使用 CCS/JTAG 禁用了 CONFIG_ADDR_translation_Region3、并且仍然能够访问 MSRAM_256K0_RAM。

    请告诉我这种解释是否足够。

    此致、
    弗兰克

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

    >我在 AM64x GP EVM 上对 M4F 进行了试验,并确定当 M4F RAT 被禁用时:

    >> M4F 可以访问 MCU_M4FSS0_RAT_REGION0地址范围内的主域硬件,例如 M4F 可以在禁用 RAT 的情况下访问 MSRAM 和 DDR。

    >> M4F 无法访问 MCU_M4FSS0_RAT_REGION0之外的主域存储器映射中的硬件,例如无法访问 PADCFG_CTRL0_CFG0和 GPIO0。

    我检查了这个。 当刚刚连接到 M4时,我能够读取/写入0x60080000 (闪存)、0x70000000 (SRAM)和0x80000000 (DDR)。

     

    >CONFIG_ADDR_translation_REGION0 - 3提供对映射了大多数硬件的前2 GB 主域存储器映射的访问。 例如、CONFIG_ADDR_translation_REGION0提供对0x000000000 - 0x1FFFFFFF 主域的访问。 启用此区域时:

    >>PADCFG_CTRL0_CFG0可通过0x8000F0000进行访问

    >>GPIO0可在0x080600000处访问。

    examples/empty/am64x-evm/m4fs0-0_nortos 的 SysConfig 中的 RAT 配置如下:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    addr_translate1.$name = "CONFIG_ADDR_TRANSLATE_REGION0";
    addr_translate1.localAddr = 0x80000000;
    addr_translate2.$name = "CONFIG_ADDR_TRANSLATE_REGION1";
    addr_translate2.systemAddr = 0x20000000;
    addr_translate2.localAddr = 0xA0000000;
    addr_translate3.$name = "CONFIG_ADDR_TRANSLATE_REGION2";
    addr_translate3.systemAddr = 0x40000000;
    addr_translate3.localAddr = 0xC0000000;
    addr_translate4.$name = "CONFIG_ADDR_TRANSLATE_REGION3";
    addr_translate4.systemAddr = 0x60000000;
    addr_translate4.localAddr = 0x60000000;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    因此、未设置 translate1的"systemAddr"。 我假设它是0x000000000 (36位),它不会写入 SysConfig,这一点很奇怪。

    因此我假设、访问 GPIO0不需要 RAT 条目、因为它的地址0x80600000是32位可访问、这可以由 M4F 内核完成? 那么、为什么需要有 RAT 条目。 但是、0x80600000是否不在 DDR 存储器中?

    >要访问其它外部硬件(包括 DDR),需要添加新的 RAT 区域,并减小现有区域的大小。 例如、将 CONFIG_ADDR_translation_REGION1的大小减小到256 MB、通过以下命令为 DDR 添加新区域:

    >>本地地址= 0xB0000000

    >>转换后的地址= 0x80000000

    >>大小= 256 MB。

    >我也看不到 CONFIG_ADDR_TRANSLATE_Region3将0x60000000转换为系统地址0x60000000的原因。 我使用 CCS/JTAG 禁用了 CONFIG_ADDR_translation_Region3、并且仍然能够访问 MSRAM_256K0_RAM。

    现在我不能尝试这种方法。 我们迁移到了新的 MCU+SDK、我无法再打开 exapmle.syscfg、因为 TI SysConfig 会检查标头、它们始终是错误的。 我不知道如何打开它。 已检查所有内容、并已将标题和开关更改为不同的 SysConfig 工具版本。

    我尝试从0xE0000000转换到0x8000000000、但我想知道0xE0000000保留到 M4F 存储器吗?

    概述如下:

    无 RAT:访问0x8000000 (DDR)、0x70000000 (SRAM)和0x60000000 (闪存/配置为 SBL NULL)

    使用 RAT:

    访问0x60000000 (仍然是闪存)和0x70000000 (SRAM)。 还有其他存储器区域。 DDR 不可访问。

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

    尊敬的 Andreas:

    [引用 userid="445251" URL"~/support/processors-group/processors/f/processors-forum/1042415/am6442-m4f-and-rat-module/3867450 #3867450"]SO,未设置 translate1的"systemAddr"。 我假设它是0x000000000 (36位),它不会写入 SysConfig,这一点很奇怪。

    同意、在 example.syscfg 中看不到 CONFIG_ADDR_translation_REGION0的系统地址是意外的。 但是、当我通过调用 System_init()来配置 RAT 寄存器后在 CCS 中检查 RAT 寄存器时、我看到 RAT 区域0已启用、且转换后的系统地址设置为0:

    [引用 userid="445251" URL"~/support/processors-group/processors/f/processors-forum/1042415/am6442-m4f-and-rat-module/3867450 #3867450">因此我假设访问 GPIO0不需要 RAT 条目、因为其地址0x80600000是32位可访问、这可以由 M4F 内核实现? 那么、为什么需要有 RAT 条目。 但是、0x80600000是否不在 DDR 存储器中?[/quot]

    GPIO0位于地址0x000600000处的主存储器映射中。 因此、M4F 无法访问 GPIO0、除非有一个 RAT 区域用于将0x6000_0000 - 0xDFFF_FFFF 范围内的地址转换为包含 GPIO0的范围。 SysConfig CONFIG_ADDR_translation_REGION0将从本地地址0x8000000开始的512 MB 转换为系统地址0x00000000、因此0x80600000 (本地地址)转换为0x000600000 (系统地址)。 您可以通过启用/禁用 CCS/JTAG 上的 RAT 区域0并检查 GPIO0是否可以从 CCS 存储器窗口中的 M4F 中看到、自行对此进行实验。 RAT_CTRL_0位于地址0x44200020、该寄存器的 MS 位是 RAT 区域的启用/禁用位。

    • 禁用:GPIO0在0x00600000或0x80600000处不可见
    • 启用:GPIO0在0x00600000处不可见、但在0x80600000处可见

    当 RAT 区0被启用时、地址范围0x00000000 - 0x1FFFFFFF 内主域存储器映射中的512 MB 可从 M4F 本地地址范围0x80000000 - 0x9FFFFFFF 进行访问。 但是、地址范围为0x80000000 - 0x9FFFFFFF 的主域存储器不再可访问、即 DDR 的前512 MB 被"屏蔽"。 类似地:

    • CONFIG_ADDR_translation_REGION1:屏蔽地址范围0xA00000000 - 0xBFFFFFFF 中的512MB DDR
    • CONFIG_ADDR_translation_Region2:屏蔽地址范围0xC00000000 - 0xDFFFFFFF 中的512MB DDR

    由于这是 M4F 专用外设总线的起始位置(见下文)、在有无 RAT 区域的情况下、从0xE0000000开始的 DDR 的其余部分是无法访问的。

    [引用 userid="445251" URL"~/support/processors-group/processors/f/processors-forum/1042415/am6442-m4f-and-rat-module/3867450 #3867450"]我尝试从0xE0000000转换到0x8000000,但我想知道0xE0000000保留到 M4F 存储器?

    没错、0xE0000000是 M4F"专用外设总线"地址范围的起始地址、该地址范围是 M4F 子系统(SS)的本地地址。 要通过 RAT 访问 DDR、您需要牺牲一些现有的已转换存储器范围、并添加一个具有0x60000000至0xDFFFFFFF 范围内本地地址的 RAT 配置(例如、我之前与本地基址0xB0000000共享的内容)。

    [引用 userid="445251" URL"~/support/processors-group/processors/f/processors-forum/1042415/am6442-m4f-and-rat-module/3867450 #3867450"]无 RAT:访问0x80000000 (DDR)、0x70000000 (SRAM)和0x60000000 (闪存/配置为 SBL NULL [/引用]

    正确、但不能访问地址0x60000000之前的主存储器映射中的任何内容。

    [引用 userid="445251" URL"~/support/processors-group/processors/f/processors-forum/1042415/am6442-m4f-and-rat-module/3867450 #3867450"]

    使用 RAT:

    访问0x60000000 (仍然是闪存)和0x70000000 (SRAM)。 还有其他存储器区域。 DDR 不可访问。

    [/报价]

    正确、通过 DDR 在基地址0x8000000处的所有内容都可以通过 RAT 区域访问、但 DDR 不再可访问。

    请参阅:

    请告诉我这是否有帮助!

    此致、
    弗兰克

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

    您好、Frank、

    谢谢。 我认为现在对我来说,情况更清楚了。

    此致、

    Andreas

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

    尊敬的 Andreas:

    非常感谢您的反馈、我现在将关闭此主题。

    此致、
    弗兰克

x 出现错误。请重试或与管理员联系。