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.

[参考译文] AM6421:SRAM、DCache 和 ICACHE ->软件访问问题

Guru**** 2540720 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1561714/am6421-sram-dcache-and-icache---software-access-question

器件型号:AM6421


工具/软件:

数据表中提到 2MB 的片上 SRAM。
TRM 中的存储器映射显示这是从 0x070000000 ~映射的、可用。

但是、我注意到每个 R5F 内核在可映射的区域中也有 8MB 的 ICACHE/8MB 的 DCache。
我不熟悉内存映射 — 在学习曲线上。

但是我想知道、软件可以设置 2MB、这样您就可以自由地访问 (r/w)?
如何在程序中将数据映射到 SRAM?

我在裸机实施中考虑这一点 — 无 Linux。 只想知道您是否可以制作一个能够控制某些缓存空间的 C 程序。

在 SDK 中:

https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/latest/exports/docs/api_guide_am243x/KERNEL_DPL_CACHE_PAGE.html

提到 ICACHE 和 DCache 的 API、但不确定从这里去哪里...

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

    Arm Cortex-R5 技术规范概述 (https://developer.arm.com/Processors/Cortex-R5) 说明了有关 ICACHE、DCache 和 TCM 的以下内容:

    高速缓存控制器 具有可选集成指令和数据缓存控制器的 Harvard 存储器架构。 高速缓存大小可从 4 到 64kB 可靠配置。 高速缓存行可以是回写或直写。
    紧耦合存储器 可选的紧耦合存储器接口用于可能对缓存响应不佳的高确定性或低延迟应用程序(例如,中断服务例程的指令代码和需要密集处理的数据)。 一个或两个逻辑 TCM (A 和 B) 可用于代码和数据的任何混合。 TCM 大小最高可达 8MB。 TCM B 有两个物理端口 B0 和 B1、用于交错传入的 DMA 数据流。

    这似乎表明 I/O 高速缓存的限制为 64KB、而 ATCM/BTCM 可设置为 0 ~ 8MB。

    AM243x/AM64x 的 TRM 似乎表明、分配 8MB 用于 ICACHE/DCache。  

    我所有的问题都是这样的:有没有办法留出 2MB 的任何类型的内部缓存用于存储由程序控制的数据?

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

    您好 、Darren Coste、

    ICache / DCache:

    •缓存不能“保留“为 RAM“。
    •它们是由硬件管理的指令缓冲区 (ICACHE) 或数据缓冲区 (DCache)。
    •直接访问它们、因为不支持正常内存—CPU 只能通过高速缓存控制器看到它们。
    •在 Cortex-R5 上:每个内核的 ICache 和 DCache 最高可达 64KB、而不是 8MB。  iTRM 可能显示可寻址区域、而不是实际的物理缓存大小。
    •您不能安全地将高速缓存用作通用数据的暂存存储器。

    此致、

    Anil.

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

    存储器映射中的 8MB 范围是 R5f AXI 从接口的一部分、即允许从另一个 R5f 或从 A53 访问 R5f 的高速缓存。 R5f TRM 有一章介绍了“访问高速缓存 RAM 时的存储器映射“、解释了为什么该区域为 8MB(23 位用于解码)。

    在裸机应用中、您将能够使用大部分 2MB 内部 SRAM (MSRAM @ 0x70000000)。 MSRAM 的最后一部分为 SysFW 保留。 通过 SBL 加载应用程序时、您需要注意 SBL 也从该 MSRAM 运行、因为这会限制您可以链接应用程序的位置。 在运行时、SBL 存储器可用。 MSRAM 可能还有其他用户、例如、如果您要使用 ICSSG 以太网。

    访问 MSRAM 的延迟比 TCM 高得多、因此如果您有性能关键型代码、您可能需要将其放入 TCM 中。 R5f 高速缓存可以缓存对 MSRAM 的访问、这有助于应对此延迟。

    此致、

    Dominic