Sourcecode Fortschritt
-
rev. 1657
xhci.h/c: Adressierung auf slot bezogen. Neu erworbene Adresse wird durchgereicht nach usb.
Leider klappt das noch nicht wie gewünscht. Test: Zwei Sticks an Port 3 u. 4 anschließen. Dann beide abziehen. Stick an Port 4 anschließen. Dieser erhält dann den ersten freien Slot mit der Nr. 3 (Unterschied zwischen Port- u. Slot-Nr.).
-
0.0.4.272 - Rev: 1658
xhci/usb:
Trennung/Zuordnung von port/slot/device-number weiter betrieben.
Problem ist momentan bei usb_getDeviceDescriptor (usb), wenn portNr != slotNr.
Dann kommt die Device-Information nicht an. Bei portNr == slotNr ist alle i.O.
-
0.0.4.273 - Rev: 1659
xhci: port != slot Problematik in den xhci-Transfer/transaction-Fkt. verbessert!
Nun kann man nach Abziehen der Sticks an Port 3 und 4, einen wieder an Port 4 andocken, der dann Slot 3 erhält (port != slot).
Wichtig:
uint8_t portNr = (uint8_t) (size_t) ((hc_port_t*) transfer->device->port->data)->data; uint8_t slotNr = x->portSlotLink[portNr-1].slotNr;
TODO: Neuer Test: 1) ports 3 u. 4 anstecken 2) beide abziehen 3) port 4 anstecken (=>slot3) 4) port 3 anstecken (sollte slot 4 erhalten)
Bei 4) erhält der port 3 nochmals den slot 3!
-
0.0.4.274 - Rev: 1660
xhci: port-slot-Link beim device detach entkoppelt durch setzen auf 0xFF.
Nun klappt der Test:
- Jeweils einen Stick an port 3 u. 4 anstecken
- Beide Sticks abziehen
- Stick an port 4 anstecken (=>slot 3)
- Stick an port 3 anstecken (=>slot 4)
- Beide Sticks abziehen
- Stick an port 3 anstecken (=>slot 3)
- Stick an port 4 anstecken (=>slot 4)
Also die Port/Slot-Zuordnung erscheint nun prinzipiell gelöst.
Enthält noch einige Analysen und Haltepunkte für weitere Tests.
-
Version 0.0.4.275:
- xHCI: Unnütze Allokationen beseitigt, xhci_enqueueTransfer/xhci_enqueueCommand korrigiert (überschrieb Link-TRB), Arrays auf passende Größe reduziert, ...
- Kleine Aufräumarbeiten bei U/O/EHCI
- devmgr: Behandlung von Fehleingaben verbessert
- Compilerfehler bei eingeschalteten Debug-Flags behoben
-
0.0.4.276 - Rev: 1662
fat.c: FAT32 korrigiert part->fat war nicht definiert.
FAT32 Format-Test mit Diskette(!) sieht gut aus.
Hinweis: Floppywechsel wird nicht erkannt!
-
0.0.4.277 - Rev: 1663
xhci.c: Haltepunkte entfernt
-
Version 0.0.4.278:
- FAT: Beachte part->start bei Formattierung
- Devicemanager: Cachegröße ist nun geknickte lineare Funktion des vorhandenen Speichers, Caches unterstützen beliebige Sektorgrößen
- EHCI: Einsparung von Allokationen, nutze qTD::buffer1 für nicht ausgerichtete Puffer
- Floppytreiber: Bessere Unterstützung mehrerer Laufwerke, Zugriff mit Mutex geschützt
- Bugfix: #PF beim Beenden eines Tasks beseitigt, wenn Dateien geöffnet waren
- Bugfix: Besserer Umgang mit im Betrieb gezogenen USB-Sticks und Lesefehlern bei USB
- Alle disk_t-Member initialisiert, optAccSecCount in Vorbereitung für Lesen größerer Blöcke ergänztSeit 0.0.4.277 (r1663) funktioniert xHCI bei mir nicht mehr.
-
0.0.4.279 - Rev: 1665
xhci.c: Fehler beseitigt
-
PrettyOS 0.0.5.0
Neue Features:
- Dateisystemunterstützung erweitert
-- FAT32- und FAT16-Formattierung
-- Ordnerunterstützung
-- Zahlreiche neue Befehle für die Shell: rmdir, mkdir , cp, del, ...
- xHCI-Treiber
- IO/Local-APIC und Message Signaled Interrupts
- Treiber für RTL8168/8169
- USB-Hubs
- ATA-Festplattentreiber
- Neue Ramdisk, basierend auf PrettyIPC
- Neuimplementierter User-HeapVerbesserungen:
- EHCI, OHCI und UHCI stabilisiert und beschleunigt
- Floppytreiber beschleunigt
- PCNet-Netzwerktreiber stabilisiert
- Konsolenstapel zur Unterstützung beliebig vieler Konsolenstapel
- Kernel verkleinert, Ausgabecode in Userspace verlagert (insbesondere: devmgr.elf)Entfernte Funktionen
- VBE-Shell
- Text-GUI
- Initrd-RamdiskVersion 0.0.5.0 - Rev. 1666
- Changelog.odt und NextRelease.txt [EDIT: vergessen, kommt demnächst nach] für 0.0.5.0 aktualisiert
- Einige Fehlerabfragen verbessert
- VS-Solution auf VS2013 als Standard umgestellt (ältere Versionen sollten weiterhin gehen)
-
0.0.5.1 - Rev: 1667
xhci: Nach dem Abziehen eines MSD (slotNr 0xFF) wird transfer-success bei einem Transferversuch auf false gesetzt.
-
0.0.5.2 - Rev: 1668
usb_hid.h/c: Erster Entwurf für ein usb HID Modul
-
Version 0.0.5.3:
- Generischer Mechanismus zum Lesen größerer Blöcke (von Floppy und USB genutzt)
- UHCI: Kommunikation mit LowSpeed-Geräten ermöglicht
- USB-HID: Einige Fehler beim Lesen der Deskriptoren behoben
- USB: Gerätespezifischen Code nach usb_hub/msd/hid.c verschoben
- Bugfix: Umgang mit unbekannten Partitionen verbessert
- NextRelease.txt nachgeliefert
-
Version 0.0.5.4:
- xHCI: Code gekürzt, Slot-Speed auf richtigen Wert gesetzt (anstatt konstant 3)
- EHCI: ehci_portReset aufgeräumt
- USB: Unterstützung mehrerer Interfaces gleichzeitig
- Bugfix: Unterscheidung von Hub/HID/MSD korrigiert (in voriger Revision beschädigt)
-
0.0.5.5 - Rev: 1671
usb_hid.h/c: Erste Analyse des HID Descriptors
Ausgaben erscheinen etwas unverständlich.
-
0.0.5.6 - Rev: 1672
usb_hid.c: Analyse/Show-Fkt. korrigiert/erweitert
-
Version 0.0.5.7:
- HID: Interface-Protokoll angezeigt (Maus, Tastatur)
- HID-Code aufgeräumt
- Bugfix: Debug-Print in usb_msd korrigiertHinweis: Version/Revision versehentlich nicht hochgezählt.
-
Version 0.0.5.8:
- Devicemanager: Blockweises Schreiben implementiert (massive Beschleunigung aller Schreibvorgänge)
- USB-HID: Bessere Unterstützung von Multifunktionsgeräten, Ausgabe verbessert
- Devicemanager: Einige Funktionen umbenannt
- Schreibe "Take screeenshot" erst, nachdem der Screenshot geschossen wurde
- Bugfix: Use-after-free in move()-Funktion behoben
-
Version 0.0.5.9:
- OHCI: Treiber grundlegend überarbeitet: Diverse Fehler und Abweichungen von Spezifikation korrigiert
- xHCI: Warte auf Interrupt anstatt feste Zeitspanne, überflüssiges evaluate context bei GET_DESCRIPTOR_CONFIG entfernt
- diverse HC-Treiber: Fordere Interrupts nur wo nötig
- pong: Code überarbeitet und deutlich gekürzt (> 400 Zeilen), einige kleine Fehler behoben
- pqeq: Ausgabe verbessert
-
Version 0.0.5.10:
- USB: Verbesserter Umgang mit MPS und Endpoints
- xHCI: MSD-Hacks entfernt, Mechanismus zum Aktualisieren der Endpoint-Informationen