Sourcecode Fortschritt
-
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
-
Version 0.0.5.11:
- xHCI: Warten auf Abschluss eines Cmds implementiert
- USB-Hub: Einige waitForKeyStroke() entfernt
- HC-Treiber: unnützer Parameter tokenBytes bei setupTransaction entfernt
- Bugfix: vsnprintf konnte bei %X/%x/%y über Puffergrenze schreiben
- Speicherlecks in Shell und fsmanager behoben
-
0.0.5.12 - Rev: 1678
usb.c: UFI (interface->interfaceSubclass == 0x04) wird abgefangen und angezeigt.
test-PC: uhci - fullspeed (usb-Floppy) klappt also am ehci-port nach Abgabe an uhci
-
0.0.5.13 - Rev: 1679
xhci.c: nun wird speed-ID und mps aus PORTSC angepasst für low-/full-/highspeed Devices (Maus/Tastatur, usb-Floppy, Stick)
-
0.0.5.14 - Rev: 1680
usb/usb_msd: Grundlagen gelegt für Mass Storage Device UFI/CBI (z.B. fullspeed usb-Floppy)
Tests mit VBox (ohci) liefern bereits korrekte Daten der Floppy. Das Device wird nicht vollständig als Disk eingebunden, sodass man noch nicht auf den Inhalt zugreifen kann. Partition, Name, Serial fehlen.
-
0.0.5.15 - Rev: 1681
UFI MSD etwas weiter entwickelt.
-
0.0.5.16 - Rev: 1682
UFI zusammen mit supernicky u. MrX bezüglich Lesen u. Schreiben mit Vbox/ohci und echter (durchgereichter) usb-Floppy zum Laufen gebracht. Schöne Zusammenarbeit!
-
Version 0.0.5.17:
- USB: Einige Daten von usb_device_t nach usb_msd_t verschoben
- UHCI, xHCI: Timeout auf bis zu 1,5 Sekunden erhöht
- UFI-Code vereinfacht
- Const-Correctness erhöht, Code aufgeräumt
-
0.0.5.18 - Rev: 1684
UHCI Debug Code optimiert.
-
Version 0.0.5.19:
- EHCI, OHCI: Transfer-Retry-Mechanismus entfernt (nicht funktionsfähig)
- xHCI: Arrays mit Größe MAX_HC_SLOTS+1 auf MAX_HC_SLOTS reduziert
- xHCI: D-Bits im ICC gesetzt
- Heap: Zwei Fehler in free() korrigiert: Verschiebe korrekte Anzahl an Regionen beim Merge, Keine Freigabe nicht allokierter Regionen
- Bugfix: list_destruct() hinterlässt keine toten Pointer
- Bugfix: strncicmp() (Userlib) korrigiert
-
0.0.5.20 - Rev: 1686
uhci debug-code verbessert, usb-Funktionen für weitere notwendige Experimente angezeigt.
-
0.0.5.21 - Rev: 1687
In os.h neu geschaffen: _USB_FUNCTION_DIAGNOSIS_ // Show USB Functions
Damit lassen sich usb-Abläufe besser verfolgen.
-
Version 0.0.5.22:
- UHCI/OHCI/EHCI: Von USB-2.0-Spezifikation geforderte 100ms-Wartezeit zwischen conncect detect und port reset eingebaut
- USB: Ablauf bei getDeviceDescriptor verbessert
- xHCI: Aus unerfindlichen Gründen nötiges waitForKeyStroke wieder eingebaut
- Tools: Bibiliotheksdatei für CppCheck hinzugefügt
-
Version 0.0.5.23:
- Makro für einfache Timeout-Warteschleifen implementiert und an diversen Stellen eingesetzt (Vorschlag von ehenkes)
- Mutex: Assertion, wenn mutex_unlock() auf geöffnetes mutex ausgeführt wird
- PCI: Zugriffe auf Konfigurations-Ports mit mutex gesichert
- Devicemanager: Zugriffe auf Port-/Disklisten mit mutex gesichert
- IRQ: Registrierung eines zweiten Handlers mit cli/sti geschützt
- Bei ASSERTION_FAILURE wird nun ein Stacktrace ausgegeben
-
Version 0.0.5.24:
- Heap: malloc kann Speicher innerhalb einer PAGE anfordern (HEAP_WITHIN_PAGE)
- Sysenter: Handler korrigiert (Funktioniert noch immer nicht stabil)
- Debug-Ausgaben z.T. neu sortiert
- serial_log() ersetzt \n automatisch durch \r\n
- printfe() implementiert: Setzt textColor(ERROR), druckt Fehlermeldung, setzt Farbe zurück
- Einige Allokationen bei "verschachtelten" Speicherbereichen oder Buffer-Arrays eingespart
-
0.0.5.25 - Rev: 1691
Abziehen eines Hubs an einem Root port wird nun behandelt (Port-/Diskliste aktualisiert).
Versuche: Bis zu zwei Hubs in Linie an einem Highspeed-Rootport am test-PC.
TODOs:
- Ports-Size wächst dabei weiter, betroffener port wird auf 0 gesetzt. Hierdurch entstehen Lücken in der Nummerierung.
- otherPorts behandeln (Hinweis MrX), ist diese Liste überhaupt notwendig?
- Attach/Detach an einem Hub (nicht root hub!) wird noch nicht erkannt, kein Interrupt.Anmerkung:
Bisher müssen Devices bereits beim Booten am Hub (nicht root hub!) angesteckt werden, um erfasst zu werden. Hier fehlt ein "Watchdog system" für diese Hubs.Hinweis MrX: Interrupt EP des Hubs beachten (eleganter als watchdog?)
-
0.0.5.26 - Rev: 1692
Behandlung von Hubs und Geräten an Hubs weiter verbessert. Watchdog system implementiert.
Attach/Detach an einem Hub (nicht root hub!) wird inzwischen erkannt. Bisher getestet auf test-PC an einem Highspeed-Port mit ehci.
*TODOs:
- Ports-Size wächst dabei weiter, betroffener port wird auf 0 gesetzt. Hierdurch entstehen Lücken in der Nummerierung.
- otherPorts behandeln (Hinweis MrX), ist diese Liste überhaupt notwendig?
- bei zwei Hubs in Linie gibt es noch Probleme, wenn beide gleichzeitig abgezogen werden (Zeit-/Ablaufproblem).
*list_show implementiert.
-
0.0.5.27 - Rev: 1693
Verhalten beim Aufbau/Abbau von Hub-/Deviceketten weiter stabilisiert. Hub-Watchdog-System überwacht An-/Abstecken.
Probleme gibt es noch beim Abziehen des Hubs am Roothub bei Roothub <- Hub <- Hub <- Devices (kann aber auch am betreffenden Hub liegen).