2009-07-13 4 views

Antwort

8

Abgesehen von der Aktivierung oder Deaktivierung des IRQ/FIQ, während Sie sich im Supervisor-Modus befinden, müssen Sie keine speziellen Einstellungen auf dem ARM vornehmen, um ihn zu verwenden, es sei denn, das System (auf dem der ARM-Chip läuft) deaktiviere es in der Hardware (basierend auf deinem Kommentar, dies ist nicht der Fall, da du siehst, dass der FIQ-Eingangspin korrekt angesteuert wurde).

Für diejenigen, die die Abkürzungen nicht kennen, ist FIQ einfach der letzte Interruptvektor in der Liste, was bedeutet, dass es nicht auf einen Verzweigungsbefehl beschränkt ist, wie die anderen Interrupts sind. Das bedeutet, dass es schneller als die anderen IRQ-Handler ausgeführt werden kann.

Normale IRQs sind auf einen Verzweigungsbefehl beschränkt, da sie sicherstellen müssen, dass ihr Code in ein einziges Wort passt. Da FIQ keine anderen IRQ-Vektoren überschreibt, kann der Code direkt ohne eine Verzweigungsinstruktion ausgeführt werden (daher die "schnelle").

Die FIQ-Eingangsleitung ist nur eine Möglichkeit für externe Elemente, den ARM-Chip in den FIQ-Modus zu schalten und mit der Ausführung der korrekten Ausnahme zu beginnen. Es gibt nichts auf dem ARM selbst, was das außer dem CPSR verhindert.

Um FIQ im Supervisor-Modus zu aktivieren:

MRS r1, cpsr   ; get the cpsr. 
BIC r1, r1, #0x40 ; enable FIQ (ORR to disable). 
MSR cpsr_c, r1  ; copy it back, control field bit update. 

Eine ähnliche Sache kann für normale IRQs getan werden, aber # 0x80 statt # 0x40 verwenden.

+0

Ich bin Hardware-Ingenieur. Ich führe die Simulation durch und sah, dass ARM FIQ an der Grenze von ARM aktiviert wird, aber ARM reagiert nicht darauf. Ich denke, vielleicht ist das CPSR F-Bit irgendwie deaktiviert? –

+0

@stone, tun Sie die MRS-Anweisung in der Antwort und sehen Sie, was b6 (0x40) eingestellt ist. Es ist wahrscheinlich deaktiviert. – paxdiablo

+1

Wenn Sie einen Stapel benötigen, während Sie sich im schnellen Interrupt befinden, müssen/müssen Sie den Fiq-Stack einrichten (es gibt 6 separate Stapel im Arm). –

1

Die FIQ kann vom Chiphersteller mit Hilfe von Trustzone Extensions für Sie geschlossen werden.

Trustzone schafft eine sichere Welt und eine normale Welt. Die sichere Welt hat ihren eigenen Supervisor-, Benutzer- und Speicherplatz. Die Idee besteht darin, sichere Operationen so zu routen, dass sie den Chip nie verlassen und selbst beim Scannen der Pins am Bus nicht zurückverfolgt werden können. Ich denke, in OMAP wird es für einige kryptografische Operationen verwendet.

Bei Reset startet der Kern im sicheren Modus. Es richtet den sicheren Monitor ein (Gateway zwischen sicherer und nicht sicherer Welt) und zu diesem Zeitpunkt kann FIQ so eingerichtet werden, dass es zum Monitor geleitet wird. Ich denke, es ist das Bit SCR.FIQ, das gesetzt werden kann, und dann ignorieren alle FIQs den Wert von CPSR.F und gehen in den Überwachungsmodus. Sehen Sie sich den ARM ARM an, aber wenn ich mich richtig erinnere, wenn dies passiert, können Sie den nicht sicheren OS-Code nicht kennen. Dann setzt der Monitor die normalen Weltregister zurück und führt eine Ausnahme zurück, wobei der PC auf den Reset-Ausnahmevektor gesetzt wird.

Der Kern wird eine Unterbrechung nehmen, um Modus zu überwachen, seine Sache zu tun und zurückzukehren.

Leider kann ich Ihnen in den Kommentaren nicht beantworten, ich habe nicht genug Ruf, könnte man immer das in Ordnung bringen;), aber ich hoffe, dass Sie diese