Sourcecode Fortschritt
-
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).
-
0.0.5.28 - Rev: 1694
usb_hub.h/c: weiter stabilisiert (zusammen mit MrX)
Versuche mit test-PC am Highspeed-Port mit ehci verlaufen weitgehend positiv, d.h. der prinzipielle Ablauf ist stimmig. Am xhci-Port klappt der Setup des Device am Hub nicht.
-
0.0.5.29 - Rev: 1695
usb_hub.h/c: #define für Konstanten eingeführt
siehe usb2 spec Table 11-15, 11-16, 11-17
-
0.0.5.30 - Rev: 1696
ehci: structs/functions for periodic list (for interrupt transfers and isochronous transfers) started
-
0.0.5.31 - Rev: 1697
Interrupt Transfers versuchsweise am Hub in ehci gestartet (auskommentiert)
Anmerkung: ///#define _UHCI_ENABLE_ in os.h, weil es störte (Kreuzempfindlichkeit
^^)./// TEST
// usb_InterruptTransfer(hub->device, hub->endpointInterruptHUB);
///TEST
befindet sich in usb_hub.c, Zeile 130.