Ich habe einen M.2-Steckplatz mit M-Schlüssel auf meinem Laptop und mehrere M.2-PCI-e-Geräte, die ich gleichzeitig verwenden möchte. Ich habe nach einem M.2-Switch oder einer Art Splitter gesucht, konnte aber nichts finden, also habe ich beschlossen, meinen eigenen zu entwerfen und auch etwas PCI-Express-Erfahrung zu sammeln.
Ich habe versucht, die Spezifikationen für die physische Schicht von PCI Express nachzuschlagen, aber ich konnte nicht viele Informationen finden. Die meisten Artikel, die ich gefunden habe, beziehen sich auf die PCI-SIG-Website, die eine Mitgliedschaft mit einer Arbeits-E-Mail (die ich nicht habe) von einem der Mitgliedsunternehmen benötigt. Also habe ich versucht, so viel wie möglich selbst zu lernen.
Soweit ich herausfinden konnte, stellt ein M.2 M-Key-Steckplatz 4x PCI-e-Lanes bereit. Die Geräte, die ich habe, sind eine Kombination aus A/E-, E- und M-Tasten. Die A/E- und E-Key-Geräte erfordern 1 oder 2 PCIe-Lanes. Keine der Karten, die ich habe, benötigt die M.2-spezifischen Funktionen wie USB oder DisplayPort. Ich bin auch völlig in Ordnung mit den M-Key (x4) Geräten, die auf 2 Spuren oder sogar einer einzigen Spur mit reduzierter Geschwindigkeit laufen. Ich habe auch gelernt, dass jede PCI-e-Lane ein differenzielles Sende- und Empfangspaar hat und dass es einen Referenztakt gibt, der vom Host bereitgestellt wird. Also frage ich mich;
Ich betrachte dies eher als eine Lernerfahrung als nur als eine Lösung für meine Bedürfnisse, daher schätze ich jede Hilfe, die ich bekommen kann. Danke schön!
Jenseits der physikalischen Schicht haben Sie Kernelsysteme auf sehr niedriger Ebene auf CPU-Ebene, für die Sie komplexe Treiber schreiben müssten, vielleicht sogar das BIOS neu schreiben müssten.
Der I2C-Bus wird für einige spezifische Low-Level-Systeme verwendet und ist oft nicht auf Verbraucherprodukten implementiert, sondern nur auf High-End-Motherboards.
Da der I2C-Bus offen ist, kann ich sie einfach alle zusammenbinden? (Dasselbe gilt für SMBus)
Nein, dies könnte einige der Chips auf dem Motherboard deaktivieren, da die Leitung möglicherweise für andere Zwecke (z. B. Stromversorgungssteuerung usw.) gemeinsam genutzt wird.
Welche Funktion haben die WAKE#- und PERST#-Leitungen?
Wake dient dazu, den Computer von der Hardware aufzuwecken.
Wird der Host alle Geräte separat erkennen und auflisten, oder benötigt er dafür spezielle BIOS- oder UEFI-Firmware-Unterstützung?
Das tut es, aber es weiß nicht unbedingt, wie es mit ihnen kommunizieren soll, daher ist der Fahrer erforderlich.
Gibt es noch etwas, was ich beachten sollte?
Die Geschwindigkeit des Busses macht es schwierig, mit einer MCU zu arbeiten, und normalerweise sind FPGA / teure kundenspezifische Chips erforderlich. Es gibt auch viel IP und nicht viele Informationen sind verfügbar.
Ron Beyer
brhans
özg
DKNguyen
özg
DKNguyen
özg
DKNguyen
Tom Tischler