代码之家  ›  专栏  ›  技术社区  ›  morynicz

如何通过动态缩放CPU频率来控制窗口看门狗(WWDG)?

  •  0
  • morynicz  · 技术社区  · 8 年前

    我有一个使用ARM Cortex M4的项目,根据工作负载调整CPU频率。我想使用WWDG,因为它允许更多选项,如监视器中断。问题是:对于可变时间长度的CPU周期,有什么标准的解决方法吗?

    1 回复  |  直到 8 年前
        1
  •  0
  •   sim    8 年前

    对此有很多不同的解决方案。选择哪一个取决于您的设置和应用程序(更精确地取决于其重要性)。如果WD仅用于检测非关键应用程序中的卡住情况,即不会对人、动物造成严重伤害或昂贵的材料损坏,那么放松计时的正常WD就足够了。如果应用程序是关键的,并且在运行较低时间限制的情况下,您预计会出现一些严重的错误行为,那么可以使用WWDG。

    所以我有两个可能的解决方案,一个简单,一个复杂;哪一个最适合您的用例取决于您对系统的需求(我无法判断,因为您没有告诉您正在工作的是哪种系统)。第一个解决方案是配置WWD,使其能够满足任何设置的限制。因此,配置非常宽松,但对于许多用例来说已经足够了。所以你不必关心时钟频率的动态切换。

    更复杂的解决方案是测量时钟变化之间的时间,并确定直到下一个WD以新选择的频率服务的目标时间。当两者之间不再发生变化时,WD将在那时受到影响。否则,您需要考虑最新频率的间隔,并计算必须提供WD时的下一个相对时间戳。但这取决于你是否能实现这一点所需的时间。如果您的时间安排非常困难(例如,<1ms),那么这确实不是一个可行的选择。但另一方面,如果计算复杂,您将获得一个简单的挑战响应WD,它除了定时外,还会检查ALU的健康状况。