您好!
在清除外设中断时(例如 RTI 比较中断、通过 RTIINTFLAG 寄存器清除)、如何确保写入存储器映射寄存器确实完成、并且标志被清除、然后再继续? 在中断处理程序中、需要确保写入的完整性、在中断标志清零后重新启用 IRQ (通过清除 CPSR 中的 I 位): 如果在写入中断标志之前清除了 I 位、则会再次捕获中断。
是否有标准/推荐的方法来确保外设寄存器写入的完整性、如果有、将在哪里记录这些内容?
谢谢、
Antoine
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.
您好!
在清除外设中断时(例如 RTI 比较中断、通过 RTIINTFLAG 寄存器清除)、如何确保写入存储器映射寄存器确实完成、并且标志被清除、然后再继续? 在中断处理程序中、需要确保写入的完整性、在中断标志清零后重新启用 IRQ (通过清除 CPSR 中的 I 位): 如果在写入中断标志之前清除了 I 位、则会再次捕获中断。
是否有标准/推荐的方法来确保外设寄存器写入的完整性、如果有、将在哪里记录这些内容?
谢谢、
Antoine
我忽略了提供 LC4357器件安全手册的链接。 它位于以下链接:
您好、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 有一个客户。
谢谢。