Sourcecode Fortschritt



  • Version 0.0.4.20:

    - Unterstützung für C++-Userprogramme in user/other_userprogs
    - Neues Userprogramm: Editor (C++). Kann bislang nur Dateien anzeigen (absoluten Pfad als erstes Kommandozeilenargument übergeben)
    - -ffreestanding sollte nicht für Userprogramme verwendet werden (Ermöglicht C++-Userprogramme mit Clang)
    - fgetc() sollte EOF zurückgeben, falls das Dateiende erreicht wurde
    - PRINT+h (Screenshot auf Harddisk) dokumentiert
    - Hacks in der Umgebung von saveScreenshot etwas verringert



  • Version 0.0.4.21:

    - Performance-Verbesserung für Textmodus: VGA-Cursor deutlich seltener verschoben (Behebt Einfrieren in Hyper-V)
    - Hinweise zu volatile bei inline-Assembler aus dem GCC-Manual befolgt - entfernt, wo unnötig



  • Version 0.0.4.22:

    - ATA-Treiber läuft nun unter echter Hardware (VORSICHT bei HDDs, die wichtige Dateien enthalten!); Diverse Probleme behoben.
    - Bugfix in printf: Größenangaben > 4 GiB möglich
    - Fehlerausgaben im Maustreiber vereinheitlicht
    - test-results.txt aktualisiert
    - sysenter-Handler etwas optimiert
    - refreshUserScreen aktualisiert nur noch den User-Bereich (Scrollen kopiert weniger Zeichen im Textmodus)



  • Version 0.0.4.23:

    - Falsche Bootdevice-Angaben im Bootloader Stage 1 und 2 korrigiert (Erhöhte Erfolgswahrscheinlichkeit, wenn man von USB booten will)
    - timeout-Funktion von scheduler_blockCurrentTask korrigiert
    - Nullterminierung in vsnprintf/snprintf sichergestellt
    - C99-Funktionen in C-Standardbibliothek ergänzt
    - IRC-Client erweitert: Kommandos können gesendet werden (mit / beginnen, oder strg+c) (JonasOSDever)


  • Mod

    Die neue Revision baut bei mir nicht (letzten Zeilen der log-Datei):

    ..\user_tools\prettylib.a(userlib.o) : In function vsnprintf': userlib.c: (.text.vsnprintf+0x0): multiple definition ofvsnprintf'
    ..\stdlibc\stdlibc.a(stdio.o):stdio.c : (.text.vsnprintf+0x0): first defined here
    ..\user_tools\prettylib.a(userlib.o): In function snprintf': userlib.c: (.text.snprintf+0x0): multiple definition ofsnprintf'
    ..\stdlibc\stdlibc.a(stdio.o):stdio.c: (.text.snprintf+0x0): first defined here
    mingw32-make[1]: *** [browser.ELF] Error 1
    mingw32-make: *** [other_userprogs] Error 2



  • woran das liegt, kann ich gerade nicht erkennen.

    normalerweise gibt es solche fehlermeldungen, wenn man funktionen oder prototypen doppelt schreibt.

    was mir aber auffällt: in "userlib.h" fehlt der prototyp für vsnprintf und snprintf.



  • Ich habe wohl vergessen, die Implementation in der userlib zu löschen. Danke für den Hinweis.



  • Version 0.0.4.23 - Revision 1409:

    - Compilerfehler behoben - doppelte vsnprintf/snprintf-Implementation gelöscht



  • Version 0.0.4.24:

    - Schreibschutz im Paging aktiviert - Kernel-Code gegen Überschreiben geschützt
    - Bootloader optimiert: BL2 übernimmt Daten von BL1, anstatt sie selbst noch einmal zu speichern
    - Fehlendes Register-Clobbering ergänzt (führte zu Problemen, wenn mit O3 kompiliert wird)
    - Größere Objekte auf den Heap gelegt (Verkleinert den Kernel um mehrere KB)
    - Zugriff auf uninitialisierte Variable entfernt (cppcheck-Fund)
    - Einheitliche NULL-Definition



  • Mr X schrieb:

    - Einheitliche NULL-Definition

    🙂
    Anscheinend hat man meine Ratschläge doch nich ein bisschen ernst genommen.



  • Version 0.0.4.25:

    - Bessere Trennung von usb und usb-MSD
    - Neue Funktion strdup im Kernel - Ersetzt mehrere malloc+strcpy durch effizienteres memcpy
    - Const-correctness erhöht
    - Lizenztext in stdlibc eingebaut


  • Mod

    Version: 0.0.4.26 - rev. 1412:
    usb.c: Prüfen auf usb-Hub und erste Verhinderung sinnloser Maßnahmen am "Device".

    bool hub = IsUsbHub(device)
    

    Edit: Fehler wurde in rev. 1413 korrigiert.


  • Mod

    Version: 0.0.4.27 - rev. 1413:
    Wichtige Korrektur: reset von success ergänzt, damit die Idee von rev. 1412 wirklich funktioniert.

    Weitere erste Informationen zur korrekten Behandlung von Hubs:
    http://www.lowlevel.eu/wiki/USB#Enumeration_beim_Hochfahren
    http://www.beyondlogic.org/usbnutshell/usb4.shtml#Interrupt
    http://en.wikipedia.org/wiki/USB_hub#Protocol
    http://www.beyondlogic.org/usbnutshell/usb5.shtml
    http://www.usb.org/developers/defined_class



  • Version 0.0.4.28:

    - Speicherlecks in GUI und USB beseitigt
    - strcpy durch memcpy oder strdup ersetzt, wo möglich
    - USB/*HCI-Abstraktion weiter verbessert
    - deleteNode in IPC implementiert
    - Kleinere Verbesserungen im Netzwerkbereich


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


Anmelden zum Antworten