Forum: PC Hard- und Software PCIe Kommunikation


von Sebastian (Gast)


Lesenswert?

Hi,

bin grad am Fehler suchen. Hab einen PCIe Ethernet Device installiert, 
nur leider hab ich keinerlei Kommunikation auf den PCIe Lanes.

Weiß jmd von euch, wer die PCIe Kommunikation startet, und wie diese 
gestartet wird???

WakeOnLan und Reset sind high. Ansonsten hab ich lediglich die Clk, 
sowie die RX/TX Lanes installiert. Der Ethernet PHY Device selbst 
scheint auch zu laufen, da die Leds bereits den richtigen Status (Link, 
Speed etc.) angeben. Wenn ich ein Ethernet-Kabel zwischen dem Ethernet 
Phy und meinem Rechner anschließe, so meckert Windows auch nicht, dass 
es keine Verbindung hätte.

Gruß
Seb

: Verschoben durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Sebastian schrieb:
> bin grad am Fehler suchen. Hab einen PCIe Ethernet Device installiert,
Worauf denn? Wie denn? Foto, Schaltplan....
> nur leider hab ich keinerlei Kommunikation auf den PCIe Lanes.
Woran erkennst du das?

von Sebastian (Gast)


Lesenswert?

das keinerlei Kommunkation statt findet, hab ich mit dem Oszilloskop 
überprüft. Die Lanes sind die ganze Zeit auf 0V für die Clock.

Hab mir ein x86-Board (Cpu-Platine) gekauft und dazu ein kleines 
Targetboard erstellt mit eben einem zusätzlichen Ethernet-Port, via 
PCIe.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Sebastian schrieb:
> Hab mir ein x86-Board (Cpu-Platine) gekauft
Betriebssystem?

> und dazu ein kleines Targetboard erstellt mit eben einem
> zusätzlichen Ethernet-Port, via PCIe.
Wie? Mit Fädeldraht? Foto?
Wird das Device überhaupt erkannt?
Was sagt ein PCI-Scan?
Google nach: pci32 craig hart
Und hier gibts dazu eine aktuelle pcidevs.txt : http://www.fuwi.ethz.ch/

von Sebastian (Gast)


Lesenswert?

Lothar Miller schrieb:
> Wie? Mit Fädeldraht? Foto?
> Was sagt ein PCI-Scan?

Als Betriebssystem setze ich momentan Windows Xpe ein. Ist natürlich 
alles schön verlötet auf einer Platine (nicht mit Fädeldraht oder 
ähnlichem)...


> Wird das Device überhaupt erkannt?
Wie sollte es erkannt werden? Bis jetzt hab ich keinerlei Kommunikation 
auf den PCIe Lanes und daher wird auch im Device Manager nichts 
angezeigt.

> Was sagt ein PCI-Scan?
gibt es da ein entsprechndes command-tool um so einen Scan 
durchzuführen?

von Sebastian (Gast)


Lesenswert?

Lothar Miller schrieb:
> Google nach: pci32 craig hart
> Und hier gibts dazu eine aktuelle pcidevs.txt : http://www.fuwi.ethz.ch/Beitrag 
melden | Bearbeiten | Löschen |

hab ich grad ausprobiert, er findet den Device leider nicht; allerdings 
sind auf dem PCIe Bus0 bereits einige Devices untergebracht.

Bekommen die Devices die PCIe-Bus-Adressen vom PCIe-Host übergeben, oder 
sind diese fest in den Devices selbst integriert?

von Schorsch (Gast)


Lesenswert?

Sebastian schrieb:
> allerdings
> sind auf dem PCIe Bus0 bereits einige Devices untergebracht.

Und du hast da einfach dein neues Device parallel dazugelötet?

PCIe ist kein Bus, das sind Punkt-Zu-Punkt Verbindungen!

von Sebastian (Gast)


Lesenswert?

Schorsch schrieb:
> Und du hast da einfach dein neues Device parallel dazugelötet?

das weiß ich nicht genau: vom CPU-Board sind halt insgesamt 5x Tx/Rx 
PCIe Lane-Päärchen rausgeführt und eines davon hab ich verwendet.

von Sebastian (Gast)


Lesenswert?

Gibt es für PCIe auch eine present detection? Hab jetzt nichts gefunden; 
weiß aber dass das bei PCI required ist, damit der Device erkannt wird.

von Schorsch (Gast)


Lesenswert?

Sebastian schrieb:
> Gibt es für PCIe auch eine present detection? Hab jetzt nichts gefunden;
> weiß aber dass das bei PCI required ist, damit der Device erkannt wird.

