Sourcecode Fortschritt



  • 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


  • Mod

    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


  • Mod

    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 )


  • Mod

    0.0.5.72 - Rev: 1738

    An der zeitschleife im periodic scheduler gedreht (experimentell)
    Für ein iTD benötigt man ca. 2-3 ms

    Mehr Fragen als Antworten z.Z.

    Bild: http://henkessoft.de/Sonstiges/webcam7_camblack.gif
    ser. Log: http://codepad.org/tGFcqod3


  • Mod

    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.


  • Mod

    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 verbessert

    Bildergebnis: 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


  • Mod

    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


  • Mod

    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.


  • Mod

    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


  • Mod

    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 chains

    Anmerkung: 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


  • Mod

    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


  • Mod

    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.


  • Mod

    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)


  • Mod

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


  • Mod

    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.


  • Mod

    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.


  • Mod

    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)


Anmelden zum Antworten