2016-07-28 30 views
0

Ich habe zwei Prozessoren auf dem gleichen sterben. Einer ist ein ARM-Prozessor mit Linux und ein anderer ist ein Nicht-ARM-Prozessor mit Linux-Betriebssystem System (Proprietary Proc). Wir haben kein Medium wie Netzwerk Schnittstelle oder PCI oder USB zwischen den beiden Prozessoren, außer 1 GB Shared Memory.SSH ein Prozessor von dem anderen Prozessor ohne Netzwerkschnittstelle

Wir möchten in der Lage sein, den Nicht-ARM-Prozessor auf dem ARM -Prozessor SSH zu betreiben und FS zu montieren.

Ich fragte mich, ob ich einen Vorschlag bekommen könnte, was wäre ein möglicher Weg, um diese Kommunikation zwischen den Prozessoren zu etablieren.

Als eine Sache des Konzepts, nur zufällig schreibe ich einen kleinen Netzwerktreiber , der über den gemeinsamen Speicher redet und könnte Pakete zwischen die beiden übertragen. Aber das hilft mir nicht mit meinem größeren Anwendungsfall von SSH einen Prozessor von dem anderen zu können.

Sehr zu schätzen jeden Vorschlag in dieser Hinsicht.

Dank

Antwort

1

Sie auf dem richtigen Weg sind, ist dies nicht ungewöhnlich Art und Weise auf dem gleichen Chip oder auf der gleiche Platine mit einem gemeinsamen Speicher zwischen den Prozessoren zu nähern.

Sie sollten nur die physikalische Schicht implementieren, eine NIC ersetzen oder einen NIC-Treiber nehmen und die Ringe (Ringpuffer) in RAM implementieren, anstatt mit einer Karte zu sprechen. Kopf-und Tail-Zeiger, können Sie Ram brennen und machen alle Paket-Slots die gleiche Größe, größer als die größte, die Sie unterstützen (im Grunde entweder 2Kbytes oder sagen, 10Kbytes, wenn Sie Jumbo 10K unterstützen ist einfach ohne Multiplikation zu berechnen, oder verwenden Sie eine Multiplikation was auch immer). Oder Sie können eine Tabellenstruktur oder eine verknüpfte Listy-Sache haben, wenn Sie Speicher zum Preis von ein wenig mehr Rechenleistung sparen möchten.

Manchmal beschäftigt sich diese Ebene mit den Mac-Layer-Prüfsummen, aber Sie sollten nichts mit dem Protokoll tun, egal ob es ssh oder ftp oder http oder was auch immer ist, das ist weit über dieser Ebene.

-1

eine virtuelle serielle Schnittstelle zwischen den beiden Kernen erstellen mit einem kleinen User-Space-Programm

  • sicher PTY Unterstützung (CONFIG_UNIX98_PTYS oder CONFIG_LEGACY_PTYS) und CONFIG_PPP_ASYNC in beiden Kernen konfigurierten machen
  • ein Userspace-Programm schreiben, die
    • mmap ein Stück des gemeinsamen Speichers in Benutzerbereich
    • richtet einen Ringpuffer für
    • Senden
    • findet die Ringpuffer andere Seite zur Aufnahme
    • kopiert alles von stdin in den Sendepuffer
    • und aus dem Empfangspuffer zu stdout
  • Start pppd auf beiden Kernen mit der pty Option, und Ihr Programm als script Parameter

Jetzt sollten Sieder Lage sein,einen Kern aus dem anderen. Wenn das funktioniert, starten Sie sshd oder einen beliebigen Netzwerkprotokolldämon, den Sie mögen.