Ja, ich würde vermuten das die Leitungen "PRSNT#1" und "PRSNT#2" dafür 
da sind. JTAG und I²C (SM-Bus) sind aber hoffentlich optional.

http://www.pcisig.com/specifications/pciexpress/
http://pinouts.ru/Slots/pci_express_pinout.shtml

von Jens (Gast)


Lesenswert?

@Sebastian:

>> Und du hast da einfach dein neues Device parallel dazugelötet?
>das weiß ich nicht genau: vom CPU-Board sind halt insgesamt 5x Tx/Rx
>PCIe Lane-Päärchen rausgeführt und eines davon hab ich verwendet.

Und woher weißt Du das Du PCIe-Lanes erwischt hast und nicht vielleicht
etwas anderes? Mit was für Tastköpfen hast Du denn versucht den PCIe
zu debuggen?

Mal schauen woran ich mich bezüglich noch erinnere:

- Läuft da nach dem Start nicht eine Trainingssequenz zwischen
den Phy-Modulen von Host und Slave? Da werden die miteinander
synchronisert.
- Dann kommt sicher sowas wie die Enumeration bei klassischem PCI,
- An PCIe-Slots gibt es ein Signal "PRSNT#1 - Hot plug presence detect",
soviel zum Thema presence detection. Wenn sowas nicht existiert
muß das BIOS wissen was an welchen PCIe-Lanes angeschlossen ist um
es korrekt zu initialisieren.

von Jens (Gast)


Lesenswert?


von Michael X. (Firma: vyuxc) (der-michl)


Lesenswert?

Sebastian schrieb:
> Hi,

> Weiß jmd von euch, wer die PCIe Kommunikation startet, und wie diese
> gestartet wird???

Der root complex. Zuerst wird eine Link-Training Sequenz gestartet. 
Danach die Enumeration durchs BIOS

> WakeOnLan und Reset sind high. Ansonsten hab ich lediglich die Clk,
> sowie die RX/TX Lanes installiert. Der Ethernet PHY Device selbst
> scheint auch zu laufen, da die Leds bereits den richtigen Status (Link,
> Speed etc.) angeben. Wenn ich ein Ethernet-Kabel zwischen dem Ethernet
> Phy und meinem Rechner anschließe, so meckert Windows auch nicht, dass
> es keine Verbindung hätte.

1. Hast du die richtigen Lanes erwischt? Oder sinds welche vom PEG? Die 
können oft nicht als Einzellanes konfiguriert werden.
2. Rx auf Tx, + und - richtig herum? Was macht der Clock? Presence ist 
low?

von Sebastian (Gast)


Lesenswert?

Jens schrieb:
> An PCIe-Slots gibt es ein Signal "PRSNT#1 - Hot plug presence detect",
> soviel zum Thema presence detection. Wenn sowas nicht existiert
> muß das BIOS wissen was an welchen PCIe-Lanes angeschlossen ist um
> es korrekt zu initialisieren.

Ohje, ein sog. PRSNT#1 Signal steht mir leider nicht zur Verfügung, so 
dass es anscheinend über das Bios eingestellt werden muss. 
Wahrscheinlich ist das nicht mal möglich bzw. nur durch den Hersteller 
vom CPU-Board.

Wie muss so ein IC im Bios angegeben werden? Bzw. wie weiß das BIOS, 
dass es sich genau um diesen IC an PCIe-Lane xyz handelt? Im Bios kann 
ich lediglich die PCIe-Lanes enablen, disablen oder auf Auto (present 
detection) stellen.

Jens schrieb:
> Und woher weißt Du das Du PCIe-Lanes erwischt hast und nicht vielleicht
> etwas anderes? Mit was für Tastköpfen hast Du denn versucht den PCIe
> zu debuggen?

Also ich sag mal so, mit dem vorhandenen Oszi kann ich nicht wirklich 
überprüfen ob die Frequenz vom PCIe Clock stimmt, aber man sieht 
zumindestens ob sich was auf dem Bus tut oder nicht. Die Tastköpfe sind 
1:1 oder 10:1.

Nachdem ich im BIOS den PCIe-Lane 0 auf enabled geschaltet habe, bekomme 
ich auch ein CLK-Signal (ob es genau stimmt, weiß ich wie gesagt nicht, 
aber es bewegt sich was). Die beiden RX/TX Lanes besitzen allerdings 
immer
den gleichen Level (RX ist auf Null und bei TX ist einer auf 1.5V und 
der andere auf 0V)

