Sourcecode Fortschritt
-
Test: 0.0.5.77 - Rev: 1743 usb: xhci: devmgr.elf load and execute Einbinden usb-stick nicht OK, #PF: usb_getConfigDescriptor --> ... --> xhci_waitForTransfer save screenshot -> floppy and usb-stick n/a ehci: devmgr.elf load and execute OK save screenshot -> floppy and usb-stick OK uhci (test-PC): devmgr.elf load and execute portchange OK, dev no response/stalled (kein Einbinden) save screenshot -> usb-stick usb-stick: n/a ohci (VBox): devmgr.elf load and execute usb-stick wird beim Andocken (VBox) von ohci nicht erkannt save screenshot -> usb-stick n/a ehci (VBox): devmgr.elf load and execute OK save screenshot -> floppy and usb-stick OK ehci (Vbox): webcam OK save big files OK vbe: 1 - start graphical tests VBox: #PF (eip 152h), test-PC: #PF (addr 3400, eip 9051, user mode) user: shell prüfen, neue shell erstellen OK test.elf ausführen VBox: OK (Grafik, neue Konsole geht nicht) networking: browser.elf with prettyos.de, google.de ... browser.elf geht, usability bei files, etc. unklar (verbessern!)
Untersuchungen: Das Problem bei xhci ist offensichtlich ein Timing-Problem, denn beim Einbau von Haltepunkten (zur Analyse) wurde der usb-stick sauber eingehängt.
-
0.0.5.78 - Rev: 1744
- serial.h/c: code etwas transparenter gestaltet bezüglich baudrate und divisor. baudrate auf 115200 erhöht (divisor: 1)
- serial log für periodic list mit iTD vereinfacht
-
0.0.5.79 - Rev: 1745
webcam: Weiterentwicklung der Übetragung mit ehci iTD chain auf Hardware
- Einhängen des iTD chain heads an periodic list optimiert
- Vorbereitung des Codes für Nutzung mehrerer iTD chainsAnmerkung: Die Datenübertragung auf dem test-PC läuft deutlich schneller als mit VBox. Hierdurch werden die Datenpakete stark über die Buffer der iTD gestreut (geringe Nutzlast). Idee: Nutzung mehrer iTD chains.
-
Version 0.0.5.80:
- EHCI: Korrekte Benutzung der Doorbell beim Entfernen von QHs aus der Queue
- USB-Keyboard: Caps-Lock-Unterstützung; LEDs (Out-Report) implementiert
- Video: float-YUV-Typ entfernt, YVID_t in YUV_t umbenannt, Zugriff auf uninitialisierte Variablen in showYUYV behoben (cppcheck-Fund)
- USB-MSD: Wiederhole "test unit ready" häufiger und mit Wartezeit (behebt Probleme mit xHCI)
- xHCI: Broken Free (und Folgefehler) bei SET_ADDRESS behoben
- Events: Fehlerkorrektur bei Freigabe von Event-Queues
- Paging: Fehlerkorrektur bei Einträgen in der Memory Map mit 0 Bytes oder mehr als 4 GiB
-
0.0.5.81 - Rev: 1747
webcam: ehci periodic list working with n chains with m iTD (später als fehlerhaft erkannt)
TODO: Optimize periodic list transfer setup for VBox and Hardware
-
0.0.5.82 - Rev: 1748
webcam: Fehler bei der Bestimmung von last_iTD und current_iTD in den Modulen ehci.c und ehciQhqTD.c beseitigt.
-
0.0.5.83 - Rev: 1749
webcam: weitere Korrekturen
Der test-PC leidet bei ehci ab und zu noch an "master abort" (Capabilities list und Fast Back-to-Back Transaction capable)
-
0.0.5.84 - Rev: 1750
webcam: iTD für ehci bei hardware um die 64-bit extended buffer pointer erweitert und padding von 92 auf 96 byte durchgeführt, damit das 32 byte alignment erfüllt bleibt.
Nun spielt der ehci "auf blech" (test-PC) auch ohne "master abort" mit uns.
Nun kann die Optimierung des periodic schedulers und die Adaption an die Fähigkeiten verschiedener webcams starten.
-
0.0.5.85 - Rev: 1751
webcam an periodic scheduler ehci: stop/go entfernt, code weiter optimiert.
test-PC: erfolgreiche Tests bez. ehci/periodic scheduler
Allerdings entlocken wir den webcams noch keine brauchbaren Ergebnisse.
-
0.0.5.86 - Rev: 1752
usb_video.h/c: Weiterentwicklung des Codes (z.B. probe/commit für StillImage)
Der periodic scheduler von ehci läuft auf Hardware nun zuverlässig.
-
0.0.5.87 - Rev: 1753
Darstellung von Videodaten in VBox gelingt bereits zuverlässiger, allerdings noch mit vereinzelten user mode #PF, die die Darstellung jedoch nicht vereiteln.
vidswtch.asm: GetVgaInfoBlock: mov ds, ax ergänzt
vm86.c: vm86_executeSync: Zeitverzögerungen eingefügt zur Vermeidung von #PF bei eip: 152h (user mode)
usb_video.c: usb_setupVideo: Darstellung von webcam-Daten direkt in PrettyOS (mittels vm86 und vbe)Problem bei test-PC: vbe-modes werden noch nicht erfasst (mode-Auflistung ist leer)
-
Version 0.0.5.88:
- Scheduler: Endlosschleife in scheduler_unblockEvent() behoben
- mutex_lock/unlock() mit task_switching = true/false abgesichert
- Optimierung: list_alloc_elem() und list_append_elem() implementiert, um Allokationen bei Verwendung von list_t zu reduzieren
- VBE: Nutze Standardmodi als Fallback, wenn ModeList-Pointer unbrauchbar
- fsmanager: Crash beim Entfernen unbekannter Partitionen behoben, Speicherleck behoben
- Installiere ATA nur, wenn HDDs aktiviert sind
-
Version 0.0.5.89:
- Heap: Caching der ersten freien Region war fehlerhaft implementiert, sodass es unwirksam war
- Heap: Verbesserter Log, freie Regionen angezeigt, Regionsnummern und firstFreeRegion (s.o.) angezeigt
- Heap: Grenzprüfung bei placementMalloc() mit Alignment korrigiert
- Speicherverbrauch von usb_setupVideo() durch frühzeitige Freigabe der Buffer deutlich reduziert
-
0.0.5.90 - Rev: 1756
task.h/c: Tasks erhalten einen Kommentar (analog heap region via malloc), damit man diese in der Task-Übersicht (strg+t) leichter zuordnen kann (unterstützt die didaktische Komponente von PrettyOS). Falls gegeben, wird der Konsolenname verwendet.
Beispiel:
current task: 0 -------------------------------------------------------------------------------- pid esp pd k_stack access comment thread -------------------------------------------------------------------------------- running: 0 005FFE50 00639000 -------- kernel main child-threads: 2 5 48 4 E003DE6C E0039000 E003E000 user 0:0:|PrettyOS|Shell. blocked: 2 E002978C 00639000 E0029860 kernel OHCI 1 parent task: 0 48 E0052C10 00639000 E0052DB0 kernel VBE parent task: 0 5 E002C9C0 00639000 E002CA94 kernel EHCI Ports parent task: 0 freetime: 1 E001E5B8 00639000 E001E600 kernel freetime
usb_setupVideo() funktioniert noch bestens.
-
0.0.5.91 - Rev: 1757
usb_video.c: Korrekturen durchgeführt, z.B. Power- und Error-Request
Nun klappt die Errorcode-Abfrage.
-
Versino 0.0.5.92:
- paging_freeVirtMem() und paging_allocVirtAddr() implementiert
- Diagnose-Verbesserungen:
-- Formattierung der Ausgabe bei Strg+t verbessert
-- Compilerfehler bei aktivierten _DIAGNOSIS_-Flags behoben
-- kdebug() entfernt (nutzlos)
-
0.0.5.93 - Rev: 1759
usb_video.c: webcam-code weiter optimiert.
VBox: Serieller Log: http://pastebin.com/KNSnvXcL
-
0.0.5.94 - Rev: 1760
usb_video.c: Fehler behoben, Übertragung optimiert.
-
0.0.5.95 - Rev: 1761
usb_video.c u. videoutils.c: weitere Fehler behoben
-
0.0.5.96 - Rev: 1762
usb_video.c: VideostreamError-Abfrage eingebaut
Still Image mit 160 pixel Breite: http://www.henkessoft.de/Sonstiges/webcam_schwarz_160pixel.png