Sourcecode Fortschritt



  • ~Sorry, könnt ein wenig ot sein, weiß aber auch nicht, wo es besser aufgehoben wäre && ich finde es gehört endlich mal gesagt:~

    Ich finde es extrem geil, daß ihr (vorallem Du Erhard und Mr. 😵 es geschafft habt, seit 2009 ein so ambitioniertes Projekt durchzuziehen und damit mit Sicherheit vielen OSdev-Interessierten einen exzellenten Weg zum Einstieg zeigt!


  • Mod

    Vielen Dank für das positive Feedback! Manchmal bin ich selbst erstaunt, dass uns nicht die Puste ausgegangen ist. Mein Dank gilt allen Unterstützern dieses Projektes und den engagierten Entwicklern. Mein Schwerpunkt ist momentan das Thema usb, das ich von Anfang an für wichtig hielt. Daher bietet PrettyOS inzwischen e/o/u/xHCI. Ich finde es auch immer wieder spannend, das Thema Netzwerk durch die Protokollebenen hindurch "von innen" beobachten zu können. Das basiert immer noch alles auf dem Design der 80er Jahre mit den damals eingebauten Schwachstellen.


  • Mod

    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.).


  • Mod

    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.


  • Mod

    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! ⚠


  • Mod

    0.0.4.274 - Rev: 1660

    xhci: port-slot-Link beim device detach entkoppelt durch setzen auf 0xFF.

    Nun klappt der Test:

    1. Jeweils einen Stick an port 3 u. 4 anstecken
    2. Beide Sticks abziehen
    3. Stick an port 4 anstecken (=>slot 3)
    4. Stick an port 3 anstecken (=>slot 4)
    5. Beide Sticks abziehen
    6. Stick an port 3 anstecken (=>slot 3)
    7. 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


  • Mod

    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!


  • Mod

    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änzt

    Seit 0.0.4.277 (r1663) funktioniert xHCI bei mir nicht mehr.


  • Mod

    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-Heap

    Verbesserungen:

    - 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-Ramdisk

    Version 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)


  • Mod

    0.0.5.1 - Rev: 1667

    xhci: Nach dem Abziehen eines MSD (slotNr 0xFF) wird transfer-success bei einem Transferversuch auf false gesetzt.


  • Mod

    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)


  • Mod

    0.0.5.5 - Rev: 1671

    usb_hid.h/c: Erste Analyse des HID Descriptors

    Ausgaben erscheinen etwas unverständlich.


  • Mod

    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 korrigiert

    Hinweis: 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


Anmelden zum Antworten