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.

[参考译文] AM3359:高速缓存刷新问题

Guru**** 2600495 points
Other Parts Discussed in Thread: AM3359

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/647514/am3359-cache-flush-question

器件型号:AM3359

你(们)好

我们使用的是 Sitara AM3359处理器。 处理器连接到外部 SDRAM 芯片。 为了允许高速缓存和非高速缓存访问 SDRAM、SDRAM 控制器被配置为 SDRAM 芯片内存的两倍大小。 最高地址位未连接到芯片、因此最高位不用于构建到芯片的访问地址。 使用此配置、配置的地址空间的下半部分包含与配置的地址空间的上半部分相同的内容。 MMU 配置为缓存已配置地址空间的较低者。 不缓存对较高地址的访问。

内存测试(galpat)使用未缓存的较高地址来测试内存。 为了防止测试期间发生内存操作、当测试被执行时、中断被关闭。

遗憾的是、即使在关闭中断的情况下、测试也会在执行期间检测内存操作。 我们的第一个想法是 DMA、但是、没有 DMA 用于访问测试地址空间中的地址。 下一个想法是、高速缓存在测试期间会写出一些行。 为了防止这种情况发生、我们确保在中断关闭后但在测试开始之前将测试的地址写回 RAM (清除)。 这样、测试过程中发生的机械操作会减少。 但是、操作仍在发生。 通过对缓存中测试的地址进行写回(清除)、它仍然大约在24小时内发生一次。

我们使用函数 CP15DCacheCleanBuff (tStartAddress_p、u32Size_p)清理测试的地址。 该函数位于 TI 库中。

我们的问题是、回写(清理)是否保证所有刷新的线路都写入 SDRAM 存储器? 现有的高速缓存写入缓冲区如何?

在上述测试中,高速缓存策略是回写的:

MMU_MEMTYPE_NORMAL 非可共享(MMU_cache_WB_WA、MMU_cache_WB_WA)

我们还尝试了内置缓存池的缓存策略写入:

MMU_MEMTYPE_NORMAL 非可共享(MMU_cache_WT_nowa、MMU_cache_WB_WA)

这似乎解决了在测试执行期间不需要的存储器访问的问题。 我们不知道为什么这会解决这个问题。 它是否会停用高速缓存的写入缓冲器? 写入缓冲区是否会导致我们的问题?

是否有介绍 AM3359处理器缓存及其写入缓冲区的文档?

 感谢您的回答。

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

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

    你(们)好

    使用的 TI 库为:starterware 02_00_01_01

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

    请访问 infocenter.arm.com/.../DDI0344K_cortex_a8_r3p2_trm.pdfinfocenter.arm.com/.../index.jsp

    干净的高速缓存和内存边界(我不知道 starterware 函数中是否包含 DSB 指令,我怀疑没有)将保证写入已到达控制器,然后保证以后读取的数据能看到相同的物理地址。 但是、如果您从别名的物理地址访问同一地址、则需要进一步的机制来确保 DDR 控制器命令已完成。 在假设存在混叠的区域之间保持一致的地方、DSB 的操作会遍布各个地方。 您将需要一些序列或延迟来强制 DDR 控制器具有写入力。

    A8 TRM 表7-1对存储缓冲的行为进行了说明。

    希望这对您有所帮助。

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

    你好、Lali、

    感谢你的答复。 为了解决内存控制器的问题,我最近实施了"AM335x SitaraTm处理器"中描述的机制
    技术参考手册(SPRUH73M - 2011年10月- 2016年1月修订)-第7.3.3.5.3章-可能的比赛条件"。

    现在、这似乎解决了问题。 我现在让你们看看我的测试结果、明天就应该完成测试。

    Dennis