2016-07-08 6 views
0

Auf Cortex-M-Prozessoren mit MPUs (verwenden wir Cortex-M4, um spezifische zu sein, aber ich wette, die Antwort ist die gleiche für M3), welche Privileg-Modus ist die Hardware-Ausnahme Eintrag Stapeln laufen in W. die MPU?Werden Ausnahmen von der Cortex-M-Hardware im Thread-Modus oder Handler-Modus gestapelt?

Angenommen, ich verwende den Prozess-Stack (PSP) im nicht privilegierten Thread-Modus, wobei die MPU nur Schreibvorgänge innerhalb einer bestimmten Region akzeptiert (z. B. ein Benutzermodus-Prozess läuft). Wenn eine Ausnahme auftritt, bevor der Handler ausgeführt wird (im Handler-Modus), registriert die Hardware Stacks r0-r3, lr, pc usw. auf dem PSP. Tritt dies auch im unprivilegierten Thread-Modus auf?

Angenommen, der Prozess setzt seinen SP auf einen beliebigen Punkt im Speicher, auf den nicht geschrieben werden darf, führt dies zu einem Speicherfehler?

+0

Erläuterung: Das MSTKERR-Bit des MemManage-Fehlerstatus Register (MMFSR) gibt an, ob beim Stacking für einen Ausnahmeeintrag ein Speicherzugriffsfehler aufgetreten ist. So ist es klar, dass ein Speicherfehler während Ausnahmeeintrag passieren kann, aber ich frage grundsätzlich, ob es Speicherzugriffe behandelt, als ob es in privilegierten oder nicht privilegierten Modus ist (z. B. unter der Annahme, dass das PRIVDEFENA-Bit im MPU-Steuerregister 1 ist) – exobrain

Antwort

0

Wenn wir ein Jahr später, nachdem wir damit umgegangen sind, darauf zurückkommen, lautet die Antwort, dass das Stapeln mit allen Privilegien erfolgt, die zuvor ausgeführt wurden.

Wenn also im unprivilegierten Modus ein Interrupt auftritt, stapelt die Hardware die Register auf dem PSP mithilfe der vorhandenen MPU-Einstellungen so, als würde nicht privilegierter Code das Stacking ausführen. Wenn das Stapeln gegen MPU-Regeln verstößt, tritt ein MemManage-Fehler auf und das MSTKERR-Feld des MemManage-Fehlerstatusregisters wird gesetzt (Seite 4-25 des Cortex-M4-Benutzerhandbuchs)

Verwandte Themen