Sourcecode Fortschritt
-
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.
-
Version 0.0.5.32:
- USB: Interrupt-Code aufgeräumt; Periodic list initialisiert
- Cleanup beim abziehen von Hubs verbessert
-
Version 0.0.5.33:
----- Experimentelle Version, USB derzeit instabil -----
- USB: Control-Transfer-Typen in Funktionen usb_controlIn(), usb_controlOut() und usb_controlSet() zusammengeführt
- USB-HC: Trennung von rootPorts und otherPorts aufgehoben, Initialisierung von hc_port_t in usb_hc.c zusammengefasst
- htons()/ntohs() in Inline-Assembler implementiert (xhcg)
- Bugfix: Laden von Dateien funktionierte nicht zuverlässig
- Bugfix: Speicherzugriffsfehler in usb_getHubStatus behoben
- Bugfix: Einrückungen bei strg+d (Portliste) korrigiert
-
0.0.5.34 - Rev: 1700
In setupHub wurde die Hilfsfunktion usb_isHubPortConnected verwendet, sodass nun angesteckte Devices korrekt einem setupDevice zugeführt werden.
usb_hubWatchdog (usb_hub.c) wurde in ckernel.c auskommentiert, da diese Funktion noch nicht wie gewünscht arbeitet. TODO: korrigieren oder ergänzen/ersetzen durch interrupt-Transfer
-
0.0.5.35 - Rev: 1701
- Analytische Funktion usb_showHubPortStatus geschaffen, damit wurde der versteckte Fehler lokalisiert!
- Fehler in usb_getPortStatus(...) beseitigt (versehentlich Zeiger auf Zeiger, ein Klassiker bei void* buffer)
- Zeit im Einzeldurchlauf bei ehci_addToPeriodicScheduler von 10 auf 30 ms erhöht. Damit läuft der interruptTransfer (zur Zeit nur Demonstration, noch keine Verwendung des Resultats) sicherer
- hubWatchdog auf jede zweite Sekunde eingestelltTODO: Weitere Bemühungen zur Stabilisierung (sicherer Ablauf, Vermeidung von #PF, reboots und usb errors, evtl. Einsatz des One-Byte-Ergebnisses des Interrupt-Transfers).
Danke an MrX für die Vereinfachung des ports-Handlings (funktioniert gut)