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:在中止处理程序中检测到同步中止时 TMS 的行为

Guru**** 2448780 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/596435/tms570lc4357-behavior-of-the-tms-in-case-synchronous-abort-is-detected-while-in-abort-handler

器件型号:TMS570LC4357

您好!

我 想 在 TMS570LC457的缓存上激活 ECC、出于安全原因、我需要对出现不可纠正的错误时实施的制裁进行精细控制、以便达到安全状态。

在读取 cortex-R5 TRM (ARM DDI 0460D)时 、有关中止处理程序的第3.8.4节的最后一段表示、如果在中止处理程序中发生同步错误、则"处理器循环直到下一个中断"和"原始中止的 LR 和 SPSR 值丢失"。

这句话的第一部分在我看来并不是很清楚、我想 确认 在以下情况下 TMS570LC4357的行为是怎样的:

1:由于任何原因( 同步或异步中止)而发生中止异常

2.进入中止处理程序并自动屏蔽异步中止(当进入 IRQ/FIQ 或中止时、CPSR.A 置1)

3.由于访问缓存时出现 ECC 错误,因此会发生同步中止

4.???  处理器的实际状态是什么,它将执行什么操作,它是否循环不等待新中断,并将此中断视为完全没有发生中止??

我已经知道要避免第2步。 通过确保可能发生非同步中止(通过将 处理程序使用的存储器空间设置 为不可缓存的示例)、可以解决我的问题、而这个问题的重点实际上 是帮助我了解在步骤4中会发生什么。

谢谢、

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

    您好 Franck、

    我正在咨询我们的一位 EMIF 专家、稍后将与您联系。


    致歉,Franck 对上述答复。 我的主题已被交叉参考、并发布了有关您的问题的错误消息。

    关于异步和同步中止的具体问题、同步中止将覆盖 故障状态寄存器中的信息、然后异步故障信息将丢失。 当然、这取决于故障发生的时间与读取故障状态寄存器内容的时间。 如果在异步中止处理期间读取故障状态寄存器后发生故障、如果您在异步 中止发生后退出中止、则中止应在退出初始中止后再次触发 (我提到这 一点、因为异步中止通常是最糟糕的、因为它不能分配给器件的任何特定元件、因此通常需要系统以安全状态响应或器件可能复位的方式进行响应)。

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

    你好、Chuck、

    感谢您的反馈。 因此、如果我很好地理解您的答案、如果中止处理程序(由于同步或异步中止而输入)生成同步中止条件(例如  、由于数据访问的高速缓存中存在不可纠正的 ECC)、预期行为将如下

     中断处理程序 将继续执行、而不会在导致同步中止条件的指令上被中断

    2. FSR 将 被同步中止信息覆盖

    3.中止处理程序返回时,应再次触发中止以处理同步中止

    与假设关键上下文中的任何异步中止或同步中止(例如中止处理程序)应与致命制裁相关联的行为相关的行为将使 ARM 建议变为不强制执行不可高速缓冲外部存储器中的中止处理程序。

    不过、对于第1点、 如果检测到不可纠正的 ECC 错误、我实际上不知道处理程序如何继续执行。 它是否会继续通过强制丢失来绕过高速缓存,它是否会继续使用损坏的数据值?  

    关于第2点。 在 ARM TRM 中也提到 Lost 的 LR 和 SPSR 呢?

    谢谢、

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

    我们已经讨论过这一点了一段时间。 我将回顾并在重新回顾主题和讨论后返回。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    弗兰克、

    我确实看到了你对我先前关于继续执行的评论的看法。 如果在执行中止处理程序期间出现不可纠正的错误、会发生什么情况? 如您所述、这应该会导致同步中止、 假定这会影响 FSR 的内容并可能影响 中止处理程序的程序流。 实际上、我认为这是一个我们需要推迟到 ARM 讨论的问题、因为它涉及到 CPU 的一些相当低级的操作。 我将 与他们核实这一点、并返回给您。  

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

    不是异常矢量中的不可纠正的错误、活锁的作用是:

    "由于硬件错误或异常向量处的异常、处理器活锁。" ?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Frank、

    与您的另一个问题一样、我已经在 TI 用尽了我的资源来尝试获得有关此问题的答案、因此我将联系 ARM 以更清楚地了解预期行为。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Frank、

    下面是 ARM 支持人员对此场景的响应。

    "你是对的。 如果内核在另一个数据中止(同步或异步)之前没有将 lr_abt 和 SPSR_abt 压入数据中止异常处理程序内的堆栈、则"嵌套"中止将导致内核丢失原始状态和返回地址。

    在上面的特定示例中、内核将通过持续获取数据中止异常来循环。 LR_abt 的地址将位于数据中止处理程序内部、不指示原始异常发生的位置。 您实际上将失去返回后台应用程序的能力。"
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好、Chuck、

    感谢您努力回答我的问题。

    主题已关闭。

    此致

    弗朗克