Sourcecode Fortschritt
-
version = "0.0.3.146 - Rev: 1347"
uhci.h/c: Funktion bool isTransactionSuccessful(uhci_transaction_t uT)* geschaffen, damit der Erfolg korrekt festgestellt werden kann, denn auch bei manchen Fehlern (z.B. babble) stellt der UHCI das inactive-Bit (active==0) ein.
usb2_msd.c: Unterscheidung zwischen ohci/ehci und uhci bei usbRead und usbWrite
TODO: implement 64-byte-packet transfers with UHCI instead of 512-byte-packets with OHCI (obviously auto-split) and EHCI
-
version = "0.0.3.147 - Rev: 1348"
ipc.c und paging.c: Style Anpassungen
-
version = "0.0.3.148 - Rev: 1349"
(in ckernel.c versehentlich nicht angepasst)
paging.h/c: uint32_t paging_getVirtAddr(void* physAddress);
Liefert virtuelle Adresse, wenn die phys. Adresse zugeordnet ist, bzw. 0, falls nicht. Damit kann man also auch feststellen, ob eine physische Adresse bereits im Paging verwendet wird.
-
version = "0.0.3.149 - Rev: 1350"
paging.h/c: uintptr_t paging_getVirtAddr(uintptr_t physAddress)
-
version = "0.0.3.150 - Rev: 1351"
paging_getVirtAddr(uintptr_t physAddress) bezüglich Geschwindigkeit optimiert
-
version = "0.0.3.151 - Rev: 1352"
kheap.c: kleine Änderungen
-
Version 0.0.3.152:
- Initialisierungsreihenfolge bei USB-HCs geändert (*hci_setupUSBDevice)
-> Kein #PF bei UHCI mehr
- Aufsplitten von Transaktionen, die größer als die MPS des Endpoints sind (-> Funktioniert nicht?)
- usbRead/usbWrite werden auch bei UHCI wieder ausgeführt (Teilweiser revert von r1347)
- Bugfix: RAM in Bytes wird wieder korrekt angezeigt (nicht mehr 0 Bytes)
- IPC weiter gefüllt (PCI-Daten)
- IPC-Ausgabe verbessert: waitForKeyStroke alle 36 Zeilen
- Kleinigkeiten
-
Problem liegt im toggle-Verhalten. Durch Verändern von 1 Transfer auf 8 Transfers passt das nicht mehr (Status In-Transfer (13 bytes) ebenfalls 0 wie der letzte der acht vorherigen In-Transfers):
512: 1 - 0
64: 1 0 1 0 1 0 1 0 - 0 (bumm!)
-
Erhard Henkes schrieb:
Problem liegt im toggle-Verhalten. Durch Verändern von 1 Transfer auf 8 Transfers passt das nicht mehr (Status In-Transfer (13 bytes) ebenfalls 0 wie der letzte der acht vorherigen In-Transfers):
512: 1 - 0
64: 1 0 1 0 1 0 1 0 - 0 (bumm!)Dann hat eine Internetquelle, die ich dazu konsultiert habe, unrecht. Die hat nämlich behauptet dass der Split keinen Einfluss auf das Toggle folgender Transaktions hat (die nicht zum gesplitteten Teil gehören)
-
version = "0.0.3.153 - Rev: 1354"
Formale Änderungen
-
Version 0.0.3.154:
- *hci_setupUSBDevice-Funktionen zusammengefasst in usb_setupDevice
- Neues, generischeres Toggle-System (-> UHCI läuft nun)
- Kleinigkeiten (u.a. überflüssige printf-Parameter an 3 Stellen entfernt)
-
Dickes Lob!
-
Version 0.0.3.155:
- Speicherverbrauch der *HCI-Treiber reduziert
- USB-Code aufgeräumt und z.T. logischer gestaltet
-
Test-Resultat:
3 Typen bei Test mit uhci:
-
Corsair Flash Voyager funktioniert komplett incl. 3:/ttt (lediglich 2 * HC Halted ohne Schadwirkung)
-
EMTEC 4GB: SET ADDRESS ok, GET DEVICE: usb error & stalled
-
Intenso Rainbow Line: bei SET ADDRESS: No response from Device
uhci spec:
4.1.5 STALLED
This event indicates that a device/endpoint returned a STALL handshake during a transaction or that the transaction ended in an error condition. This indicates that the endpoint has reached a condition where no more activity can occur without intervention from the driver. In addition to the TDs Stalled bit being set, the Active bit will be cleared. HCD will not accept any more transfers on this endpoint until the condition is cleared by driver software. Like the Babble event, reception of a STALL does not decrement the error counter. A hardware interrupt is signaled to the system.
-
-
version = "0.0.3.156 - Rev: 1357"
usb weiter optimiert. Bei ausbleibendem Erfolg von GET_DEVICE wird mit Fehlermeldung abgebrochen!
Kleine Korrekturen in uhci (z.B. korrekte Port-Ausgaben j+1).
TODO: Leider wurde der wesentliche Erfolgsfaktor für alle Typen von usb-Sticks bei uhci noch nicht gefunden (s.o.).
-
version = "0.0.3.157 - Rev: 1358"
Reihenfolge umgebaut:
Einer der drei EMTEC pensticks, mit denen u.a. getestet wird, läuft basierend auf uhci durch die controls durch und steigt erst bei test-unit-ready (also ab bulk) aus.
-
version = "0.0.3.158 - Rev: 1359"
usb uhci weiter analysiert/optimiert.
- Fehler beseitigt:
- Ergebnisse nur in usb-structs bei transfer.success (sonst: schwere Fehler)
- Disk entfernt beim Ziehen des Pensticks
-
Version 0.0.3.159:
- Umbenennungen: usb2 nach usb, USB-Funktionsnamen analog Styleguide und Ausgabe
- usbBulkTransfer_t entfernt
- Anzahl der Retries für fehlgeschlagene Transfers bei allen HC-Typen auf 3 gesetzt
-
version = "0.0.3.160 - Rev: 1361"
Formale Änderungen
-
version = "0.0.3.161 - Rev: 1362"
e1000 via cdi-schnittstelle eingebaut (funktioniert noch nicht), vlt. noch falsche Aufruf-Funktion:
else if (PCIdev->classID == 0x02 && PCIdev->subclassID == 0x00 && PCIdev->deviceID == 0x100E && PCIdev->vendorID == 0x8086) // Intel Gigabit Ethernet Controller // CDI-Interface { // driver = &network_drivers[...]; // CDI printf("\nIntel Gigabit Ethernet Controller"); e1000_driver_init(); // CDI }