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/AM5726:MMU 设置

Guru**** 2587365 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/592105/rtos-am5726-mmu-setup

器件型号:AM5726
Thread 中讨论的其他器件:SYSBIOS

工具/软件:TI-RTOS

我正在尝试在 Cortex-A15上为 RTOS 应用程序设置 MMU。  我在这里阅读了文档:

尽管我们已经尝试过多次重复配置 GPMC 地址空间的页面、但我们无法获得级别2条目。  我们只能获得1级的工作机会、我对使用这些 API 所做的工作没有很好的了解。  此 MMU 设备驱动程序是否提供其他文档?  也许是更深入的教程?

谢谢、

Stuart

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

    您能否检查这是否有帮助? e2e.ti.com/.../579072。它介绍了如何通过 SYSBIOS 配置在 GPMC 接口上设置1/2 MMU。

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

    Eric、

    我通读了该主题、但不幸的是、它给我留下了更多的问题、而不是答案。  请参阅 我们从 I2C 示例修改的以下配置文件、以将两个存储器区域添加到 MMU 映射。

    e2e.ti.com/.../4466.i2c_5F00_arm_5F00_evmAM572x_5F00_master.cfg

    这似乎不起作用、并在访问 GPMC 地址空间时立即导致异常。

    接下来、我们添加了以下内容、但这些内容仍然不起作用:

    最后、我们添加了以下配置(在运行时):

    void MMU_mapping (void)
    {
    MMU_DescriptionAttrs 外设 Attrs;
    MMU_initDescAttrs (peripheralAttrs);
    peripheralAttrs.type = MMU_DescriptorType_Block;
    peripheralAttrs.noExecute = true;
    peripheralAttrs.accPerm = 0;
    peripheralAttrs.attrIndx = 1;
    MMU_setFirstLevelDesc (((ptr) 0x00000000、(UINT64) 0x00000000、peripheralAttrs);
    }
    

    最后的配置有效、但我们不知道原因。  我们可以收集的唯一意义差异是、它是一级描述符、而不是二级描述符。  我认为部分混淆可能是我们不知道不同属性参数的含义、因为它们的文档描述不明确。  特别是 accPerm 和 Indattrx、但我想对 MMU_DesciprtorAttrs 结构的所有成员说相同。

    谢谢、

    Stuart

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

    [引用 USER="Stuart Baker)]这似乎不起作用,并在访问 GPMC 地址空间时立即导致异常。[/引用] GPMC 地址区域的大小是多少,异常发生在什么地址?

    根据 模块 ti.sysbios.family.arm.a15.MMU 说明文件、level1表中的每个条目都提供基址并定义大小为1GB 的存储器区域的属性、而 level2表中的每个条目都提供基址并定义大小为2MB 的存储器区域的属性。

    因此,如果 GPMC 地址区域大于2MB  ,则需要多个 Mmu.setSecondLevelDescMeta 调用来映射整个 GPMC 地址区域。 参考文档显示正在.cfg 脚本中循环调用 Mmu.setSecondLevelDescMeta、其中地址一次递增2MB 以映射整个区域。

    [引用 user="Stuart Baker">特别是 accPerm 和 Indattrx、 但是、MMU_DesciprtorAttrs 结构的所有成员也是如此。[/quot] MMU_setMAIR 的文档 介绍 了 Indattrx 的含义、其中 SYS/BIOS 默认设置下、Indattrx 为1表示"将存储器区域标记为严格排序且不可高速缓冲"、适用于外设。

    请参阅 《ARM v7AR 架构参考手册》、 该手册是从 ti.sysbios.family.arm.a15.MMU 模块的 SYS/BIOS 文档中引用的。

    [您需要向 ARM 注册才能获取 ARM v7AR 架构参考手册]