Autor Thema: Milan und USB  (Gelesen 37051 mal)

0 Mitglieder und 4 Gäste betrachten dieses Thema.

Offline mfro

  • Benutzer
  • Beiträge: 1.640
Re: Milan und USB
« Antwort #20 am: Di 09.03.2021, 19:10:33 »

Soweit ich es verstanden habe, wird die Erkennung der Karte vom BIOS vorgenommen. Die Initialisierung zur Benutzung übernimmt dann der entsprechende Treiber. Die Realtek Netzwerkkarte wird z.B. vom BIOS erkannt und gemäß der ClassID als Netzwerkkarte vom PCI-BIOS gelistet. Auch eine zugesteckte Matrox GraKa wird erkannt und gelistet, kann mangels Treiber aber nicht genutzt werden.

Ich habe jetzt zwei USB2-Karten versucht, aber das PCI-BIOS ignoriert sie irgendwie. Es wird nichtmal angezeigt, dass da überhaupt eine Karte im Slot steckt.
Okay, dann startet der Rechner wenigstens. Dann sollte man mal mit lspci schauen, ob das was sieht. Vorausgesetzt, der USB Controller im Milan kann mit der Karte was anfangen...

Ich nehme an, das sollte "PCI controller" heissen?

Wenn die Karte nicht vom PCI scan (den das PCI BIOS beim Systemstart macht) als vorhanden erkannt wird, dann kann der PCI configuration space nicht gelesen werden. Da brauchst Du nicht weiter zu probieren.

Vielleicht sind das doch 3.3V-only Karten?
And remember: Beethoven wrote his first symphony in C

Offline Ektus

  • Moderator
  • *****
  • Beiträge: 919
Re: Milan und USB
« Antwort #21 am: Di 09.03.2021, 19:22:46 »

Ich nehme an, das sollte "PCI controller" heissen?
??? Ja.
Wenn die Karte nicht vom PCI scan (den das PCI BIOS beim Systemstart macht) als vorhanden erkannt wird, dann kann der PCI configuration space nicht gelesen werden. Da brauchst Du nicht weiter zu probieren.
Kann lspci keinen neuen scan "zu Fuß" machen?
Vielleicht sind das doch 3.3V-only Karten?
Dann sollten sie aber die 5V Kerbe nicht haben und sich daher gar nicht stecken lassen. 3,3V only ist IMO ziemlich selten.

Offline Ektus

  • Moderator
  • *****
  • Beiträge: 919
Re: Milan und USB
« Antwort #22 am: Di 09.03.2021, 19:26:19 »
Ich habe gerade mal lspci auf dem Falcon mit CTPCI gestartet, und zwar unter MagiC. Das listet brav die vorhandenen Karten auf. Und MagiC hat zwar einen _PCI cookie, aber wird der wirklich schon beim boot vom TOS gefüllt? Oder ist das ein Speicherbereich im Controller?

Offline mfro

  • Benutzer
  • Beiträge: 1.640
Re: Milan und USB
« Antwort #23 am: Di 09.03.2021, 19:52:09 »
Ich habe gerade mal lspci auf dem Falcon mit CTPCI gestartet, und zwar unter MagiC. Das listet brav die vorhandenen Karten auf. Und MagiC hat zwar einen _PCI cookie, aber wird der wirklich schon beim boot vom TOS gefüllt? Oder ist das ein Speicherbereich im Controller?

Das PCI-BIOS ist beim CT60-TOS (für CTPCI) im Flash und die PCI-Enumeration wird bereits beim Booten durchgeführt (das müsste eigentlich im Output erscheinen). Danach sind die Karten aktiv (Speicherbereiche zugeordnet) und warten "nur noch" auf einen Treiber. Rate mal, woher ich das weiß ;)

Das lspci liest die Information lediglich aus (holt sich das _PCI cookie und darüber die PCI-Bios Einsprungpunkte).
« Letzte Änderung: Di 09.03.2021, 19:58:13 von mfro »
And remember: Beethoven wrote his first symphony in C

Offline Ektus

  • Moderator
  • *****
  • Beiträge: 919
