Sourcecode Fortschritt
-
0.0.5.67 - Rev: 1733
Fehler im periodic scheduler behoben (last iTD war eins zu hoch, damit wurde das active bit falsch bestimmt)
Als experimentelle Basis für die Videodatenerfassung erscheint diese Version nun als Ausgangspunkt geeignet.
Bsp. serial log: http://codepad.org/O2eChaab
-
0.0.5.68 - Rev: 1734
Diese Version bereinigt die von Nullen gereinigte Version nun auch um die 12-Byte-Payload-Header. Man erhält vier YUYV-Files im 4:2:2-Format: Raw (alle Transfers, auch die leeren), Cleaned (ohne Nullen, im Viererpack gelöscht, noch mit Header für Analyse), videodat.yuv (ohne Header) und selektiv die Still-Image-Daten (mit STI bit, noch mit Headern).
-
Version 0.0.5.69:
- USB: *_issueTransfer in drei Funktionen aufgeteilt: *_scheduleTransfer, *_waitForTransfer und *_destructTransfer
- USB: Sinnvollen Einsatz von Interrupt-Transfers vorbereitet
- Paging: Neuimplementation weiter vorbereitet
- editor.cpp: Unterstützung von hexadezimaler Ausgabe
- saveYUYV() nach usb_video.c verschoben
- devicemanager.c: Sinnlose sleeps entfernt
-
0.0.5.70 - Rev: 1736
webcam:
- Interlaced/Progressive wird nun abgefragt (beides wurde im Originalzustand bisher gesehen) und wie gewünscht (z.Z. Progressive) gesetzt
-
0.0.5.71 - Rev: 1737
- Clock frequency wird jetzt korrekt ausgelesen/gespeichert aus dem VC header (typisch: 30 MHz oder 48 MHz, diese bezieht sich auf das Delta der Uhrzeitstempel in den Payload Headern )
-
0.0.5.72 - Rev: 1738
An der zeitschleife im periodic scheduler gedreht (experimentell)
Für ein iTD benötigt man ca. 2-3 msMehr Fragen als Antworten z.Z.
Bild: http://henkessoft.de/Sonstiges/webcam7_camblack.gif
ser. Log: http://codepad.org/tGFcqod3
-
0.0.5.73 - Rev: 1739
IOC auf den letzten iTD->tsc der iTD-Kette gelegt und damit aus der Warteschleife beim Periodic Scheduler gesprungen.
-
0.0.5.74 - Rev: 1740
webcam-Datenerfassung:
- isochronous Transfer im usb-Bereich weiter korrigiert
- aus clamped-length system heraus genommen
- Kopieren nur bei IN-Transaction
- ser log bei der webcam weiter verbessertBildergebnis: nach wie vor "zerstückelt"
-
Version 0.0.5.75:
- USB: usb_hid_t, usb_msd_t und usb_video_t in usb_interface_t::data (statt usb_device_t::data) gespeichert
- USB: Callback-Mechanismus für Interrupt-Transfers implementiert
- USB-HID: Maustreiber; Anzeige der Rohdaten von der Tastatur
- OHCI: Periodic-List aktiviert, Frequenz von 4ms für Interrupt-Transfers
-
0.0.5.76 - Rev: 1742
Zwischenstand der Fehlerbehebung bei usb auf Hardware:
Reparatur der Fehler, die sich bei dem usb-Umbau (rev. 1698 -> 1699) einschlichen, sowie von Schwächen in xhci. Diese wirkten sich ab rev. 1698 auf Hardware im usb-Bereich aus.
- IN/OUT-Verwechslung behoben in usb_controlSet (korrekt ist IN)
- xhci.c: zur Portbestimmung wird dort notgedrungen uint8_t portNr = (uint8_t)(size_t)((hc_port_t)transfer->device->port->data)->data;* verwendet. Diese Information wurde nun in usb_hc.c in hc_setupUSBDevice mittels port->data = (void)(uintptr_t)(portNumber+1);* übergeben. Damit gelingt die Kommunikation zwischen usb und xhci.
- xhci.c: in xhci_waitForTransfer muss bei SET_ADDRESS ebenfalls sofort ausgestiegen werden. Nun erledigt.TODO bei xhci (bekannte Baustelle): Kritisch ist noch die Verwendung von Hub-Ports (usb_hc.c, zeile 310).
TODO: vbe steigt mit #PF (verschiedene Varianten) aus (test-PC und VBox) (bekannte Baustelle)
Mit dieser Version können nun wieder ehci- u. xhci-Ports mit usb-Sticks verwendet werden.
-
Version 0.0.5.77:
- USB-Tastaturtreiber implementiert
- USB: Auslesen des Config Descriptors in zwei Schritten (Anfordern von 1024 Bytes scheitert bei UHCI)
- USB: Ausgaben gekürzt und verbessert
- Code in array_resize_ vereinfacht
-
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.