Sourcecode Fortschritt



  • Version 0.0.3.103:

    - PCNet: "Undefined error" hinter _NETWORK_DIAGNOSIS_ versteckt
    - createQTD_SETUP und createQTD_IO vereinheitlicht: Beide allokieren einen Puffer.
    - restrict zu VCcompatibility.h hinzugefügt


  • Mod

    version = "0.0.3.104 - Rev: 1305"

    ohci.c: ausgaben weiter verbessert, CLE,CLF umpositoniert, Haltestellen eingefügt für VBox Debugger


  • Mod

    version = "0.0.3.105 - Rev: 1306"

    ohci.c: buffer zusätzlich ausgegeben zur Kontrolle

    ED, TD, TD-buffer sieht alles gut aus.

    CLE als Hauptschalter

    Bei Fehler:
    - CLF (Control List Filled) auf 0
    - currentED auf 0
    - ED->HeadP Halted-Bit auf 0
    - Fehlerausgabe via condition Feld (Status)


  • Mod

    version = "0.0.3.106 - Rev: 1307"

    ohci.c: weiter optimiert (z.B. Rücksetzen des HeadPtr Halted Bit) - transfer läuft noch nicht


  • Mod

    version = "0.0.3.107 - Rev: 1308"

    ohci_ und ehci_request zu usb_request vereinigt.
    usb1.h/c gelöscht.


  • Mod

    version = "0.0.3.108 - Rev: 1309"

    ohci-Ausgaben reduziert (hinter define)

    In VBox: Device Not Responding

    http://www.ti.com/lit/ug/sprufm8/sprufm8.pdf

    The USB1.1 host controller ignores upstream traffic from downstream devices for about 3 ms after the host controller state (HCCONTROL.HCFS) changes from USB resume state to USB operational state. If any TDs cause generation of downstream packets during that time, the downstream packets are sent, but downstream device responses are ignored. Any such TDs are aborted with completion codes marked as Device Not Responding. TDs on any of the lists (periodic, control, bulk, and isochronous) can cause such an occurrence.


  • Mod

    version = "0.0.3.109 - Rev: 1310"

    ohci - Zwischenstand


  • Mod

    version = "0.0.3.110 - Rev: 1311"

    ohci.h/c: erweitert um einige Port-Funktionen analog EHCI.

    Transfer läuft aber noch nicht (Fehler: Device not responding, wie bisher)


  • Mod

    version = "0.0.3.111 - Rev: 1312"

    ohci.c: Die erste Transaktion verläuft inzwischen nach Status-Meldung erfolgreich! Nun sind wir - auch bei ohci - endlich im Thema usb angekommen. 🙂
    (ehci läuft schon lange)

    Hinweis: Wer EHCI testen will, bitte erst in os.h per define aktivieren (versehentlich noch ausgeschaltet)

    TODO: Abarbeiten der TDs analysieren unter Berücksichtigung, dass "done" TDs ausgehängt werden.


  • Mod

    version = "0.0.3.112 - Rev: 1313"

    Reihenfolge verändert/ergänzt in ohci_setupUSBDevice:

    - usbTransferDevice
    - usbTransferEnumerate
    - usbTransferDevice

    Leider schlagen irgendwo noch interrupts zu.
    Aber man sieht bei dieser Version (mit Glück), dass die In-Transaktion erfolgreich durchgeführt werden kann

    TODO: bitte helfen, den Interrupt-Fehler zu finden, damit wir wieder vernünftig testen können

    if (val & OHCI_INT_RHSC) // root hub status change
    {
      // printf("Root hub status change.");
         handledInterrupts |= OHCI_INT_RHSC;
         scheduler_insertTask(create_cthread(&ohci_portCheck, "OHCI Ports"));        
    }
    

    Hier liegt wohl ein Problem. VBox hat hier alleine schon 8 Ports.

    Weiter geht's hier:

    void ohci_portCheck()
    {
      //...
      if (o->OpRegs->HcRhPortStatus[j] & OHCI_PORT_CCS) // connected
      ohci_showPortstatus(o,j);
    

    Das Problem (Absturz VBox) beginnt hier:

    ohci_resetPort(o, j);
    

  • Mod

    version = "0.0.3.113 - Rev: 1314" (experimentelle Version)

    Verbesserte Version: Damit sieht man die ersten erfolgreichen Transaktionen (setup, in). Anschließend "freeze" (VBox muss abgeschossen werden).

    Freeze ist hier:

    o->ports[portNumber]->num = 1 + usbTransferEnumerate(&o->ports[portNumber]->port, portNumber);
    

    Korrekte Darstellung der usb-Version 01.10:

    printf("\nUSB %y.%y\t", BYTE2(usbDev->usbSpec), BYTE1(usbDev->usbSpec));
    

  • Mod

    version = "0.0.3.114 - Rev: 1315"

    ohci funktioniert! Problem ist momentan im usb-Transfer enumerate (set address)

    screenshot: http://www.henkessoft.de/OS_Dev/Bilder/rev.1315_OHCI_USB.PNG

    Endlich! 🙂

    Nun müssen wir den Freeze finden und das usb-Problem, aber das ist sicher machbar, wenn man endlich mal die übertragenen Daten sehen kann. 😃


  • Mod

    version = "0.0.3.115 - Rev: 1316"

    endlich freeze-free (delay anstelle sleep...)
    sof-check in jetziger Form gestrichen (Programm ist nicht in die while-loop eingetreten). In spec steht: "Perform SOF check" und "Time available?". Diese beiden Punkte werden bisher ignoriert.

    Probleme:
    - Bei EHCI/UHCI- oder EHCI/OHCI-Übergang "prellt" das OS, sodass schnell alle 10 Konsolen (0-9) verbraucht sind.
    - Bei OHCI klappen die IO-Transfers mit 0 byte (handshake) noch nicht (egal ob OUT oder IN)
    - OHCI und PC läuft noch nicht (freeze wegen ständiger interrupts)
    - Emulator VBox (0.4.12) auf Host Win XP bei USB völlig unzuverlässig (ehenkes)


  • Mod

    version = "0.0.3.116 - Rev: 1317"

    ohci: wieder testbar mit VBox

    if (val & OHCI_INT_RHSC) // root hub status change
    {
       // printf("Root hub status change.");
       handledInterrupts |= OHCI_INT_RHSC;
       // scheduler_insertTask(create_cthread(&ohci_portCheck, "OHCI Ports"));   
       ohci_portCheck();   
    }
    

  • Mod

    version = "0.0.3.117 - Rev: 1318"

    void ohci_portCheck(ohci_t* o)

    Problem: bei dem test-PC: dauerinterrupt root hub change bei ohci 0, port 3

    (EHCI nicht enabled, s. os.h)


  • Mod

    version = "0.0.3.118 - Rev: 1319"

    ohci.c: ohne enumeration (set address), also mit 0, läuft der ohci die control transfers durch.

    SET ADDRESS läuft anders als andere control transfers. Nummerierung wird erst nach erfolgreichem Transfer ausgeführt.


  • Mod

    version = "0.0.3.119 - Rev: 1320"

    ohci.c: issueTransfer überarbeitet, sodass man die Wartezeiten nach transaction und transfer getrennt einstellen kann.

    Der letzte TD wird momentan nicht ausgeführt, weil er der letzte ist! (einfach einen dummy handshake dahinter setzen)


  • Mod

    version = "0.0.3.120 - Rev: 1321"

    ohci.c: Durch Anhängen eines Dummy-TD in ohci_issueTransfer und check der conditions nach Ende des Transfers klappt nun auch set_address (Enumeration).

    Meilenstein: Die USB 1.1 control-Transfers (mit ohci) laufen auf VBox! 🙂 👍

    screenshot: http://www.henkessoft.de/OS_Dev/Bilder/rev.1321_OHCI_USB.PNG


  • Mod

    version = "0.0.3.121 - Rev: 1322"

    usb2_msd.c:
    curEHCI bzw. showUSBSTS(e) in diesem Modul eliminiert, um es auch für ohci- und uhci-bulk-Transfers benutzen zu können.


  • Mod

    version = "0.0.3.122 - Rev: 1323"

    ohci.c: bulk transfers laufen test-weise (tranfer/transaction system funktioniert auch dort)


Anmelden zum Antworten