Re: Milan und USB
« Antwort #24 am: Di 09.03.2021, 21:50:16 »
Das PCI-BIOS ist beim CT60-TOS (für CTPCI) im Flash und die PCI-Enumeration wird bereits beim Booten durchgeführt (das müsste eigentlich im Output erscheinen).
Ja, weiß ich und sehe ich auch.
Danach sind die Karten aktiv (Speicherbereiche zugeordnet) und warten "nur noch" auf einen Treiber. Rate mal, woher ich das weiß ;)

Das lspci liest die Information lediglich aus (holt sich das _PCI cookie und darüber die PCI-Bios Einsprungpunkte).
Nur überlebt dieser Cookie den Start von MagiC bzw ist MagiC darauf vorbereitet? Muß wohl, wenn lspci was sinnvolles anzeigt, aber MagiC initialisiert doch sonst auch alles selber.

Offline Chocco

  • Benutzer
  • Beiträge: 228
  • May the force be with you
Re: Milan und USB
« Antwort #25 am: Mi 10.03.2021, 00:10:58 »
Also ich kann mir nur vorstellen, das im PCI-BIOS des Milan ein Bug ist. Erkannt und eingebunden werden verschiedene GraKa, Netzwerkkarten und SCSI-Controller. Diese lassen sich über lspci auch anzeigen.

Bei USB2 bootet die Maschine entweder nicht (VIA Chipsatz) oder die Karte wird nicht als PCI Device erkannt und in die Enumeration eingebunden (NEC Chip).

Wie könnte man z.B. über ein Programm im Auto-Ordner ein PCI-Device "nachmelden"? PCI unterstützt ja hot plug, um im laufenden Betrieb Devices zu tauschen.
Atari TT030 mit CrazyDots
Milan 060 (ATI Rage Pro)
Apple MBP

Offline mfro

  • Benutzer
  • Beiträge: 1.640
Re: Milan und USB
« Antwort #26 am: Mi 10.03.2021, 07:21:38 »
Eine mögliche, weitere Ursache: USB-Karten sind meist Multi-Function-Devices, d.h. auf einer Karte sind mehrere Funktionen, die im PCI-Scan wie mehrere Karten auftauchen. NEC- (oder besser OHCI-/EHCI-, die sind alle mehr oder weniger identisch) USB-Karten haben meist 4 Functions (also praktisch wie 4 Karten in einem Slot).

Grafik- und Netzwerkkarten haben üblicherweise nur eine Function. Ich weiss, dass frühe Versionen des PCI-BIOS Multifunction-Devices nicht unterstützt haben (im Milan möglicherweise auch?), weil ich den Teil, der die abhandelt, für Didier Mequignon's CTPCI TOS beigesteuert habe.

Allerdings habe ich das so in Erinnerung, dass in dem Fall zumindest die erste Function auf der Karte im Scan auftauchen müsste - das scheint aber auch nicht der Fall zu sein?