Jens schrieb:
> Läuft da nach dem Start nicht eine Trainingssequenz zwischen
> den Phy-Modulen von Host und Slave? Da werden die miteinander
> synchronisert
Zwischen welchen Modulen? Ich hab auf dem Targetboard einen Ethernet-PHY 
installiert, welcher auf der einen Seite die Signale von der 
Ethernet-Buchse animmt und auf der anderen Seite diese Signale per PCIe 
an den x86 Prozessor bzw. dessen Southbridge weiterleitet.

Vielen Dank an euch alle für die Hinweise....

von Sebastian (Gast)


Lesenswert?

Michael X. schrieb:
> 1. Hast du die richtigen Lanes erwischt? Oder sinds welche vom PEG? Die
> können oft nicht als Einzellanes konfiguriert werden.
> 2. Rx auf Tx, + und - richtig herum? Was macht der Clock? Presence ist
> low?

PEG hab ich auf dem CPU-Board, allerdings hab ich diese nicht erwischt. 
Hab einfach PCIe_Rx0+/- und PCIe_Tx0+/- verwendet. Die Clock hat ein 
Signal, sowie einen Offset von ca. 400mV

von Sebastian (Gast)


Lesenswert?

bin leider zum ersten Mal jetzt mit PCIe in Berührung gekommen (deshalb 
so anfänger-fragen - werd mir aber heute abend mal die pdfs durchlesen, 
um etwas schlauer zu werden): hab mir nochmal das Pinning vom Connector 
zum und vom CPU-Board angesehen. Bezüglich der Present-Detection gibt es 
diese nur für den PEG-Port und für die ExpressCards (aber die kann ich 
nicht für so einen PCIe Ic verwenden, oder)?

Michael X. schrieb:
> Der root complex. Zuerst wird eine Link-Training Sequenz gestartet.
> Danach die Enumeration durchs BIOS

Werden bei dieser Link-Traning Sequenz auch die RX/TX Lanes verwendet?, 
So dass man auf diesen beiden Lanes auch etwas sehen müsste?

Seb

von Christian R. (supachris)


Lesenswert?

ExpressCard beinhaltet PCIe, den müsstest du auch verwenden können. Ohne 
Presence Detect wird anscheinen das Link Training nicht vom Root Complex 
gestartet. Auch wollen die meisten PCIe Endpoints das Reset sehen, um 
danach auf das Link Training zu warten. Das muss also auch passend 
kommen. Schau doch in die PCIe Spec, da steht drin, welche Signale 
optional und welche nötig sind. 400mV Offset? Fehlen da eventuell die 
100nF Kondensatoren an den Ausgängen des Root Complex Chips? PCIe ist 
AC-gekoppelt LVDS. Ohne die Spec ist das für dich nur Räselraten...auf 
jeden Fall ist das Reset für den Endpoint essentiell, ohne RST Flanke 
wird der nicht auf den Root Complex reagieren.

von Sebastian (Gast)


Lesenswert?

"By the standard, PERST# which is the Express Card reset, is low as long 
CPPE# is high. As soon as a Express Card is plugged in, the cards pulls 
CPPE# low, and after a fixed delay of 100ms, the PERST# signal rises 
high"

kann ich einfach das CPPE# Signal vom Expresscard-Slot1 per Pulldown auf 
0V ziehen und PERST# vom Expresscard-Slot1 einfach an den RST Input vom 
Ethernet Device anschließen?

>400mV Offset? Fehlen da eventuell die
>100nF Kondensatoren an den Ausgängen des Root Complex Chips?
glaub ich nicht, laut Datenblatt sollten diese bereits auf dem CPU-Board 
installiert sein für die CLK-Signale.

von Michael X. (Firma: vyuxc) (der-michl)


Lesenswert?

Sebastian schrieb:

> Werden bei dieser Link-Traning Sequenz auch die RX/TX Lanes verwendet?,
> So dass man auf diesen beiden Lanes auch etwas sehen müsste?

Ja. Hast du im TX-Zweig des Ethernetcontrollers die 100nF 
Koppelkondensatoren drin?
Langsam wirds Zeit für einen Schaltplan. Außerdem kannst du den 
Hersteller/Typ von deinem Modul gerne nennen.

von Sebastian (Gast)


Lesenswert?

hab jetzt PERST u. CPPE hinzugefügt und jetzt wird im Device Manager 
"Ethernet Controller" erkannt, allerdings wird auch nach installieren 
des Realtek Drivers RTL8111B IC dieser nicht als Realtek ausgemacht....

von Michael X. (Firma: vyuxc) (der-michl)


Lesenswert?

Du hast offensichtlich ein leeres Konfigurations-EEprom.

von Sebastian (Gast)


Lesenswert?

