2016-05-31 15 views
0

Ich habe ein Projekt mit ARM Cortex M4 mit Skalierung CPU-Frequenzen abhängig von der Auslastung. Ich möchte die WWDG verwenden, weil es viel mehr Optionen wie Interrupt auf Watchdog erlaubt. Frage ist: Gibt es eine Standardumgehung für variable Zeitlänge CPU-Tick?Wie kontrolliere ich Windowed Watchdog (WWDG) mit dynamisch skalierenden CPU-Frequenzen?

+0

muss der Watchdog auf dem CPU-Takt laufen? Muss das System/rtos-Tick auf dem CPU-Takt laufen? Wenn nicht, spielt die CPU-Skalierungsfrequenz keine Rolle. –

+0

Wenn Sie die Reglerspannung nicht basierend auf der CPU-Frequenz variieren können, gibt es keinen wirklichen Wert bei der Variation der Frequenz basierend auf der Arbeitslast. Stellen Sie den Prozessor einfach mit der WFI-Anweisung in den Ruhezustand. Der ARM macht einen guten Job beim Takt-Gating, wenn er inaktiv ist, also fügen Sie einfach Komplexität hinzu und ändern nicht wirklich die Anzahl der Takt-Übergänge pro Arbeitseinheit (Sie beeinflussen also nicht wirklich die Leistung pro Arbeitseinheit) –

Antwort

0

Dafür gibt es sehr unterschiedliche Lösungen. Welche zu wählen ist, hängt von Ihrer Einstellung und Ihrer Ergänzung ab (genauer auf ihre Kritikalität). Wenn der WD nur verwendet wird, um ein Hängenbleiben in einer unkritischen Anwendung zu detektieren, d. H. Keine ernste Gefahr von Verletzungen für Menschen, Tiere oder teure Materialschäden, dann ist ein normaler WD mit einem entspannten Timing absolut ausreichend. Wenn die Anwendung kritisch ist und Sie ein ernsthaftes Fehlverhalten erwarten, wenn Sie ein niedrigeres Zeitlimit unterschreiten, kann eine WWDG verwendet werden.

Also habe ich zwei mögliche Lösungen im Kopf, eine einfache und eine komplexe; Welches ist für Ihren Anwendungsfall am besten, hängt davon ab, was Sie für Ihr System benötigen (ich kann nicht beurteilen, wie Sie nicht erzählten, auf welcher Art von System Sie arbeiten). Die erste Lösung wäre, die WWD so zu konfigurieren, dass die Grenzwerte mit allen Einstellungen erfüllt werden. Die Konfiguration ist also recht entspannt, aber für viele Anwendungsfälle ausreichend. Sie müssen also nicht auf das dynamische Umschalten der Taktfrequenzen achten.

Die komplexere Lösung besteht darin, die Zeit zwischen den Taktänderungen zu messen und die Zielzeit bis zum nächsten WD mit der neu ausgewählten Frequenz zu bestimmen. Wenn dazwischen keine Änderung mehr stattfindet, wird der WD zu dieser Zeit beibehalten. Andernfalls nehmen Sie das Intervall mit der letzten Häufigkeit in Rechnung und berechnen den nächsten relativen Zeitstempel, wenn der WD bedient werden muss. Aber es hängt von der Zeit ab, die Sie benötigen, wenn dies realisiert werden kann oder nicht. Wenn Ihr Timing sehr schwierig ist (z. B. < 1ms), dann wäre dies nicht wirklich eine praktikable Option. Auf der anderen Seite, wenn die Berechnung komplex ist, erhalten Sie eine einfache Herausforderung Antwort WD, die die Gesundheit Ihrer ALU zusätzlich zum Timing überprüft.