Sourcecode Fortschritt


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


  • Mod

    Version 0.0.4.48 - Revision 1436
    usb-Ausgaben zur Übersicht vereinfacht. Hub-Analysen nur bei Debug-Anweisung.
    (versehentlich Version und Rev. nicht hochgezählt in ckernel.c)


  • Mod

    Version 0.0.4.49 - Revision 1437
    Sehr störende verbliebene Newline-Ausgabe entfernt, die nach Verlagerung der "important" EHCI-Statusausgaben nach Debug verblieben war und bei der usb-Erkennung und dem usb-Ladevorgang massenweise sinnlose Leerzeilen produzierte. Nun sollten die usb-Ausgaben etwas übersichtlicher sein.

    HW-Tests (2 baugleiche 4 GB Sticks, beide am root port, jeweils devmgr.elf, 278 KB, zu laden):
    FAT16: 2,1 s (132 KB/s)
    FAT32: 2,2 s (126 KB/s)

    Beim ersten Mal trat ein #PF auf (backtrace):
    eip 116E9A: usb_destroyDevice (116E90)
    eip 112C97: ehci_portCheck (112BE0)

    siehe ehci.c, Zeile 554 und Zeile 488



  • Version 0.0.4.50:

    - ECHI-Wartezeiten teilweise auf 10ms reduziert (dafür Schleifendurchläufe erhöht). Unbegründetes sleepMilliSeconds(100); am Ende von ehci_startHC entfernt
    - EHCI-Async-Scheduler nicht mehrfach initialisiert und gestartet, Speicherlecks durch mehrfache idleQH-Allokation behoben. (Behebt HW-Probleme)
    - Variablen in ehci_t initialisiert
    - Kleine Verbesserung bei list/ring: Nur vollständige Elemente einhängen (race condition)


  • Mod

    Version 0.0.4.51 - Revision 1439

    HACK am Ende von port reset in ehci.c, um vereinzelte Hardware-Probleme (Prellen zwischen ehci und companion HC) zu vermindern. Ursache noch nicht völlig klar.


  • Mod

    Version 0.0.4.52 - Revision 1440

    usb_hub.h/c: portStatusAndChange_t in header geschaffen, damit das nicht mehrfach in den Funktionen auftritt.



  • Version 0.0.4.53:

    - EHCI-Treiber bei ehci_resetPort und ehci_checkPortLineStatus aufgeräumt
    - FSManager-Schnittstelle für remove und rename verbessert; Ordnerunterstützung weiter vorbereitet
    - Trennung von Ordnern und Dateien im FAT-Treiber weiterentwickelt, weitere Abstraktion vom RootDirectory


  • Mod

    Version 0.0.4.54 - Revision 1442

    fat.c: bool FormatDirName (char* dirName, bool mode) ergänzt
    (Vorbereitung für das Erzeugen von Verzeichnissen)



  • Version 0.0.4.55:

    - Ordnererzeugung in FAT-Treiber eingefügt und funktionsfähig gemacht
    - Neue Shell-Befehle md und mkdir (synonym), legen Ordner an


  • Mod

    Version 0.0.4.56 - Revision 1444

    fat.c: createDir zeigt bei realen Sticks mit FAT32 zeitkritisches Verhalten (Fehler CE_BADCACHEREAD bzw. nicht erfolgender cache-flush). Daher wurden in createDir Warteschleifen eingefügt und werden Fehlermeldungen (error line: ...) gedruckt.

    Im aktuellen Testfall (VBox, 4GB Stick mit FAT32) wird das Directory geschrieben, aber es kommt dennoch der Fehler CE_BADCACHEREAD (Zeile 2059).

    Bitte um Suche nach der tiefer liegenden Ursache (root cause) und um die Durchführung von tests mit FAT32-usb-Sticks.



  • Version 0.0.4.57:

    - Gemeinsamkeiten zwischen FAT_file_t und FAT_folder_t in FAT_handle_t ausgelagert
    -> Viele Funktionen arbeiten mit FAT_handle_t, wodurch temporäre FAT_file_t-Instanzen verschwinden können
    - Vergessenen Debug-Code in ckernel.c entfernt



  • Version 0.0.4.58:

    - FAT weiter aufgeräumt:
    -> Unnötige Pointer beseitigt
    -> Redundanten Code entfernt
    -> Lose fHandle-Variablen durch handle->entry ersetzt
    -> Unnötiges cacheFileEntry() entfernt - Entry worde gerade erst geschrieben, alle Infos sind bereits bekannt

    Hinweis: Screenshot-Schreiben mit USB (FAT32) unter VBox mglw. nicht stabil. Neue Datei manchmal leer.


  • Mod

    Temporärer Hinweis von MrX: Probleme mit EHCI in VirtualBox kann man wie folgt umgehen:

    void ehci_addToAsyncScheduler(ehci_t* e, usb_transfer_t* transfer, uint8_t velocity)
    {
        e->USBasyncIntCount = 1;
    

    In Version 0.0.4.59 behoben.



  • Version 0.0.4.59

    - Kommando dir/ls implementiert (derzeit nur Wurzelverzeichnis des angegebenen Laufwerks)
    - VBox-Korrektur für EHCI: Async-Scheduler wartete auf ein Interrupt zuwenig (s.o.)
    - fdir-Code aus strg+f für "fdir"-Befehl genutzt (strg+f entfernt)
    - Mehrere CppCheck-Meldungen behoben


Anmelden zum Antworten