Michael X. schrieb:
> Du hast offensichtlich ein leeres Konfigurations-EEprom.

das ist richtig. Hab eines angeschlossen, allerdings steht da nichts 
drinnen; hab auch auf der Realtekseite keinerlei Beschreibungen 
Downloadsachen gefunden, die diese Eeprom beschreiben würden.

von Jens (Gast)


Lesenswert?

Eine marktübliche PCIe-Karte mit dem Ethernetcontroller besorgen und
den dort enthaltenen EEPROM kopieren?

von Sebastian (Gast)


Lesenswert?

Jens schrieb:
> Eine marktübliche PCIe-Karte mit dem Ethernetcontroller besorgen und
> den dort enthaltenen EEPROM kopieren?

Hab die Informationen grad mal bei Realtek angefragt. Mal schaun ob da 
was zurückkommt. Ohne Eeprom erhält man das gleiche Resultat.

Komisch finde ich nur, dass man den Treiber nicht installieren kann, 
auch wenn man dem Device den passenden Treiber bereits auswählt. "The 
hardware was not installed, because the wizard couldn`t find the 
necessary software", lautet stets die exakte Fehlermeldung vom 
"New-Hardware-Wizard" (egal was ich auswähle).

von Christian R. (supachris)


Lesenswert?

Passt denn die gemeldete PCI Vendor und Device ID zu denen im Treiber? 
Bei leerem EEPROM laden die meisten Controller eine Default-Config, die 
meist nicht in den endgültigen Treibern für den Kunden drin ist. 
Außerdem brauchst du dann noch ein Programm, mit dem du das EEPROM 
beschreiben kannst. Fraglich, ob Realtek das rausrückt.

von Sebastian (Gast)


Lesenswert?

nicht komplett:

Vendor: 10ech realtek semiconductor co., ltd
(scheint richtig zu sein)

Device 8129h rtl-8129
Subsystem id 812911ech rtl8219 fast eth adapter
(aber hier wird anscheinend ein anderer Device gefunden, bzw. meint dass 
das System)...

von Sebastian (Gast)


Lesenswert?

Sebastian schrieb:
> Device 8129h rtl-8129
> Subsystem id 812911ech rtl8219 fast eth adapter
> (aber hier wird anscheinend ein anderer Device gefunden, bzw. meint dass
> das System)...

hab mal zum Spaß die 100nF im Tx-Zweig zum x86 Prozessor rausgenommen 
und durch 0Ohm ersetzt -> liefert das gleiche Ergebnis, was die 
Device-ID angeht. Ich dachte jetzt würde aufgrund der fehlenden 
Kondensatoren etwas anderes angezeigt werden (irgendeine ID)...

von Schorsch (Gast)


Lesenswert?

Sebastian schrieb:
> auch nach installieren
> des Realtek Drivers RTL8111B IC

und

Sebastian schrieb:
> Device 8129h rtl-8129
> Subsystem id 812911ech rtl8219 fast eth adapter

Nur um die blödsten Fehler zuerst auszuschliessen:

Dein Treiber stimmt? Sicher? was passiert wenn du einen rtl-8129 - 
Treiber installierst?

von Sebastian (Gast)


Lesenswert?

Schorsch schrieb:
> Nur um die blödsten Fehler zuerst auszuschliessen:

einen Treiber hab ich bis jetzt noch gar nicht installiert.

Lothar Miller schrieb:
> Google nach: pci32 craig hart
> Und hier gibts dazu eine aktuelle pcidevs.txt : http://www.fuwi.ethz.ch/

wenn ich dieses Programm anwende oder wenn ich im Device Manager auf den 
"Ethernet Controller" mit gelben Fragezeichen klicke, bekomme ich diese 
Informationen angezeigt.

Schorsch schrieb:
> Dein Treiber stimmt? Sicher? was passiert wenn du einen rtl-8129 -
> Treiber installierst?
Anscheinend ist dieser RTL8129 sein sehr alter Realtek Device, da ich 
auf deren Seite gar keine Treiber finden kann. Gekauft hab ich einen 
RTL8111B und das steht auch auf dem Device drauf.

von Sebastian (Gast)


Lesenswert?

Hab grad den RTL8129 Treiber ausprobiert - als Ergebnis bekam ich den 
blauen Bildschirm angezeigt mit

"hardware malfunction
parity check memory parity errror"

von Schorsch (Gast)


Lesenswert?

Sebastian schrieb:
> Gekauft hab ich einen
> RTL8111B und das steht auch auf dem Device drauf.

Ah, ok. Ein Blick in die Linux-Treiber-Sourcen für den Chip offenbart, 
dass die RTL-Chips wohl ihre PCI-IDs aus dem EEProm lesen möchten. Wenn 
kein EEProm vorhanden, dann melden sie sich als 0x8129.

Also:
Entweder den Treiber so hinbiegen, dass er diese Device-ID schluckt, 
(Und dabei den 8129-Treiber, der evtl. beim Windows "mitgeliefert" 
wurde, deaktivieren) oder ein EEProm mit passender Device-ID an den Chip 
hängen.

von Sebastian (Gast)


Lesenswert?

Schorsch schrieb:
> Ah, ok. Ein Blick in die Linux-Treiber-Sourcen für den Chip offenbart,
> dass die RTL-Chips wohl ihre PCI-IDs aus dem EEProm lesen möchten. Wenn
> kein EEProm vorhanden, dann melden sie sich als 0x8129.

kannst du mir noch einen link schicken, wo du das gefunden hast???? Das 
wäre ja super, wenn nur dass der grund wäre!!

von Schorsch (Gast)


Lesenswert?

Sebastian schrieb:
> kannst du mir noch einen link schicken, wo du das gefunden hast???? Das
> wäre ja super, wenn nur dass der grund wäre!!

Einen Link brauchts dafür nicht, es sind nur diese Zeilen aus der 
8139too.c gewesen:
1
        /* Bogus 8139 silicon reports 8129 without external PROM :-( */
2
        {0x10ec, 0x8129, PCI_ANY_ID, PCI_ANY_ID, 0, 0, RTL8139 },
und mit 0x10EC / 0x8129 hat sich dein Device ja gemeldet, oder?

von Sebastian (Gast)


Lesenswert?

Schorsch schrieb:
> und mit 0x10EC / 0x8129 hat sich dein Device ja gemeldet, oder?

richtig... vielen Dank für deine Mühe. Werd berichten, sobald ich die 
Eeprom-Daten von Realtek erhalten habe.

von der_michl (Gast)


Lesenswert?

Realtek und Antwort? Naja, viel spaß.
Entweder eeprom so beschreiben wie es im Datenblatt steht oder das 
passende Tool besorgen. Beim 8139 hieß es 'rset.exe', weiß nicht ob die 
aktuelle variante den 8111 unterstützt. Hast du den Chip von 
Cornelius-Consult? Der hätte auch die Software.

von Sebastian (Gast)


Lesenswert?

der_michl schrieb:
> Hast du den Chip von
> Cornelius-Consult? Der hätte auch die Software.

bei denen hab ich schon angefragt - die haben leider nichts; haben mich 
lediglich an realtek.de verwiesen wo mir schon eine Frau geantwortet hat 
und bei Realtek nachfragt nach diesen Daten....

der_michl schrieb:
> Entweder eeprom so beschreiben wie es im Datenblatt steht oder das
> passende Tool besorgen
wo steht das denn im Datenblatt? Hab da nichts gefunden, was angibt wo 
was im Eeprom gespeichert werden muss? z.B. kann man bei diesem IC auch 
die LEDs entsprechend über das Eeprom konfigurieren...

http://bothhand.info/pdf/spec-8111b(140).pdf

von Michael X. (Firma: vyuxc) (der-michl)


Angehängte Dateien:

Lesenswert?

Dir fehlt das passende Datenblatt.

von Sebastian (Gast)


Lesenswert?

es hat lange gedauert, aber jetzt hab ich den Inhalt für das Eeprom 
bekommen von Realtek und der RTL8111B wird jetzt auch im Device Manager 
richtig erkannt und angezeigt.

Allerdings kann ich bis jetzt keine Verbindung aufbauen. Die Verbindung 
wird immer als "unconnected" dargestellt. Die LED (Tx/Rx) blinkt zwar, 
aber mit dem Wireshark sehe ich keinerlei Traffic.

Das Eeprom selbst kann ich über den Hauptprozessor (übers DOS) auslesen 
und programmieren dank Realtek, so dass ich auf der PCIe-Strecke keinen 
Fehler vermute. Die MDI-Leitungen sind auch alle entsprechend 
angeschlossen... :-(

Vielleicht hat jmd von euch noch einen Rat, was ich mal ausprobieren 
sollte. Wenn ich den Realtek über ein Ethernetkabel direkt mit einem 
anderen Rechner verbinde, wird auch eine Verbindung bei diesem Rechner 
angezeigt.

von Sebastian (Gast)


Lesenswert?

hab mir grad noch einmal ein paar schaltpläne angeschaut: wird zwischen 
RTL8111B und dem Transformator keine Leitungsterminierung mit 49.9 Ohm 
Widerständen verwendet???

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.