Grundsätzlich kann die PCI-Enumeration auch nachträglich (z.B. im AUTO-Ordner) ablaufen. Dazu ist aber eine sehr genaue Kenntnis des (PCI-) Chipsatzes. der Speicherkonfiguration und ein Testsystem notwendig. Es ist ja (auch wenn's so aussieht) nicht so, dass da nur die Geräte aufgelistet würden (das wäre einfach): jede Karte wird (in einem speziellen Modus) abgefragt: "wer bist du, was kannst du", "wieviele Functions", "welche Speicheradressen", "welche I/O-Adressen", "welches Alignment", "Interrupts?", "Bus Master?", usw., ihre Konfigurationsregister entsprechend gesetzt sowie die Einstellungen gespeichert, damit sie später von den Treibern abgefragt werden können.

USB-Karten sind insofern nochmal speziell, dass sie Bus-Master sind (sie übernehmen temporär den PCI-Bus und schreiben "rückwärts" Daten in den Speicher des Hosts, der dafür natürlich entsprechend vorbereitet sein muss). Das macht's noch ein wenig komplizierter.


 
« Letzte Änderung: Mi 10.03.2021, 08:03:09 von mfro »
And remember: Beethoven wrote his first symphony in C

Offline Ektus

  • Moderator
  • *****
  • Beiträge: 919
Re: Milan und USB
« Antwort #27 am: Mi 10.03.2021, 09:15:15 »
Grafik- und Netzwerkkarten haben üblicherweise nur eine Function. Ich weiss, dass frühe Versionen des PCI-BIOS Multifunction-Devices nicht unterstützt haben (im Milan möglicherweise auch?), weil ich den Teil, der die abhandelt, für Didier Mequignon's CTPCI TOS beigesteuert habe.
Hurra, ein Experte!  8)
Grundsätzlich kann die PCI-Enumeration auch nachträglich (z.B. im AUTO-Ordner) ablaufen. Dazu ist aber eine sehr genaue Kenntnis des (PCI-) Chipsatzes. der Speicherkonfiguration und ein Testsystem notwendig. Es ist ja (auch wenn's so aussieht) nicht so, dass da nur die Geräte aufgelistet würden (das wäre einfach): jede Karte wird (in einem speziellen Modus) abgefragt: "wer bist du, was kannst du", "wieviele Functions", "welche Speicheradressen", "welche I/O-Adressen", "welches Alignment", "Interrupts?", "Bus Master?", usw., ihre Konfigurationsregister entsprechend gesetzt sowie die Einstellungen gespeichert, damit sie später von den Treibern abgefragt werden können.
Wenn ersteres so einfach wäre, müßte das doch auch in lspci machbar sein. Und der PCI-Bus selbst wird ja schon vom BIOS initialisiert, so daß dessen Adressen und Konfigurationsregister bekannt sind. Die werden ja von lspci brav aufgelistet,
USB-Karten sind insofern nochmal speziell, dass sie Bus-Master sind (sie übernehmen temporär den PCI-Bus und schreiben "rückwärts" Daten in den Speicher des Hosts, der dafür natürlich entsprechend vorbereitet sein muss). Das macht's noch ein wenig komplizierter.
Für die Initialisierung und die Treiber schon, aber die reine Abfrage?

Offline mfro

  • Benutzer
  • Beiträge: 1.640
Re: Milan und USB
« Antwort #28 am: Mi 10.03.2021, 09:56:09 »
Grafik- und Netzwerkkarten haben üblicherweise nur eine Function. Ich weiss, dass frühe Versionen des PCI-BIOS Multifunction-Devices nicht unterstützt haben (im Milan möglicherweise auch?), weil ich den Teil, der die abhandelt, für Didier Mequignon's CTPCI TOS beigesteuert habe.
Hurra, ein Experte!  8)
/*  PCI BIOS for CT60 with CTPCI
 *               Coldfire MCF547X/MCF548X & MCF5445X
 *
 * Didier Mequignon 2005-2012 e-mail: aniplay@wanadoo.fr
 * Markus Froschle       2007

Mittlerweile habe ich schon mehr vergessen als ich damals wusste ;)

Grundsätzlich kann die PCI-Enumeration auch nachträglich (z.B. im AUTO-Ordner) ablaufen. Dazu ist aber eine sehr genaue Kenntnis des (PCI-) Chipsatzes. der Speicherkonfiguration und ein Testsystem notwendig. Es ist ja (auch wenn's so aussieht) nicht so, dass da nur die Geräte aufgelistet würden (das wäre einfach): jede Karte wird (in einem speziellen Modus) abgefragt: "wer bist du, was kannst du", "wieviele Functions", "welche Speicheradressen", "welche I/O-Adressen", "welches Alignment", "Interrupts?", "Bus Master?", usw., ihre Konfigurationsregister entsprechend gesetzt sowie die Einstellungen gespeichert, damit sie später von den Treibern abgefragt werden können.
Wenn ersteres so einfach wäre, müßte das doch auch in lspci machbar sein. Und der PCI-Bus selbst wird ja schon vom BIOS initialisiert, so daß dessen Adressen und Konfigurationsregister bekannt sind. Die werden ja von lspci brav aufgelistet,
Hab' ich was von "einfach" gesagt?  :D

lspci fragt nur die Infos ab, die das PCI-BIOS kennt (über die vom PCI-BIOS bereitgestellten XBIOS-Funktionen). Ergo: wenn da die Karte nicht auftaucht, kennt das PCI-BIOS sie nicht. Am lspci rumzumachen bringt also nichts.

Wenn's nicht an der Karte selbst liegt (m.E. immer noch einigermassen wahrscheinlich), liegt's am PCI-BIOS.
Weil das beim Milan im ROM liegt, müsste es durch ein neues, fehlerbereinigtes PCI-BIOS im AUTO-Ordner ersetzt werden. Keine triviale Aufgabe und nicht an einem Samstagnachmittag gemacht (für sich schon nicht und erst recht nicht, wenn man die Innereien des Milans nicht kennt). KV (kannste vergessen), fürchte ich.

USB-Karten sind insofern nochmal speziell, dass sie Bus-Master sind (sie übernehmen temporär den PCI-Bus und schreiben "rückwärts" Daten in den Speicher des Hosts, der dafür natürlich entsprechend vorbereitet sein muss). Das macht's noch ein wenig komplizierter.
Für die Initialisierung und die Treiber schon, aber die reine Abfrage?
Korrekt. Aber was soll @Chocco (nur) mit der Abfrage? Dass die Karte drinsteckt und nicht funzt, weiss er auch so ;)
And remember: Beethoven wrote his first symphony in C

Offline Chocco

  • Benutzer
  • Beiträge: 228
  • May the force be with you
Re: Milan und USB
« Antwort #29 am: Mi 10.03.2021, 11:20:09 »
Der im Milan verwendete Controller ist ein Intel 82371 PIIX. Ich habe jetzt zwei günstige PCI USB 1.1 Karte bestellt. Mal sehen, ob die dann erkannt werden.
Atari TT030 mit CrazyDots
Milan 060 (ATI Rage Pro)
Apple MBP

Offline Ektus

  • Moderator
  • *****
  • Beiträge: 919
Re: Milan und USB
« Antwort #30 am: Mi 10.03.2021, 12:42:12 »
Das Datenblatt der PCI bridge ist da zu finden: https://www.digchip.com/datasheets/parts/datasheet/227/SB82371.php

Auf den ersten Blick ist dieser Chip nicht sonderlich intelligent, der sollte eigentlich mit allen Karten können, die elektrisch kompatibel sind.

Offline mfro

  • Benutzer
  • Beiträge: 1.640
Re: Milan und USB
« Antwort #31 am: Mi 10.03.2021, 12:43:54 »
Der im Milan verwendete Controller ist ein Intel 82371 PIIX. Ich habe jetzt zwei günstige PCI USB 1.1 Karte bestellt. Mal sehen, ob die dann erkannt werden.

Der 82371 ist die PCI<->ISA Bridge, kein PCI Controller.

Der PCI-Controller heißt im Milan PLX9080, Datenblatt ist hier: https://der-ingo.de/de/milanhelp/download.html


And remember: Beethoven wrote his first symphony in C

Offline Chocco

  • Benutzer
  • Beiträge: 228
  • May the force be with you
Re: Milan und USB
« Antwort #32 am: Mi 10.03.2021, 16:33:23 »
Der im Milan verwendete Controller ist ein Intel 82371 PIIX. Ich habe jetzt zwei günstige PCI USB 1.1 Karte bestellt. Mal sehen, ob die dann erkannt werden.

Der 82371 ist die PCI<->ISA Bridge, kein PCI Controller.

Der PCI-Controller heißt im Milan PLX9080, Datenblatt ist hier: https://der-ingo.de/de/milanhelp/download.html

Stimmt, ich hatte einfach die Meldung auf dem Bildschirm abgelesen und dabei das PCI ISA Bridge übersehen  :)
Atari TT030 mit CrazyDots
Milan 060 (ATI Rage Pro)
Apple MBP

Offline Arthur

  • Benutzer
  • Beiträge: 10.311
  • Mein Atari erinnert mich an die gute alte Zeit..
Re: Milan und USB
« Antwort #33 am: Mi 10.03.2021, 17:41:03 »
Hier zum Milan PCI

Offline mfro

  • Benutzer
  • Beiträge: 1.640
Re: Milan und USB
« Antwort #34 am: Mi 10.03.2021, 19:54:09 »
Dann sollten sie aber die 5V Kerbe nicht haben und sich daher gar nicht stecken lassen. 3,3V only ist IMO ziemlich selten.

Auch da habe ich schon alles mögliche gesehen. 3.3V only-Karten mit zwei Kerben z.B.

P.S.: und, psst, nicht weitererzählen: ich hab' auch schon selber Kerben gefeilt. Nicht in eine PCI-, sondern in eine Riser-Karte, die "falschrum" war. Und ja, der Rechner läuft noch (mit der Riser-Karte) und allen Slots befüllt ;)
And remember: Beethoven wrote his first symphony in C

Offline Wosch

  • Benutzer
  • Beiträge: 771
  • Ich liebe dieses Forum!
Re: Milan und USB
« Antwort #35 am: Mi 10.03.2021, 20:33:35 »
Vielleicht mal bei Uwe Schneider nachfragen?
https://www.uweschneider.de/Projekte_Milan.php
Gruß
Wolfgang

Milan060, Falcon FX36, TT,STE,MST,ST, MagicPC,STEmulator,Lynx,Jag,2600,5200,7800, 400,800,600XL,800XL,65XE,130XE,1200XL,PCs mit Win7, Win10, Linux, div. Apple Geräte, div. RPis

Offline Chocco

  • Benutzer
  • Beiträge: 228
  • May the force be with you
Re: Milan und USB
« Antwort #36 am: Do 11.03.2021, 19:45:46 »
Hier zum Milan PCI

Vielen Dank, hier wird die Sache ja mal richtig gut erklärt! Ich frage mich, wie ermittelt das PCI-BIOS beim Booten, an welchen Adressen nach DeviceID und VendorIDs gesucht werden muss? Ist das im Controller hart verdrahtet oder besitzt der Controller ebenfalls ein kleines EPROM, in dem die Adressen abgelegt sind?
Atari TT030 mit CrazyDots
Milan 060 (ATI Rage Pro)
Apple MBP

Offline Arthur

  • Benutzer
  • Beiträge: 10.311
  • Mein Atari erinnert mich an die gute alte Zeit..
Re: Milan und USB
« Antwort #37 am: Do 11.03.2021, 22:47:36 »
Evtl. hilft das:

Alle PCI-Spezifikationen enthalten eine vollständige Plug-And-Play-Unterstützung, das heißt, das Computer-BIOS oder das Betriebssystem kann feststellen, welche Ressourcen (Speicherbereiche, I/O-Adressen, Interrupt-Leitungen) eine solche Karte benötigt und diese so zuteilen, dass keine Konflikte zwischen den Karten entstehen.

Jede PCI-Karte wird durch einen eindeutigen Hersteller-Code (Vendor ID) identifiziert, welcher dem Hersteller durch die PCI SIG zugeteilt wurde, sowie durch eine Baugruppen-Nummer (Device ID), die jeder Hersteller für seine Karten frei vergeben kann. Dadurch ist die zugehörige Treiber-Software in der Lage, von ihr unterstützte Baugruppen sicher zu identifizieren.

Offline mfro

  • Benutzer
  • Beiträge: 1.640
Re: Milan und USB
« Antwort #38 am: Fr 12.03.2021, 06:10:55 »
Ich frage mich, wie ermittelt das PCI-BIOS beim Booten, an welchen Adressen nach DeviceID und VendorIDs gesucht werden muss? Ist das im Controller hart verdrahtet oder besitzt der Controller ebenfalls ein kleines EPROM, in dem die Adressen abgelegt sind?
Das ist im Datenblatt zum PLX9080 (S. 16ff) eigentlich recht gut erklärt. Es wird eben nicht an bestimmten Adressen nach irgendwas gesucht, sondern die Karten (bzw. die PCI-Slots) werden aktiv abgefragt.
Dazu wird der PCI-Controller in den "Configuration Space Access"-Modus gebracht. Dann wird für jeden Slot versucht, das VendorID/DeviceID-Register auszulesen (das Register ist auf der PCI-Karte). Wenn da was anderes als $FFFF_FFFF steht (das ist eine ungültige VID/DID-Kombination, die für "nix da" steht), steckt in diesem Slot eine Karte, die konfiguriert werden kann/muss.

Gelesen/geschrieben werden also immer Register des Controllers, der dann seinerseits Register auf der Karte (so vorhanden) liest/schreibt.
And remember: Beethoven wrote his first symphony in C

Offline Arthur

  • Benutzer
  • Beiträge: 10.311
  • Mein Atari erinnert mich an die gute alte Zeit..
Re: Milan und USB
« Antwort #39 am: Fr 12.03.2021, 12:47:58 »
PDF vom VT6212L PCI USB 2.0 da steht das der auch  "Serial EEPROM Support for Boot Register Update" hat. Und in der Wiki https://de.wikipedia.org/wiki/Peripheral_Component_Interconnect gibt es auch eine gute Übersicht.