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.

[参考译文] TDA4AP-Q1:如何启用 MCU4-0高速缓存 ECC

Guru**** 2487425 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1418305/tda4ap-q1-how-to-enable-mcu4-0-cache-ecc

器件型号:TDA4AP-Q1

工具与软件:

尊敬的 TI 专家:

客户正在使用 TDA4AP SDK9.2。

它们遵循以下常见问题解答、以启用 R5f 缓存 ECC。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1360109/faq-tda4vh-q1-performing-ecc-sec-ded-tests-on-r5f-cache-memories/5188790

但是、正如您可以从下图中看到的、常见问题解答中使用的地址适用于 MCU1-0。 在寄存器手册中、我们只能找到 MCU1-0和 MCU1-1的情况。 客户拥有双安全通道设计、MCU1-1和 MCU4-0都是其安全通道、需要启用高速缓存 ECC。 他们在寄存器手册中找不到与 MCU4-0相对应的地址。

您可以帮助客户找到 MCU4-0的寄存器地址吗?

非常感谢!

Kevin

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

    如果数组未被缓存、是否仍会出现错误注入?  是的、确实发生了这种情况。

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

    您好、Kong:

    我您的所有代码都是未缓存的、那么从哪里进行了错误注入的缓存访问?

    此致、

    Josiitaa.

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

    尊敬的 Josiitaa:

    感谢您的支持。

    客户现在了解了。 它们的 mcu1-1在 DDR 上运行、ECC 注入也在 DDR 上、因此根据您的评论、DDR 会进行缓存、这意味着它们没有遵循您的要求在非缓存区域中运行 mcu1-1。

    然而、如果它们仍希望运行到 DDR、是否可以将 DDR 的一部分缓存、将 DDR 的一部分缓存至非缓存、它们如何在非缓存区域中运行 mcu1-1?

    谢谢!

    Kevin

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

    尊敬的 Kevin:

    首先检查 DDR 是否缓存在客户的应用程序中会更安全。

    [userid="546457" url="~/support/processors-group/processors/f/processors-forum/1418305/tda4ap-q1-how-to-enable-mcu4-0-cache-ecc/5517921 #5517921"]然而、如果他们仍然希望运行在 DDR 中、他们如何在非缓存区域中运行 mcu1-1?是否可以将 DDR 的一部分缓存、将 DDR 的一部分缓存为非缓存?

    他们必须更改 MPU 区域配置、将 DDR 设置为非缓存、然后只能缓存阵列 a 和 b、如下所示:

    uint32_t a[array_size]_ attribute __((section (".DDR_Cache.filebuf"));

    在使用 SBL 进行的 SDL 独立测试中、MPU 区域配置位于 statup.c 文件中。

    同样、客户必须确定其应用中 MPU 区域配置的设置位置。

    此致、

    Josiitaa.

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

    尊敬的 Josiitaa:

    非常感谢您的解释!

    由于客户的工程必须出于其他目的在缓存的 DDR 上运行 MCU1-1、这意味着他们无法在实际应用场景中启用缓存 ECC。

    这时、客户只希望获得反馈、为什么如果注入缓存 ECC、MCU1-1必须在非缓存区域运行?

    谢谢!

    Kevin

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

    尊敬的 Kevin:

    当代码在缓存的存储器区域中运行时、代码中的每一行都将触发对缓存存储器的访问并触发错误注入。 您可以注入错误、但无法清除、因为每个操作都会导致错误。 因此、我们建议代码必须在非缓存存储器上运行、并且只能缓存用于触发错误的阵列。

    此致、

    Josiitaa.

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

    尊敬的 Josiitaa:  

    MCU1_1和 MCU4_0、 Icache 和 Dcache 不是相互独立的?  如果独立、 MCU1_1和 MCU4_0 DDR 地址范围不同、理论上不会发生"代码中的每一行都将触发对缓存存储器的访问并触发错误注入"。   如果注入错误和清除错误应用程序在一个正确的内核上运行,但在 两个内核上运行,则需要保持怀疑。

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

    您好、Kong:

    我不确定我是否理解这个问题。 您是否在问、为什么必须缓存 MCU1_1代码以进行 MCU4_0错误注入?

    此致、

    Josiitaa.

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

    尊敬的 Josiitaa:   

     有。

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

    您好!  

    即使错误注入是 从 MCU1_1内核到 MCU4_0内核、但在 MCU4_0内核上运行的任何应用程序/SW 都可能导致高速缓存访问并触发错误。 因此您会看到所触发的错误事件。 类似地、MCU1_1上运行的代码将触发 MCU1_1的错误事件。

    此致、

    Josiitaa.