Interprozessor-Interrupts im ARM-Cortex A9 (Wie schreibe ich einen Handler für Software Generated Interrupt (ARM) unter Linux?)

Ich habe gelesen, dass die von der Software erzeugten Interrupts in ARM als Interprozessor-Interrupts verwendet werden. Ich kann auch sehen, dass 5 dieser Interrupts bereits verwendet werden. Ich weiß auch, dass ARM 16 durch Software erzeugte Interrupts bereitstellt.

In meiner Anwendung verwende ich eine Bare-Metal-Anwendung auf dem ARM-Cortex-Kern und Linux auf dem anderen. Ich möchte einige Daten vom Kern, auf dem Bare-Metal-Anwendungen ausgeführt werden, an den Kern übertragen, auf dem Linux ausgeführt wird. Ich plane, die Daten in den On-Chip-Speicher (der gemeinsam genutzt wird) zu kopieren, und ich werde eine SGI auf dem Core (unter Linux) auslösen, um anzuzeigen, dass einige Daten für die Verarbeitung verfügbar sind. Jetzt kann ich die SGI aus dem Kern generieren (mit Bare-Metal-Anwendung). Aber für die Behandlung des Interrupts auf der Linux-Seite bin ich mir nicht sicher, welche SGI-IRQ-Nummern frei sind, und ich bin mir auch nicht sicher, ob ich die IRQ-Nummer direkt verwenden kann (im Allgemeinen sind SGI 0-15). Hat jemand eine Idee, wie man einen Handler für SGI unter Linux schreibt?

Bearbeiten: Dies ist eine Umformulierung des obigen Textes, da die Frage für geschlossen warSSCE Gründe. Die Cortex-A-CPUs werden in Multi-CPU-Systemen eingesetzt. Ein Armgenerischer Interrupt-Controller (GIC) überwacht alle globalen Interrupts und leitet sie an eine bestimmte CPU weiter. Damit sich einzelne CPUs gegenseitig signalisieren können, aSoftware generierter Interrupt (SGI) wird von einem Kern zum anderen gesendet; das nutztperiphere private Interrupts (PPI). Diese Frage ist,

Wie implementiere ich einen Linux-Kerneltreiber, der eine SGI als PPI empfangen kann?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage