Sourcecode Fortschritt


  • Mod

    0.0.5.21 - Rev: 1687

    In os.h neu geschaffen: _USB_FUNCTION_DIAGNOSIS_ // Show USB Functions

    Damit lassen sich usb-Abläufe besser verfolgen.



  • Version 0.0.5.22:

    - UHCI/OHCI/EHCI: Von USB-2.0-Spezifikation geforderte 100ms-Wartezeit zwischen conncect detect und port reset eingebaut
    - USB: Ablauf bei getDeviceDescriptor verbessert
    - xHCI: Aus unerfindlichen Gründen nötiges waitForKeyStroke wieder eingebaut
    - Tools: Bibiliotheksdatei für CppCheck hinzugefügt



  • Version 0.0.5.23:

    - Makro für einfache Timeout-Warteschleifen implementiert und an diversen Stellen eingesetzt (Vorschlag von ehenkes)
    - Mutex: Assertion, wenn mutex_unlock() auf geöffnetes mutex ausgeführt wird
    - PCI: Zugriffe auf Konfigurations-Ports mit mutex gesichert
    - Devicemanager: Zugriffe auf Port-/Disklisten mit mutex gesichert
    - IRQ: Registrierung eines zweiten Handlers mit cli/sti geschützt
    - Bei ASSERTION_FAILURE wird nun ein Stacktrace ausgegeben



  • Version 0.0.5.24:

    - Heap: malloc kann Speicher innerhalb einer PAGE anfordern (HEAP_WITHIN_PAGE)
    - Sysenter: Handler korrigiert (Funktioniert noch immer nicht stabil)
    - Debug-Ausgaben z.T. neu sortiert
    - serial_log() ersetzt \n automatisch durch \r\n
    - printfe() implementiert: Setzt textColor(ERROR), druckt Fehlermeldung, setzt Farbe zurück
    - Einige Allokationen bei "verschachtelten" Speicherbereichen oder Buffer-Arrays eingespart


  • Mod

    0.0.5.25 - Rev: 1691

    Abziehen eines Hubs an einem Root port wird nun behandelt (Port-/Diskliste aktualisiert).

    Versuche: Bis zu zwei Hubs in Linie an einem Highspeed-Rootport am test-PC.

    TODOs:
    - Ports-Size wächst dabei weiter, betroffener port wird auf 0 gesetzt. Hierdurch entstehen Lücken in der Nummerierung.
    - otherPorts behandeln (Hinweis MrX), ist diese Liste überhaupt notwendig?
    - Attach/Detach an einem Hub (nicht root hub!) wird noch nicht erkannt, kein Interrupt.

    Anmerkung:
    Bisher müssen Devices bereits beim Booten am Hub (nicht root hub!) angesteckt werden, um erfasst zu werden. Hier fehlt ein "Watchdog system" für diese Hubs.

    Hinweis MrX: Interrupt EP des Hubs beachten (eleganter als watchdog?)


  • Mod

    0.0.5.26 - Rev: 1692

    Behandlung von Hubs und Geräten an Hubs weiter verbessert. Watchdog system implementiert.

    Attach/Detach an einem Hub (nicht root hub!) wird inzwischen erkannt. Bisher getestet auf test-PC an einem Highspeed-Port mit ehci.

    *TODOs:
    - Ports-Size wächst dabei weiter, betroffener port wird auf 0 gesetzt. Hierdurch entstehen Lücken in der Nummerierung.
    - otherPorts behandeln (Hinweis MrX), ist diese Liste überhaupt notwendig?
    - bei zwei Hubs in Linie gibt es noch Probleme, wenn beide gleichzeitig abgezogen werden (Zeit-/Ablaufproblem).
    *

    list_show implementiert.


  • Mod

    0.0.5.27 - Rev: 1693

    Verhalten beim Aufbau/Abbau von Hub-/Deviceketten weiter stabilisiert. Hub-Watchdog-System überwacht An-/Abstecken.

    Probleme gibt es noch beim Abziehen des Hubs am Roothub bei Roothub <- Hub <- Hub <- Devices (kann aber auch am betreffenden Hub liegen).


  • Mod

    0.0.5.28 - Rev: 1694

    usb_hub.h/c: weiter stabilisiert (zusammen mit MrX)

    Versuche mit test-PC am Highspeed-Port mit ehci verlaufen weitgehend positiv, d.h. der prinzipielle Ablauf ist stimmig. Am xhci-Port klappt der Setup des Device am Hub nicht.


  • Mod

    0.0.5.29 - Rev: 1695

    usb_hub.h/c: #define für Konstanten eingeführt
    siehe usb2 spec Table 11-15, 11-16, 11-17


  • Mod

    0.0.5.30 - Rev: 1696

    ehci: structs/functions for periodic list (for interrupt transfers and isochronous transfers) started


  • Mod

    0.0.5.31 - Rev: 1697

    Interrupt Transfers versuchsweise am Hub in ehci gestartet (auskommentiert)

    Anmerkung: ///#define _UHCI_ENABLE_ in os.h, weil es störte (Kreuzempfindlichkeit
    ^^).

    /// TEST
    // usb_InterruptTransfer(hub->device, hub->endpointInterruptHUB);
    ///TEST
    befindet sich in usb_hub.c, Zeile 130.



  • Version 0.0.5.32:

    - USB: Interrupt-Code aufgeräumt; Periodic list initialisiert
    - Cleanup beim abziehen von Hubs verbessert



  • Version 0.0.5.33:

    ----- Experimentelle Version, USB derzeit instabil -----

    - USB: Control-Transfer-Typen in Funktionen usb_controlIn(), usb_controlOut() und usb_controlSet() zusammengeführt
    - USB-HC: Trennung von rootPorts und otherPorts aufgehoben, Initialisierung von hc_port_t in usb_hc.c zusammengefasst
    - htons()/ntohs() in Inline-Assembler implementiert (xhcg)
    - Bugfix: Laden von Dateien funktionierte nicht zuverlässig
    - Bugfix: Speicherzugriffsfehler in usb_getHubStatus behoben
    - Bugfix: Einrückungen bei strg+d (Portliste) korrigiert


  • Mod

    0.0.5.34 - Rev: 1700

    In setupHub wurde die Hilfsfunktion usb_isHubPortConnected verwendet, sodass nun angesteckte Devices korrekt einem setupDevice zugeführt werden.

    usb_hubWatchdog (usb_hub.c) wurde in ckernel.c auskommentiert, da diese Funktion noch nicht wie gewünscht arbeitet. TODO: korrigieren oder ergänzen/ersetzen durch interrupt-Transfer


  • Mod

    0.0.5.35 - Rev: 1701

    - Analytische Funktion usb_showHubPortStatus geschaffen, damit wurde der versteckte Fehler lokalisiert!
    - Fehler in usb_getPortStatus(...) beseitigt (versehentlich Zeiger auf Zeiger, ein Klassiker bei void* buffer)
    - Zeit im Einzeldurchlauf bei ehci_addToPeriodicScheduler von 10 auf 30 ms erhöht. Damit läuft der interruptTransfer (zur Zeit nur Demonstration, noch keine Verwendung des Resultats) sicherer
    - hubWatchdog auf jede zweite Sekunde eingestellt

    TODO: Weitere Bemühungen zur Stabilisierung (sicherer Ablauf, Vermeidung von #PF, reboots und usb errors, evtl. Einsatz des One-Byte-Ergebnisses des Interrupt-Transfers).

    Danke an MrX für die Vereinfachung des ports-Handlings (funktioniert gut)


  • Mod

    0.0.5.36 - Rev: 1702

    Neu eingeführt: usb video class (usb_video.h/c)


  • Mod

    0.0.5.37 - Rev: 1703

    usb_video.h/c weiter ausgebaut, Auslesen des configuration-descriptors bez.Video class details erweitert

    Bsp. webcam: http://codepad.org/dxW5cYMX


  • Mod

    0.0.5.38 - Rev: 1704

    Config Descriptor der Webcam Chicony Corp. QEye 2.0M pixel kann mit dieser Experimentalversion bezüglich der Video Class vollständig analysiert werden.

    Auf eine Zuordnung wurde noch verzichtet, da für jedes Interface ein usb_vid_t angelegt wird, was noch nicht allzu sinnvoll erscheint. So hat diese webcam alleine sieben interfaces (und damit usb_vid_t) für endpoints mit verschiedenen max packet sizes: 128, 512, 1024, 2816, 3072, 4992, 5120

    Die Architektur muss die operativen Abläufe unterstützen, und video/audio Daten müssen außerhalb usb.h/c abgelegt/verarbeitet werden.


  • Mod

    0.0.5.39 - Rev: 1705

    usb.h/c:

    void usb_setInterface(usb_device_t* device, uint8_t alternateInterface, uint16_t interfaceID)
    uint8_t usb_getInterface(usb_device_t* device, uint16_t interfaceID)
    

    Damit kann man im Rahmen des usb-Bandbreitenmanagements beim Video Streaming die passende Datenübertragungsgröße auswählen (alternative Interfaces mit max packet sizes: 128, 512, 1024, 2816, 3072, 4992, 5120).

    usb_video.h/c:

    void usb_vidshowUncompressedFormatDescriptor(usb_vidUncompressedFormatDesc_t* descriptor)
    

  • Mod

    0.0.5.40 - Rev: 1706

    usb_video.h/c: SelectorControlRequests vorbereitet: Parameterblock, ProbeControl, CommitControl

    TODO: Ausführen/Testen der Abfolge:
    probe control (SET_CUR)
    probe control (GET_CUR)
    commit control (SET_CUR)
    commit control (GET_CUR)
    setInterface(operatives alternatives Interface)
    ==> Video Streaming


Anmelden zum Antworten