Sie könnten eine Art virtuellen seriellen Port mit "Mailbox" -Techniken erstellen. Ich beschreibe die Hälfte einer einfachen Arbeitsverbindung, wahrscheinlich wollen Sie eine davon in jede Richtung, damit Sie Befehle senden und Antworten erhalten können.
Einen Teil des Speichers während der Kernel-Initialisierung reservieren. Sagen wir 4k, da das oft eine Seite ist, aber 256 oder sogar 16 Bytes funktionieren auch. Reservieren Sie eine Sekunde für die andere Richtung.
Wenn der "Schreiber" eines Kanals etwas sagen will, prüft er zuerst, ob das erste 32-Bit-Wort Null ist. Wenn dies der Fall ist, schreibt es ab dem 5. Byte eine Nachricht - Text- oder Binärdaten, bis zu einem Maximum von 4k - 4 = 4092 Bytes. Dann setzt es das erste Wort gleich der Anzahl der Bytes, die es geschrieben hat.
Der Empfänger überwacht die Bytezahl im ersten Wort des empfangenen Kanals. Wenn es eine von Null verschiedene Anzahl von Bytes sieht, liest es so viele Bytes aus dem Speicher. Dann setzt er die Byteanzahl auf Null, um dem Schreiber zu signalisieren, dass eine neue Nachricht nun nach Belieben geschrieben werden kann.
Die einzige Sache, auf die es ankommt, ist, dass Sie tatsächlich auf den realen Speicher zugreifen oder durch den gleichen Cache arbeiten, und dass Sie eine atomare Schreiboperation zum Schreiben der Bytezahl haben (wenn Sie keine atomaren 32-Bit-Schreibvorgänge haben) , verwenden Sie eine 16-Bit-Zählung, die sowieso reichlich ist, oder machen Sie den Puffer kleiner und verwenden Sie eine 8-Bit-Zählung). Da der Schreiber es nur auf einen Wert ungleich null setzen kann, wenn es Null ist, und der Leser kann es nur auf einen Nullwert setzen, wenn es nicht Null ist, es alles funktioniert.
Dies ist natürlich ein einfacher Mechanismus, und beide Seiten können vom anderen blockiert werden. Sie können jedoch die Komponenten entwerfen, die die zu berücksichtigenden Nachrichten enthalten. Sie können es auch erweitern, indem Sie mehrere Nachrichten im Flug bereitstellen oder parallel einen zusätzlichen Prioritäts- oder Fehlermeldungskanal hinzufügen.
Oh, bevor Sie springen und dies zu codieren, tun Sie einige Web-Suche. Ich bin mir sicher, dass es bereits einen Mechanismus wie diesen oder etwas anderes gibt, mit dem Sie Ihre RT- und Linux-Komponenten verbinden können. Aber es ist auch interessant zu lernen, es selbst zu tun - und notwendig, wenn Sie auf ein kleineres Embedded-System ohne ein Betriebssystem stoßen, das die Funktionalität für Sie bietet.
Dies ist ein guter Vorschlag (einfach genug zu verstehen), ich werde in dieser Richtung untersuchen! – Patrick