UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 47545

Zynq-7000 AP SoC、定时器 — 全局定时器可针对相同事件发送两个中断信息

描述

单发模式下的全局定时器可生成两个计数末中断请求,而不是一个。这可通过使用自动增量模式避免。 软件可在比较器寄存器值增量后,通过清空全局定时器标记来解决这个问题。

解决方案

影响: 很小。该问题会在系统中创建假中断请求。
解决方法:: 在中断服务例程中使用自动增量,不要使用单发模式或执行特殊序列。更多详情,敬请参见以下应急措施细节。
受影响的配置: 在单发模式中使用 PS 全局定时器 (GT) 的系统
受影响的器件修订版本: 参见(Xilinx 答复 47916)——Zynq-7000 AP SoC 芯片修订差异。


全局定时器 (GT) 可通过编程,在其达到给定编程值时对处理器生成中断请求。由于这个问题,全局定时器通过编程不使用自动增量特性时,它可能会生成两个中断请求,而不是一个。

全局定时器控制寄存器可使用以下设置编程:

Bit 3 = 1b0 可在单发模式下对 GT 进行编程
Bit 2 = 1b1 GT IRQ 生成启用
Bit 1 = 1b1 GT 值与比较器寄存器的比较启用
Bit 0 = 1b1 GT 计数启用


在上述设置情况下,针对处理器的 IRQ 在全局定时器值达到比较器寄存器编程值时生成。中断处理程序,随后执行以下序列:

  • 读取 ICCIAR(中断确认)寄存器
  • 清空全局定时器标志
  • 修改比较器值,将其设为更高值
  • 写入 ICCEOIR(中断结束)寄存器

在这些情况下,全局定时器会在中断处理程序序列结束时针对处理器生成第二个(假)中断请求。

解决方法详情

由于该问题只有当全局定时器在单发模式下编程时(也就是不使用自动增量特性)才出现,因此第一个合理应急措施就是通过编程全局定时器来使用自动增量特性。

如果该解决方案不可行,第二种应急措施是修改中断处理程序,避免故障序列。在比较器寄存器值增量后,清空全局定时器标记可实现这一目的。中断处理程序的正确代码序列应类似于以下序列:

  • 读取 ICCIAR(中断确认)寄存器
  • 修改比较器值,将其设为更高值
  • 清空全局定时器标志
  • 清空中断控制器分配器中的中断 27(全局定时器中断)待定状态信息
  • 写入 ICCEOIR(中断结束)寄存器

链接问答记录

主要问答记录

Answer Number 问答标题 问题版本 已解决问题的版本
47916 Zynq-7000 AP SoC 器件:芯片修订差异 N/A N/A
AR# 47545
日期 07/22/2013
状态 Active
Type 设计咨询
器件
  • Zynq-7000
  • Zynq-7000Q
  • XA Zynq-7000
的页面