Sourcecode Fortschritt


  • Mod

    Version: 0.0.4.29 - rev. 1415:
    Der Hub wird nun wie ein anderes usb-Gerät nummeriert.

    Hubs are also USB devices, and the host enumerates a newly attached hub in the same way as other devices. If the hub has devices attached, the host enumerates these after the hub informs the host of their presence.

    Quelle: http://www.lvr.com/usbcenum.htm

    Abfragen weiterer am Hub angeschlossener Geräte führen wir momentan noch nicht durch (interrupt Transfer notwendig).



  • Erstlings-Commit 🙂

    Version 0.0.4.30 - Rev: 1416

    • ATA-Treiber aufgeraeumt, LBA48-Unterstuetzung eingebaut (momentan noch deaktiviert, da nicht praktisch getestet), mehrere Sektoren unterstuetzt, LOG-Ausgaben durch _HDD_DIAGNOSTICS_ explizit de- und aktivierbar
    • HDDPIODISK in HDDDISK umbenannt; DMA soll spaeter transparent ansprechbar sein
    • HDD-Screenshot-Funktion in ckernel.c an eingeschalteten HDD-Support geknuepft
    • Um Benutzung von HDDDISK bei abgeschaltetem HDD-Support vorzubeugen Definition von HDDDISK an ein definiertes _ENABLE_HDD_ geknuepft (gibt Linker-Error bei versehentlicher Benutzung)
    • Helper repinsb/w/l und repoutsb/w/l util.h hinzugefuegt
    • Tab in usb.c korrigiert

  • Mod

    Version 0.0.4.31 - Rev: 1417
    Änderungen in usb.c bez. Hub.
    Vgl. usb2 spec, Table 11-14. Hub Responses to Standard Device Requests


  • Mod

    Version 0.0.4.32 - Rev: 1418
    usb_hub.h/c ergänzt und erste Versuche bez. HubDescriptor in usb.c



  • Version 0.0.4.33:

    - UHCI: Reagiere auf Geräte, die beim Boot schon angeschlossen sind
    - Floppy: flpydsk_checkInt vor Calibrate ausgeführt (behebt Timeout auf echter Hardware - Beschleunigung)
    - USB: Fehlerbehebung wieder eingefügt (wurde gelöscht)
    - Linux-bochsrc aktualisiert


  • Mod

    Mit qemu und folgenden usb-Kommandos

    -usb -device piix4-usb-uhci -device usb-hub,bus=usb-bus.0,port=1
    

    kann man die Detektion und Abfrage des Hub-Descriptors emulieren. Leider beherrscht qemu diesbezüglich nur Hubs mit USB 1.1, aber für die Entwicklung von Descriptoren und Abfragen ist das hilfreich. Bei Hardware gibt es noch Zeitprobleme.


  • Mod

    Version 0.0.4.34 - Rev: 1420
    Ergebnisse aus einem kurzen Code Review. usb_hub.h/c und usb.c ergänzt. Der Zeiger auf den HubDescriptor wird via device->data gespeichert, analog dem MSD-Modul.



  • Version 0.0.4.35:

    - Speicherverwaltungsproblem bei usb_hub gelöst (JonasOSDever)
    - Struktur von usb.c, insbesondere usb_setupDevice verbessert
    - Compilerfehler bei aktivierten USB-Diagnoseflags behoben


  • Mod

    Version 0.0.4.36 - Rev: 1422
    Nun funktioniert das Abfragen des Hub Descriptors auch auf Hardware mit EHCI und Highspeed Hub (hi/lo Val war verdreht!). 😉


  • Mod

    Version 0.0.4.37 - Rev: 1423
    usb-HubDescriptor von 7 auf 9 byte erweitert und Abfrage angepasst.
    SetConfig vor Abfrage des usb-HubDescriptors.

    Tests (alles Hardware) mit Hispeed usb slots (EHCI) und drei usb2 Hubs liefen erfolgreich!
    Einstieg geschafft. 🙂


  • Mod

    Version 0.0.4.38 - Rev: 1424

    usb_hub.h/c:
    Sämtliche Funktionen von usb2 spec, 11.24.2 Class-specific Requests, versuchsweise für Tests eingebaut.



  • Version 0.0.4.39:

    - EHCI:
    -- Async-Scheduler auf Doorbell-Abfrage umgebaut
    -- #PF wegen fehlender initialisierung eines Pointers beseitigt
    -- Verbesserte Dokumentation und Fehlerausgabe
    - C99-Inline-Spezifikation angewandt (führte zu Compilierungsproblemen mit neuem Clang)


  • Mod

    Version 0.0.4.40 - Rev: 1426
    Experimenteller Zwischenstand bez. usb_hub.h/c (Funktionen noch korrigiert)


  • Mod

    Version 0.0.4.41 - Rev: 1427
    Hub funktioniert! (Hardware-Tests mit drei usb2 Hubs)
    uhci u. usb1 wurden erfolgreich in qemu getestet.

    Screenshot (Test mit einem usb2 4-Port-Hub mit eingesteckten usb2 Stick): http://www.henkessoft.de/Sonstiges/usbHub.JPG 🙂



  • Version 0.0.4.42 - Revision 1428

    • Generischen ATA-Code von hdd.c in ata.c verschoben
    • hdd_t in ata_portInfo_t umbenannt und nach ata.h verschoben

    Version 0.0.4.42 - Revision 1429 -- Fehlende ata.c korrigiert
    Version 0.0.4.42 - Revision 1430 -- Fehlerhafte Revisionsnummer in ckernel.c gefixt
    ~~~ FloppyImage nicht neu gebaut, deswegen immernoch 1428 angezeigt, wenn nicht manuell rebuilded ~~~



  • Version 0.0.4.43:

    - Optimierung bei list_t, ring_t und mutex_t: Unterstützung von Stack-Instanzen - spart malloc/free-Aufrufe, Initialisierungscode und Dereferenzierungen
    - Unterstützung von Funktionsparameter bei threads: Injektion von Parametern in Stack des tasks mit task_passStackParameter
    - Beseitigung von HACKs bei EHCI, OHCI und UHCI: HCs als Parameter an Threads übergeben, wodurch globale Variablen und sleep-Aufrufe entfallen
    - HC-Anzahl-Limitierung in EHCI, OHCI und UHCI entfernt



  • Version 0.0.4.44:

    - Generischer USB-HC-Code nach usb_hc.h/c geschoben
    - Hub-Ports angelegt


  • Mod

    Version 0.0.4.45 - Revision 1433
    Eingesteckter usb-stick (usb2) in einem usb2-Hub wird sauber nummeriert und in unseren Gerätemanager integriert. Ein milestone! 👍

    Erweiterter Test mit echter Hardware:
    EHCI -> usb2-Hub 1 -> usb2-Hub 2 ->usb2-Hub 3 -> usb2-Stick A && usb2-Stick B
    EHCI -> usb2-Hub 1 -> usb2-Hub 2 && usb2-Hub 3; usb2-Hub 2 -> Stick A; usb2-Hub 3 -> Stick B
    Klappt! 🙂 🙂 🙂


  • Mod

    Version 0.0.4.46 - Revision 1434

    SYSTEMFREQUENCY = 250 Hz (vorher 100 Hz)
    EHCI Async-Scheduler von Wartezeit (bisher 10 ms) auf IRQ umgestellt.

    Ladezeit devmgr.elf (278 KB) vonn 12,6 s auf 5,5 s (hinter drei Hub-Ebenen!) verringert, ca. 50 KB/s.

    Tests zeigten, dass man mit 1000 Hz bis auf ca. 1,4 s (Wartezeit: 1 ms) herunter kommen kann. Wir entscheiden uns aus Stabilitätsgründen zunächst für 250 Hz.

    Der Ladevorgang erfolgt in 512 Byte Blöcken. Bei 278 KB also 556 Vorgänge auf usb-MSD Ebene, d.h. pro Vorgang fallen ca. 10 ms an.

    Problem: 4GB usb-Sticks, die mit Rev. 1433 direkt am Root Port liefen, gehen nun nicht mehr! 🙄


  • Mod

    Version 0.0.4.47 - Revision 1435

    Bedingt durch 250 Hz wurden die Wartezeiten in ehci.c verdoppelt:
    Zeile 202: 20 ms,
    Zeile 218: 20 ms,
    Zeile 294: 20 ms,
    Zeile 306: 20 ms,
    Zeile 400: 200 ms (reset!),
    Zeile 407: 20 ms.

    Auch an einer Stelle in uhci.c, zeile 111 (reset): von 50 auf 100 ms.

    Hinweis: bei Tests wurde ein PF bei usb_destroyDevice gefunden.


Anmelden zum Antworten