主题中讨论的其他器件:HALCOGEN
您好!
我无法在此处发布我的代码、但我将尝试解释我的方案、我想问这是否是有效的方案。 我们的项目有2个中断(IRQ 和 FIQ)。 IRQ (RTI -比较1)每1毫秒运行一次、而 FIQ (RTI -比较0)每125微秒运行一次。 1ms 中断需要超过200us 才能完成其执行、它最终使用 TI (FAPI)提供的仿真 EEPROM 代码。 下图显示了它们之间的关系:
X 表示 CPU 处理。 您可以看到、有时 IRQ 会被 FIQ 中断、当它发生时、FIQ 处理其代码、返回、 但与 IRQ 相关的中断堆栈已损坏、并且在 IRQ 返回时、系统崩溃。 在我看来、由于某种原因、FIQ 正在破坏 IRQ 保存的堆栈。
问题:
- 当 FAPI 在由 IRQ 调用的中断服务中运行时、它是否支持被 FIQ 中断?
- 上述方法(FIQ+IRQ)是否有效 ?
PS:如果我修改了代码、将 FIQ 更改为 IRQ 并使用 TI 提供的代码、此代码允许 IRQ 被另一个高优先级的 IRQ 抢占、则问题不会出现、它按预期运行。
此致、
Thiago Esteves
