Sourcecode Fortschritt



  • Version 0.0.3.26:

    - TTT überarbeitet: Schönere und klarere Ausgabe. Spieler, der an der Reihe ist, wird angezeigt. Spieler, der beginnt, wird durch Zufall "ausgelost"
    - Kleinere Bugfixes und Überarbeitungen an UHCI, serial, Maustreiber und ISA-DMA.
    - GCC-generierte mmap-Konvertierung im BL2 verbessert. U.a. Funktionsprolog und -epilog entfernt.
    - Kleinigkeiten


  • Mod

    version = "0.0.3.27 - Rev: 1228"

    uhci.c: Handler weiter optimiert (Abfangen von gleichen fremden IRQ)

    Nun muss auf Hardware getestet werden, ob LEGSUP problemlos umgeschaltet werden kann.


  • Mod

    version = "0.0.3.28 - Rev: 1229"

    devicemanager.h/c: USB 1.1 und USB 2.0
    uhci.h/c: attach to device manager as USB 1.1
    ehic.c: USB 2.0

    strg+d provides correct results

    TODO: enable/reset port does not yet work


  • Mod

    version = "0.0.3.29 - Rev: 1230

    in ckernel.c eine Ver./Rev. zu hoch

    uhci.c: reset analog http://www.lvr.com/forum/index.php?topic=19.0


  • Mod

    version = "0.0.3.30 - Rev: 1231

    uhci.c: weiter testweise ausgebaut, läuft auf Test-PC und VMware Player ohne HChalted durch (kein Freeze!), in qemu noch ein unverständliches HChalted.

    Screenshot auf VMWare Player: http://www.henkessoft.de/OS_Dev/Bilder/uhci.PNG
    LEGSUP im Beispiel probeweise auf 0x0000 eingestellt (anstelle 0x2000).

    Portstatus nach enable: 0x0085 = 10000101
    bit0: Current Connect Status ReadOnly. 1=Device is present on port. 0=No device is present.
    bit2: Port Enabled/Disabled R/W. 1=Enable. 0=Disable. Ports can be enabled by host software only. <--- das haben wir gerade durchgeführt.
    bit7: Reserved ReadOnly. Always read as 1.

    Nach diesem Ergebis empfehle ich uhci-Tests auf VMWarePlayer (war bei ehci ebenfalls der entscheidende Helfer) bzw. Hardware.

    rtl8139.c: Filter gegen falsche interrupts eingebaut (in pcnet funktioniert analoge Vorgehensweise nicht?! MrX: bitte checken) - Auf Test-PC gibt es mit Netzwerk noch Probleme (#PF), aber nun rebootet er nicht mehr sofort, wenn Netzwerk verbunden ist, damit kann man das Problem einkreisen.


  • Mod

    version = "0.0.3.31 - Rev: 1232"

    uhci.c: Auswertung portstatus weiter entwickelt, LEGSUP auf 0x0000 gestellt


  • Mod

    version = "0.0.3.32 - Rev: 1233"

    uhci.c: Ausgaben verbessert



  • Version 0.0.3.33:

    - Zusammenspiel von IRQs, PCI, Netzwerkadaptern und HCIs verbessert
    - Übler Bug im UHCI-Handler beseitigt - Dieser ist nun nichtmehr tot
    - IRQ-Filter im Netzwerkcode verbessert
    - todolist aus UHCI entfernt


  • Mod

    version = "0.0.3.34 - Rev: 1235"

    uhci.c: showPortState(uhci_t* u, uint8_t j)


  • Mod

    version = "0.0.3.35 - Rev: 1236"

    uhci.h/c: Fehler beseitigt, code umgestellt

    qemu: läuft (invalid interrupts)
    vmware: halted
    test-pc 1: halted / process error
    test-pc 2: läuft

    // set PIRQ or zero (???)
        pci_config_write_word(bus, dev, func, UHCI_PCI_LEGACY_SUPPORT, 0 /*UHCI_PCI_LEGACY_SUPPORT_PIRQ*/);
    

    Mit 0 läuft es auf VMWare besser, richtig ist aber UHCI_PCI_LEGACY_SUPPORT_PIRQ.

    USB PIRQ Enable (USBPIRQDEN) R/W. 1 (default) = USB interrupt is routed to PIRQD. 0 = USB interrupt does not route to PIRQD. This bit prevents the USB controller from generating an interrupt. Note that it will probably be configured to generate an SMI using bit 4 of this register. Default to 1 for compatibility with older USB software.


  • Mod

    version = "0.0.3.36 - Rev: 1237"

    uhci.c: 0x2000 in LEGSUP und nur einen QH der horizontal/vertikal das T-Bit (inaktiv) geschaltet hat, keine TDs.

    Test-PC 1 (1400 MHz): erkennt angesteckte usb-sticks (high-speed) als fullspeed:

    - fullspeed device
    - device changed (CSC)
    - device attached (CS)
    - line state: D+

    screenshot: http://www.henkessoft.de/OS_Dev/Bilder/rev.1236_uhci.PNG

    Das ist eine Basis. 🙂


  • Mod

    version = "0.0.3.37 - Rev: 1238"

    uhci.c: invalid interrupts gefiltert


  • Mod

    version = "0.0.3.38 - Rev: 1239"

    uhci.h/c: Fehler behoben bezüglich BIT_T und BIT_Q, Ausgaben verbessert (z.B. RS bit zur Sicherheit)

    Tests: qemu und Test-PC 1 laufen gut, vmware und Test-PC 2 halted und process error

    TODO: Fehlerstelle finden durch debuggen mittels vmware

    Wichtig: die Interrupts kommen manchmal doppelt/dreifach für den gleichen UHCI! 🙄 EDIT: lag am mehrfachen Setzen des RS-Bits, also völlig korrekt! 😉


  • Mod

    version = "0.0.3.39 - Rev: 1240"

    uhci.c:
    - Fehler korrigiert:

    u->framelistAddrVirt->frPtr[i] = paging_getPhysAddr(qhIn) | BIT_QH;
    

    ( Vorher & anstelle | )

    Nun laufen alle! 🙂 MrX: bitte Hardware (alle 3 PCs) testen.

    Damit sind nur Test-PC 2 und VMWare als "echte Tester" geeignet. 😉
    VMWare war auch bereits bei EHCI die ideale Emulation.


  • Mod

    version = "0.0.3.40 - Rev: 1241"

    uhci.c: experimentelle Variante für eigene qh/td-Versuche
    siehe uhci.c, zeile 14, #define UHCI_SCENARIO // qh/td experiments

    wenn's stört: uhci.c, zeile 14, #define UHCI_SCENARIO wegnehmen (qemu bockt mit HC Process Error)



  • Version 0.0.3.41:

    - IO/MMIO-Bit im PCI-Commandregister bei allen Gerätetreibern korrekt gesetzt
    - PCNet-Handler gefixt, Interrupt-Filter geht nun
    - Codestil (im Zusammenhang mit PCI)
    - Optimierungen am Bootloader


  • Mod

    version = "0.0.3.42 - Rev: 1243"

    ohci.h/c: erster Rahmen analog uhci.h/c eingefügt (ohci verwendet MMIO)



  • Version 0.0.3.43:

    - UHCI/OHCI-Funktionsnamen aufgeräumt
    - Portscan-Mechanismus im Devicemanager, implementiert für UHCI
    - Ausgabe verbessert


  • Mod

    version = "0.0.3.44 - Rev: 1245"

    OHCI Operational Registers implementiert (Open Host Controller Interface Specification for USB 1.0a, Kap. 7; S. 108)
    Als Test fragen wir in der PCI-Device-List die HCI Revision und die Number Downstream Ports ab. Klappt alles bestens. 🙂

    Wer keinen PC mit OHCI hat, verwendet VBox.



  • qemu kann übrigens auch OHCI, -device pci-ohci ist die richtige Option dafür.


Anmelden zum Antworten