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.

[参考译文] TMS570LC4357:高速缓存数据/标签访问

Guru**** 2611705 points
Other Parts Discussed in Thread: TMS570LC4357

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/748554/tms570lc4357-cache-data-tag-access

器件型号:TMS570LC4357

您好!

我正在尝试检查2位 ECC 缓存异常。 在文档中、我已经找到了在缓存上禁用/启用 ECC 检查的方法、但我想知道如何注入 ECC 错误。

在文档中、可以通过 AXI-S 从端口访问高速缓存。 根据 Cortex-R5文档、我需要将 ACTLR 寄存器(AXISCEN)的位24翻转为1来访问高速缓存。 最后、根据存储器映射、缓存区域对应于0x30000000至 0x37FFFFFF。 我创建了一个与此区域对应的 MPU 区域、并授权用户和特权访问。

但是、当我尝试访问我定义的缓存区域时、我会获得与 同步外部中止相对应的代码的数据中止异常。

我有访问高速缓存数据/标签的权限?

谢谢、

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

    请查看 TMS570LC4357勘误表中的 Cortex-R5 #7:spnz232b.pdf

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

    您好!

    我正在使用 user5879052、缓存配置为写入模式、因此您引用的勘误表不适用。

    不过、关于 这个线程、"不、Cortex R5不可能将 L1$映射为直接映射 RAM。"、但我们可以在 Cortex-R5F 文档中找到 ACTLR[AXISCEN]使您能够访问 AXI 从端口、 读取构建选项2寄存器后、NO_SLAVE 位读取为0、表示 CPU 上有一个 AXI 从器件。

    此外、在 TI TMS570LC4357 TRM (SPNU563A)文档中、我们可以看到高速缓存 RAM 是在第2.2章中映射的存储器。 还有一个特定的章节说明高速缓存 RAM 可通过 CPU 的 AXI 从端口进行访问(第4.3.1.4章访问高速缓存存储器)。 在第4.3章" CPU 互连子系统"中、表4-3还指示 CPU 可以访问 AXI 从端口。

    所以我感到困惑:引用的线程的回复是否适用?如果是、为什么高速缓存 RAM 不直接适用、而所有文档都表示相反的情况?

    否则、如果高速缓存 RAM 可访问、它的可行性如何? 如 user587952所述、访问0x30000000处的缓存 RAM 会导致数据中止。 我还进行了一些辅助测试:

    • 在0x3000_0000处读取的32位或64位>>同步外部中止、DFSR[SD]= 1且 DFSR[RW]= 0
    • 64位写入0x3000_0000 >> DFSR[SD]= 1且 DFSR[RW]= 1时的异步外部中止
    • 访问地址0x3003FF8时结果相同

    此致、

    盖尔

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

    您好!

    我有一些更新。

    我注意到 Cortex R5文档中的更多信息、当 AXI 从器件被激活时、可在以下4个区域分别访问对应于组0-1、组2-3、组4-5和 组6-7的数据:

    从 30008000开始
    至    3000C000

    从  30010000起
        至30014000

    从  30020000起
    30024000之间     

    从  30040000起
    至    30044000

    根据第9章中的 cortex R5文档、这是正确的、但是标签区域(例如)应该可以在地址30088000处访问、但是这个区域不可见。

    与地址 31008000相同、该地址应对应于指令缓存地址。

    此外、即使 ACTLR.CEC 翻转为4、PMCR.X 变为1、也不会检测到 ECC 错误。

    您有更多信息吗?

    谢谢

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

    您对如何访问高速缓存标记地址有什么指示吗?

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

    我不知道如何访问缓存数据/标签。 我们以前没有运行高速缓存 ECC 测试。 我很抱歉无法提供更有用的信息。 您是否联系了 ARM 支持?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您是否使高速缓存 ECC 异常测试工作?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我为使它在一个案例中运行而感到有点受骗、但我仍然无法实际执行我想要的操作。

    查看高速缓存中的数据、我识别了 RAM 数据开头的数据、并在设置 ECC 错误后调用相应的变量。 这将导致文档中描述的相应标志。

    例如、我注意到对于一个变量 U32_test = 0x0、其中:
    &U32_TEST = 0x08000000、
    如果我执行如下读取值:
    u32_read_test=*(TUINT32*) 0x08000000
    未在缓存中提取数据
    但是,如果读操作通过变量名称:
    u32_read_test=u32_test
    从缓存中提取数据、然后触发 ECC 缓存错误

    我尝试使用指令缓存执行相同的过程、方法是在指令缓存中插入与闪存中的指令相匹配的指令、但当我执行闪存函数时、似乎它不会获取缓存中的指令。

    启用 ACTLR 的 AXI 位后、我可以访问所有高速缓存、并且可以看到高速缓存中存储的数据及其标签、但现在我还不了解标签和实际存储地址之间的链接。 我遵循了 cortex 的文档页226中所写的内容、但它实际上并不适用。

    我希望能够将 RAM 中的数据/指令存储在高速缓存中、并且能够使用地址和标签重新找到它。 因此、我可以自动执行测试、并测试标签 ECC 错误。

    现在我没有联系 ARM 支持部门。

    谢谢、
    此致、
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您告诉我们您的进度。 不容易找到标签和实际地址之间的链接。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您可以让 ARM 对此做出回答吗? 我们没有与他们签订支持合同、因为我们从您那里购买产品(因此我们无法登录他们的私人问题系统)、但德州仪器(TI)是 ARM 的客户、我想他们应该提供付费支持。
    这是他们的 Cortex-R5 TRM 中缺少的东西、他们应该在下一个修订版本中添加这些 TRM。
    谢谢、
    Étienne μ A
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Étienne、

    我将尝试将问题发布到 ARM 论坛、但不确定我能否很快得到答案。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    谢谢、但我们可以自己做到这一点:这是我们可以访问的同一个论坛。 我们只能在一半的时间内得到一个答案。 我们恳请您使用 ARM 付费支持向 ARM 发送一个私人问题(www.arm.com/.../technical-support ->打开支持案例)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Etienne、

    我已将问题转发给我们的设计团队、他们会将我的问题转发给 ARM 支持团队。 我希望很快得到 ARM 的答案。 谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Etienne、

    我没有收到来自 ARM 的反馈。 每当我得到答案时、我都会告诉您。