Sourcecode Fortschritt



  • Version 0.0.4.253:

    - PCI: Funktionen pci_config_read und pci_config_write_* in pci_configRead und pci_configWrite_* umbenannt, nehmen pciDev_t* als Parameter
    - PCI: Allokation der MMIO-Bar in pci_aquireMemoryForMMIO() verallgemeinert; Alle Gerätetreiber sollten nun die Allokation korrekt durchführen
    - OHCI: Code besser strukturiert
    - Bufix: Unsinnigen Code in pic_remap entfernt
    -> Interrupts von PCI/PCIe ohne MSI funktionieren wieder
    - Bugfix: Floppy-Treiber setzte drittes Byte von SPECIFY falsch (cppcheck-Fund), Steprate falsch interpretiert
    -> Ladegeschwindigkeit nun deutlich verbessert, da Head-Load-Time von 256ms auf 30ms verkürzt. Steprate von 13ms auf 4ms verkürzt
    - Bugfix: Initialisere partition-Array von FloppyDisk mit Nullen
    - Bugfix: mouse_read() nach Kommandos 0xF6 und 0xF4 auskommentiert - Timeout auf allen getesteten Geräten, inklusive Emulatoren



  • Version 0.0.4.254:

    - CDI-Implementation etwas aufgeräumt, Speicherleck in cdi_pci.c behoben
    - Bei Absturz des Kernels: Wechsel in Kernelkonsole bevor das System angehalten wird
    - todoList mit mutex gesichert, Allokationen reduziert
    - _BROKENFREE_DIAGNOSIS_ entfernt - stattdessen Ausgabe eines Stacktraces
    - Bugfix: Übergebe nur PAGESIZE-ausgerichtete Adressen an paging_acquirePciMemory
    - Bugfix: PCNet-Treiber gibt korrekte Paketlänge an (läuft nun auch auf VBox)

    Es besteht ein seltsamer Bug, wahrscheinlich mit Zusammenhang zu CDI oder dem e1000-Treiber, der zu einem "Broken Free" führt, wenn man mit clang kompiliert. Vor dem o.g. Fix für das Speicherleck gab es einen Freeze (auch mit GCC). (VBox mit e1000-Netzwerkadapter)


  • Mod

    0.0.4.255 - Rev: 1641

    xhci: handler verändert, so dass ein Port Change Detect erst zurück gesetzt und behandelt wird, wenn der HC wirklich läuft.

    Hinweis: vmware läuft mit xhci nicht mehr seit dem Übergang Rev. 1582 -> 1583


  • Mod

    0.0.4.256 - Rev: 1642

    apic.c: Remap PCI lines A#, B#, C#, D# von level/low nach edge/high geändert, damit vmware wieder läuft. Test-PC geht auch noch.


  • Mod

    0.0.4.258 - Rev: 1644 (rev. 1643 war Versehen)

    apic.h: geht doch nur mit #define APICIRQ 0
    xhci.c: timeout-Ausdruck entfernt


  • Mod

    0.0.4.259 - Rev: 1645

    xhci.c: ScratchpadBuffers erstellt, falls vom xHC gefordert (aktuelles Bochs erwartet 4 Buffer)



  • Version 0.0.4.260:

    - PCI: Fehler in pci_trySetMSIVector behoben: Interruptnummer war falsch, Zugriff auf MESSAGEDATA als word
    - RTL8168, RTL8139: volatile beim Zugriff auf MMIO
    - PCNet, RTL8168: Interrupt quittiert bevor Pakete verarbeitet werden (Empfang läuft flüssiger)
    - PCNet: Bugfix: Paketlänge beim Empfang korrigiert (enthält keine CRC32); 4-Byte alignment reicht bei init-block, Leak behoben
    - RTL8168: Fehlinformationen von osdev.org behoben: Register MTPS existiert nicht, stattdessen gibt es ETTHR
    - DHCP: memset anstelle von Kopierschleifen
    - CDI-Header aktualisiert
    - Kleinkram: Includes aufgeräumt, verschiedene Falschschreibungen von "threshold" korrigiert



  • Version 0.0.4.261:

    - Neuer Containertyp: array (dynamisches Array)
    - Disk- und Portarrays nun von dynamischer Größe, Portnummerierung größer 'Z' möglich ('AA', 'AB', ...)
    - EHCI: ehci_addToAsyncScheduler auf Prüfung des Statusbytes zurückumgestellt (-> Keine Timeouts mehr)
    - xHCI: Nutzt nun Interrupt-Vektor 3 (via MSI)
    - Wechsel zur Kernelkonsole in panic_assert()
    - Bugfix: Pufferüberlauf in usb_createDevice() behoben
    - Bugfix: pci_configWrite_word hat falsches Register beschrieben (MSI funktionieren nun!)

    Anmerkung (29.01.2015): xhci: nur noch attach wird erkannt, detach nicht.


  • Mod

    0.0.4.262 - Rev: 1648

    Format für FAT32 ansatzweise korrigiert. Volume-Name kommt nun an der richtigen Stelle und Verzeichnisse sind leer. Beim Einkopieren von Dateien erfolgen aber noch Fehler.



  • Version 0.0.4.263:

    - FAT: Formattierungscode überarbeitet - Medientyp korrigiert, Parameter an Spezifikation angepasst, schreibe nur soviele Sektoren, wie nötig
    - xHCI: Scratchpad-Allokation korrigiert
    - Diverse Treiber: PCI-Command-Register als WORD geschrieben
    - GUI: Nutze array-Typ
    - Bugfix: Strg+d-Ausgabe korrigiert
    - VM86-Code aufgeräumt
    - Variablendeklarationen etwas aufgeräumt


  • Mod

    0.0.4.264 - Rev: 1650

    xhci.c:
    - xhci_enqueueTransfer repariert (if/else bei linkTRB)
    - Toggle Cycle gesetzt beim linkTRB im TransferRing
    - TransferringBase auf Pagegrenze gesetzt

    Transferring läuft nun sauber im Kreis



  • Version 0.0.4.265:

    - xHCI: Abläufe verbessert, Code aufgeräumt, Setzen/Lesen des Interruptstatus korrigiert
    - OHCI, UHCI: Treiber grundlegend überarbeitet: Unsinn beseitigt, korrektes Warten auf Transferabschluss, Speicherverwaltung begradigt
    - USB: Einige Ausgaben und waitForKeyStroke() entfernt bzw. hinter Diagnoseflags versteckt
    - Bugfix: Timeout-Schleife im EHCI-Async-Scheduler korrigiert
    - Bugfix: Disk-Nummer in Portliste korrigiert


  • Mod

    0.0.4.266 - Rev: 1652

    xhci.h: APICIRQ wieder auf 0 gesetzt, damit alle interrupts ankommen (detach klappt mit 3 nicht!!!). Der Interruptmechanismus via APIC/MSI liefert offenbar noch nicht zuverlässig sämtliche interrupts beim xhci-handler ab (Tests klappen am besten mit APICIRQ 12, da man dann durch Mausbewegung die fehlenden Interrupts hervorlocken kann).

    fat.c: String-Korrektur


  • Mod

    0.0.4.267 - Rev: 1653

    xhci.h: APICIRQ 3
    xhci.c: analog uhci eine poll-Funktion bezüglich Portstatus bei xhci
    devicemanager.c: xhci-poll-Funktion wird nun beim regelmäßigen Drivecheck auch bei xhci aufgerufen


  • Mod

    0.0.4.268 - Rev: 1654

    xhci: anstecken/abziehen geht nur einmal sauber (experimenteller Stand)


  • Mod

    0.0.4.269 - Rev: 1655

    xhci.h/c: Reset des Slots und der Transferringe der Endpoints des Slots beim Abziehen/Anstecken gelöst! Nun geht mehrfaches Abziehen/Anstecken am gleichen (!) Port.
    TODO: Zuordnungsproblem zwischen device und durch ENABLE_SLOT zugeteilter xHC-slotNr (Array schaffen), damit beliebig abgezogen/angesteckt werden kann.

    (Noch experimenteller Stand wegen des TODO)


  • Mod

    0.0.4.270 - Rev: 1656

    xhci.h/c: Struktur und Erfassung (in parseEvent) für die Links zwischen den Ports und den internen Device Slots des xHC implementiert.

    TODO: Bei Verweis auf den Device Context nicht die Port-Nr. verwenden, sondern den Port-Slot-Link verwenden.



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


Anmelden zum Antworten