请注意,由于执行 CP15 广播操作的处理器无法完成该操作,因此它无法进入任何调试模式,也无法采取任何中断措施。如果不能中断执行分支至自循环的处理器(例如,如果它已禁用其中断,或者如果所有中断都已路由至其它处理器),该问题可能会引起系统活锁。
影响: | 很小。该问题可能会影响系统性能,最糟糕时,如果不能中断执行分支至自循环的处理器,可能会导致系统活锁。 |
解决方法:: | 中断由 CPU 生成的连续请求流,可参阅解决方法详细信息。 |
受影响的配置: | 使用 CPU 的系统。 |
受影响的器件修订版本: | 全部. 无计划修复. 参考 (Xilinx Answer 47916) - Zynq-7000 SoC 芯片版本差异。 |
第三方 Errata: | Arm Errata 799769 |
解决方法详情
要解决该问题,您可以中断在执行分支至自循环的处理器中生成的连续请求流。在等待外部事件发生时,软件通常会执行一个分支至自循环,例如多处理器环境中的锁定释放。推荐的解决方法是按照《ARM 架构参考手册》的建议,用包含 WFE 或 WFI 指令的循环替换分支至自循环。其它解决方法(例如在循环中添加 NOP 或将分支至自指令移至除该页最后一个缓存行以外的任何位置)也可避免该问题。
如果无法对执行分支至自循环的软件进行修改,推荐的解决方法是强制执行循环的处理器定期采取中断措施,其可起到看门狗的作用。有几种方法可产生周期性中断,这些方法可能是系统专用的。可能的备选方案是由本地定时器、全局定时器或性能监控单元周期计数器溢值产生的中断。
Answer Number | 问答标题 | 问题版本 | 已解决问题的版本 |
---|---|---|---|
47916 | Zynq-7000 AP SoC 器件:芯片修订差异 | N/A | N/A |
AR# 55326 | |
---|---|
日期 | 05/28/2018 |
状态 | Active |
Type | 设计咨询 |
器件 |