2017-09-21 2 views
2

Ich habe versucht, Interrupts für ein ARMv7A MCU (Cortex-A8) zu aktivieren, und ich bemerkte, dass ich das I-Bit im CPSR Register im Benutzermodus nicht ändern kann, egal was ich versuche. Ich lese etwas herum und es scheint so, als ob ich im USR-Modus bin.Aktivieren Sie Interrupt im Benutzermodus für ARMV7A-Prozessoren

Ist die einzige Lösung, eine SWI aufzurufen und die SPSR im SWI-Handler zu ändern?

+4

Sie müssen im privilegierten Modus sein, um I-Bit des Prozessors zu ändern. – Gaurav

Antwort

1

In der Tat können Sie Interrupts im Benutzermodus nicht deaktivieren oder aktivieren. Sie können dies nur in einem privilegierten Modus tun.

Es ist ungewöhnlich, in den Benutzermodus mit deaktivierten Interrupts zu wechseln. Normalerweise wird nur sehr wenig Code mit deaktivierten Interrupts ausgeführt, da dies die Verarbeitung des nächsten Interrupts verzögert. Wenn Sie einen Teil eines Interrupt-Handlers im Benutzermodus ausführen, tun Sie zunächst, was vor dem erneuten Aktivieren von Interrupts getan werden muss, und wechseln Sie dann in den Benutzermodus.

Verwandte Themen