Hardware > Hardware (High-End)

Milan und USB

<< < (6/13) > >>

Chocco:
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.

mfro:
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.


 

Ektus:

--- Zitat von: mfro am Mi 10.03.2021, 07:21:38 ---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.

--- Ende Zitat ---
Hurra, ein Experte!  8)

--- Zitat von: mfro am Mi 10.03.2021, 07:21:38 ---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.

--- Ende Zitat ---
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,

--- Zitat von: mfro am Mi 10.03.2021, 07:21:38 ---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.

--- Ende Zitat ---
Für die Initialisierung und die Treiber schon, aber die reine Abfrage?

mfro:

--- Zitat von: Ektus am Mi 10.03.2021, 09:15:15 ---
--- Zitat von: mfro am Mi 10.03.2021, 07:21:38 ---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.

--- Ende Zitat ---
Hurra, ein Experte!  8)

--- Ende Zitat ---

--- Code: ---/*  PCI BIOS for CT60 with CTPCI
 *               Coldfire MCF547X/MCF548X & MCF5445X
 *
 * Didier Mequignon 2005-2012 e-mail: aniplay@wanadoo.fr
 * Markus Froschle       2007

--- Ende Code ---

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


--- Zitat von: Ektus am Mi 10.03.2021, 09:15:15 ---
--- Zitat von: mfro am Mi 10.03.2021, 07:21:38 ---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.

--- Ende Zitat ---
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,

--- Ende Zitat ---
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.


--- Zitat von: Ektus am Mi 10.03.2021, 09:15:15 ---
--- Zitat von: mfro am Mi 10.03.2021, 07:21:38 ---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.

--- Ende Zitat ---
Für die Initialisierung und die Treiber schon, aber die reine Abfrage?

--- Ende Zitat ---
Korrekt. Aber was soll @Chocco (nur) mit der Abfrage? Dass die Karte drinsteckt und nicht funzt, weiss er auch so ;)

Chocco:
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.

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln