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
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?
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.
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/
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?
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?
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!
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.
@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.
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?
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....
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
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
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.
"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.
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.
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....
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.
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).
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.
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)...
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)...
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?
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.
Hab grad den RTL8129 Treiber ausprobiert - als Ergebnis bekam ich den
blauen Bildschirm angezeigt mit
"hardware malfunction
parity check memory parity errror"
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.
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!!
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:
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.
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.
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
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.
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???