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:中断清除:如何确保在 CPSR 中重新启用 IRQ 之前完成对外设中断标志寄存器的写入?

Guru**** 2460180 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/639762/tms570lc4357-interrupt-clearing-how-to-ensure-write-to-peripheral-interrupt-flag-register-is-completed-before-re-enabling-irqs-in-cpsr

器件型号:TMS570LC4357

您好!

在清除外设中断时(例如 RTI 比较中断、通过 RTIINTFLAG 寄存器清除)、如何确保写入存储器映射寄存器确实完成、并且标志被清除、然后再继续? 在中断处理程序中、需要确保写入的完整性、在中断标志清零后重新启用 IRQ (通过清除 CPSR 中的 I 位): 如果在写入中断标志之前清除了 I 位、则会再次捕获中断。

是否有标准/推荐的方法来确保外设寄存器写入的完整性、如果有、将在哪里记录这些内容?

谢谢、

Antoine

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

    一般而言、我们确保写入完成的机制是对寄存器执行回读、以便与预期的写入值/写入结果进行比较。 在中断标志的情况下、这可能会有问题、因为总是会在标志清除后立即或同时出现另一个中断。 即、重复中断是一个实际事件、而不是写入失败。 但是、如果我们考虑到在 CPSR 中重新启用中断、则不应发生这种情况、因为它们是独立的任务/写入。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    卡盘、

    感谢您的回答。 您能告诉我这种机制的记录在哪里吗? 我们希望在我们的标准中提供一份参考文档。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我想就这一问题采取后续行动。 同样、是否可以知道哪些 TI 文档规定对寄存器执行读回以与写入的预期写入值/结果进行比较可以确保写入完成? 为了合理性和可维护性的目的、让文档参考非常重要。

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

    我们的安全手册和 FMEDA 都记录了此安全机制。 FMEDA 作为 SafeTI 私有 E2E 中详细安全分析报告包的一部分提供。

    如果我们还注意到您使用的是具有缓存存储器的 TMS570LC4357、则应确保您正在读取外设而不是缓存值。 如果完成此操作、回读本身就会证明写入已完成、因为写入后的读取访问返回修改/更新的值。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我忽略了提供 LC4357器件安全手册的链接。 它位于以下链接:  

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

    我认为您参考的是《安全手册》中的§7.118"已写入配置的软件回读"。 但是、我们的问题并不是安全问题。 它纯粹是功能型的。 我们不是在尝试缓解硬件故障、而是只需执行适当的操作序列、以便 CPU 在重新启用内核中断(IRQ)之前正确清除中断位。

    1) 1)我们找到了一些说明如何继续的文档、但我们对此有疑问。 ARM Cortex-R5 TRM、附录 D"存储器排序"表示、由于对外设的所有访问都通过同一端口(外设总线)、读取刚刚写入的同一控制寄存器将保证在读取前写入完成。 好极了。 但它仅在我们将该区域配置为器件时适用。 如果配置为严格排序、则不会显示该行为。 如果使用严格排序、该附录是否也适用?

    2) 2)此外、订购的关键似乎是所有访问都通过同一端口。 但是、有两个面向外设的端口:AXI 外设接口和虚拟 AXI 外设接口。 默认情况下、虚拟被禁用。 但是、您是否确认如果我们启用了虚拟接口、那么读取和写入之间的排序属性将会丢失? (例如、如果通过一个端口进行写入、而通过另一个端口进行读取...) 这让我意识到我不知道访问哪个端口会通过什么... 您能否告诉我们、虚拟端口在 TMS570LC 上是否可用、如果可用、其基址的值是多少? (LLPP 虚拟 AXI 的外设接口区域寄存器基址字段)

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

    您好、Etienne、

    [引用 USER="ETIENA]我认为您在《安全手册》中提到§7.118"已写入配置的软件回读"。 但是、我们的问题并不是安全问题。 它纯粹是功能型的。 我们不是在尝试缓解硬件故障、而是只需执行适当的操作序列、以便 CPU 在重新启用内核中断(IRQ)之前正确清除中断位。[/引用]

    你是对的。 这在作为一个安全机制的背景中被描述、但是更广泛的情况是为了确保写入成功完成。 不同值被读回的原因可能是许多原因、包括标志尚未被清除。 考虑到时序以及写入完成前将保持读取、最有可能导致不匹配的原因是出现新的中断或卡位。

    [引用 user="Etienna]1)我们找到了一些说明如何继续操作的文档、但我们对此有疑问。 ARM Cortex-R5 TRM、附录 D"存储器排序"表示、由于对外设的所有访问都通过同一端口(外设总线)、读取刚刚写入的同一控制寄存器将保证在读取前写入完成。 好极了。 但它仅在我们将该区域配置为器件时适用。 如果配置为严格排序、则不会显示该行为。 如果使用严格排序、该附录是否也适用?

    当然、描述表明您的目标是一种积极的行为。 但是、我不能推测该段也适用于严格排序的存储器类型。 这是只有 ARM 才能直接回答的问题。

    但是、ARM Cortex-R5F TRM 中第7.2节的以下内容表示一个与针对器件类型存储器的语句类似的属性。 所有访问将按程序顺序进行。

    2)另外、订购的关键似乎是所有访问都通过同一端口。 但是、有两个面向外设的端口:AXI 外设接口和虚拟 AXI 外设接口。 默认情况下、虚拟被禁用。 但是、您是否确认如果我们启用了虚拟接口、那么读取和写入之间的排序属性将会丢失? (例如、如果通过一个端口进行写入、而通过另一个端口进行读取...) 这让我意识到我不知道访问哪个端口会通过什么... 您能否告诉我们、虚拟端口在 TMS570LC 上是否可用、如果可用、其基址的值是多少? (LLPP 虚拟 AXI 的外设接口区域寄存器基址字段)[/QUERP]

    我们不实施虚拟 AXI 外设接口 端口。 我们只有标准 AXI 外设接口端口、因此无需担心有两条路径可供访问。

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

    [引用用户="Chuck Davenport"]

    当然、描述表明您的目标是一种积极的行为。 但是、我不能推测该段也适用于严格排序的存储器类型。 这是只有 ARM 才能直接回答的问题。

    [/报价]

    我认为您的帖子回答了这个问题。 但是、为了确保事情清晰明了、并且我们没有使用器件或严格订购、您能否就此向 ARM 提出疑问、如果属实、他们是否澄清了文档、说附录 D 也适用于严格订购? 作为最终用户,我们没有与他们签订支持合同... 但我想 TI 有一个客户。

    谢谢。

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

    我认为无需通过 ARM 进一步确认。 上面突出显示的语句非常清楚地表明、器件类型和严格排序访问都按程序序列执行。 正如您所注意到的、在"器件类型"的附录 D 中以及在表7-2中针对严格排序的说明。 但是、我将在 ARM 支持论坛上发帖、看看他们是否可以做出澄清。

    另请注意、ARM 的支持论坛是公开的、不需要与他们签订支持合同。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Etienne、

    我收回我关于用手臂支撑的说法。 实际上、我不确定他们是否有像 TI 这样的直接访问论坛。 现在、我还记得我们使用电子邮件给他们的支持团队寻求支持、但我不知道是否存在基于客户电子邮件域进行的有效筛选。 不过、我会向他们发送此查询。