Thread 中讨论的其他器件:SYSBIOS
工具/软件:TI-RTOS
我正在尝试在 Cortex-A15上为 RTOS 应用程序设置 MMU。 我在这里阅读了文档:
尽管我们已经尝试过多次重复配置 GPMC 地址空间的页面、但我们无法获得级别2条目。 我们只能获得1级的工作机会、我对使用这些 API 所做的工作没有很好的了解。 此 MMU 设备驱动程序是否提供其他文档? 也许是更深入的教程?
谢谢、
Stuart
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.
工具/软件:TI-RTOS
我正在尝试在 Cortex-A15上为 RTOS 应用程序设置 MMU。 我在这里阅读了文档:
尽管我们已经尝试过多次重复配置 GPMC 地址空间的页面、但我们无法获得级别2条目。 我们只能获得1级的工作机会、我对使用这些 API 所做的工作没有很好的了解。 此 MMU 设备驱动程序是否提供其他文档? 也许是更深入的教程?
谢谢、
Stuart
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 架构参考手册]