如何通过动态缩放 CPU 频率来控制窗口看门狗 (WWDG)?
How to controll windowed watchdog (WWDG) with dynamically scaling CPU frequencies?
我有一个项目使用 ARM Cortex M4,根据工作负载缩放 CPU 频率。我想使用 WWDG,因为它允许更多选项,例如看门狗中断。问题是:对于可变时间长度 CPU tick 是否有任何标准的解决方法?
对此有非常不同的解决方案。选择哪个取决于您的设置和您的应用程序(更精确的是它的关键性)。如果 WD 仅用于检测非关键应用程序中的卡住,即没有严重的人、动物伤害危险或昂贵的 material 损坏,那么具有宽松时序的普通 WD 绝对足够。如果应用程序很关键,并且您预计在未达到较低时间限制的情况下会出现一些严重的不当行为,则可以使用 WWDG。
所以我想到了两种可能的解决方案,一种简单,一种复杂;哪一个最适合您的用例取决于您对系统的要求(我无法判断,因为您没有说明您正在使用哪种系统)。第一个解决方案是以任何设置都满足限制的方式配置 WWD。因此配置非常轻松,但足以满足许多用例。所以你不必关心时钟频率的动态切换。
更复杂的解决方案是测量时钟变化之间的时间,并确定目标时间,直到下一个 WD 以新选择的频率服务。当两者之间不再发生变化时,WD 将在那时被提供。否则,您会考虑具有最新频率的间隔,并在必须提供 WD 时计算下一个相对时间戳。但是能不能实现就看你要求的时机了。如果您的时间安排非常严格(例如 <1 毫秒),那么这实际上不是一个可行的选择。但另一方面,如果计算很复杂,您将获得一个简单的挑战响应 WD,除了计时之外,它还会检查您的 ALU 的运行状况。
我有一个项目使用 ARM Cortex M4,根据工作负载缩放 CPU 频率。我想使用 WWDG,因为它允许更多选项,例如看门狗中断。问题是:对于可变时间长度 CPU tick 是否有任何标准的解决方法?
对此有非常不同的解决方案。选择哪个取决于您的设置和您的应用程序(更精确的是它的关键性)。如果 WD 仅用于检测非关键应用程序中的卡住,即没有严重的人、动物伤害危险或昂贵的 material 损坏,那么具有宽松时序的普通 WD 绝对足够。如果应用程序很关键,并且您预计在未达到较低时间限制的情况下会出现一些严重的不当行为,则可以使用 WWDG。
所以我想到了两种可能的解决方案,一种简单,一种复杂;哪一个最适合您的用例取决于您对系统的要求(我无法判断,因为您没有说明您正在使用哪种系统)。第一个解决方案是以任何设置都满足限制的方式配置 WWD。因此配置非常轻松,但足以满足许多用例。所以你不必关心时钟频率的动态切换。
更复杂的解决方案是测量时钟变化之间的时间,并确定目标时间,直到下一个 WD 以新选择的频率服务。当两者之间不再发生变化时,WD 将在那时被提供。否则,您会考虑具有最新频率的间隔,并在必须提供 WD 时计算下一个相对时间戳。但是能不能实现就看你要求的时机了。如果您的时间安排非常严格(例如 <1 毫秒),那么这实际上不是一个可行的选择。但另一方面,如果计算很复杂,您将获得一个简单的挑战响应 WD,除了计时之外,它还会检查您的 ALU 的运行状况。