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.

[参考译文] Linux/DM3730:MMU 在哪里初始化?

Guru**** 2558390 points
Other Parts Discussed in Thread: AM3517, DM3730

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/574076/linux-dm3730-where-is-mmu-initialized

器件型号:DM3730
主题中讨论的其他器件:AM3517

工具/软件:Linux

您好!

是否有人可以指向启用 MMU 的位置 ?  

谢谢!

已运行

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

    您可以在内核配置文件中启用 MMU。 例如、将 CONFIG_MMU=y 设置为在./linux-2.6.37-psp04.02.00.07.sdk/arch/arm/configs/AM3517_evm_defconfig 中完成

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

    尊敬的 Tsvetolin:

    非常感谢。

    我们需要使用其他操作系统(而不是 Linux)来初始化 MMU (我认为应该在汇编中完成)。

    是否提供?

    我们有 cortext A9的 MMU 初始化,但我不确定它是否可以与 dm3730 (即 cortext A8)一起使用 ?

    此致、

    已运行

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

    大多数 MMU 寄存器在 Cortex A9和 DM3730 (Cortex A8)中是相同的、但在 Cortex A9中有4个额外的寄存器不存在于 DM3730 (Cortex A8)中。 两种架构中匹配寄存器的物理地址也不同。
    但是、在两种架构中、MMU 初始化看起来非常相似。 有关如何在 DM3730中配置 MMU 的详细信息、请参阅 AM/DM37x 多媒体设备技术参考手册-第15.4节 MMU 基本编程模型、网址为:
    www.ti.com/.../technicaldocuments
    然后、您可以比较两种架构中的初始化过程。

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

    尊敬的 Tvestoliln:

    附件是为我编译的 A9-cortex。

    我不确定这些寄存器中是否有任何一个在 A8下是不可忽略的。

    编译器不应该抱怨吗?

    如果您知道 MMU 的某些开放源码 MMU 初始化、请告诉我。

    谢谢、

    已运行

    e2e.ti.com/.../init_5F00_mmu.S

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

    您是否运行了 MMU?  在 DM3730上启用 L1 Dcache 时遇到问题。  我不使用 Linux。

    Dcache_disable();
    ICache_disable();
    ICache_invalidate();
    TLB_validate ();//这是 ITLB 和 DTLB */
    init_MMU_ttb();//这是页表设置和 MMU 寄存器编程*/
    MMU_enable();
    Dcache_invalidate();
    cache_enable();
    DCache_PRELOAD ();

    这些是我采取的步骤,但在 dcache_PRELOAD ()中,数据写入将进入 SDRAM 而不是 L1 dcache。  L2高速缓存已禁用。  由于 L1 dcache 是在读取时分配的、因此我加载一个字、将其覆盖、并希望写入到 L1而不是 SDRAM、但我的写入会转到 SDRAM。  它看起来 MMU 工作正常、但 dcache 没有获取数据。

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

    它是哪种操作系统? Starterware/uCOS/Other?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    无操作系统。  自定义 MLO 开机自检 u-boot。  因此、我必须设置页表(仅4096 1MB 段级别1页、可高速缓冲、可完全访问、VA=PA (TEX=000b、 C=1、B=1、回写、无读分配)我自己并启用 L1 Dcache。  L2高速缓存已禁用、L1高速缓存已禁用。  我正在测试是否启用了 L1 Dcache、方法是启用它、逐字加载/存储到24个高速缓存、禁用控制寄存器中的 C 位、然后打印。  我*希望*打印 SDRAM 数据,而不是 L1 Dcache 数据,因为我禁用了 C 位,TRM 声明禁用了 C 位,因此不能访问 L1。  我希望 L1 Dcache 数据有效且脏污、但我需要清理和/或使其无效、因为我是回写的。  TRM 声称 L1 Dcache 是*只读*分配,这就是为什么我先加载然后存储以将 SDRAM 数据传入 L1 Dcache 中的原因。  因此,L1 Dcache 的作用看起来像直写式*OR*,它实际上没有启用。  当控制寄存器 C 位打开并且我设置了页表时、这是奇数。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很清楚、列出的这些函数是从 Web 上大量示例复制的 asm 函数、用于执行这些操作。 我不调用其他人的函数。 我想知道、使用 L1 Dcache 是否存在一些记录不清的问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有趣的是、当我尝试使用以下指令读取 L1标签和数据 RAM 内容时:
    infocenter.arm.com/.../index.jsp
    CPU 锁定。