Sourcecode Fortschritt


  • Mod

    Rev. 253:

    Zwischenschritt zum Test von delay(...µs) anstelle sleepMilliSeconds(...ms).
    Hat irgendwo noch eine Loop zuviel in ehci.c 😃


  • Mod

    Rev. 254:

    in usb2.c waren auch noch sleepMilliSeconds(...), die im INT geblockt haben.
    Zwar immer noch nicht rund, aber jetzt stimmt die Basis zum Experimentieren, zumindest halbwegs.


  • Mod

    Rev. 255:
    Zwischenlösung.
    Hauptproblem: Host System Error bei Aktivieren der asychronen Liste, der bisher nicht sicher überwunden werden kann.



  • Erhard Henkes schrieb:

    Zwar immer noch nicht rund, aber jetzt stimmt die Basis zum Experimentieren, zumindest halbwegs.

    Sorry dass ich mich nochmal einmische.
    Aber vor einigen Tagen hat jemand ein Entwicklungskit für USB empfohlen, ich glaube mit einem ARM-Prozessor. Ich vermute, dass ihr es mit sowas einfacher hättet. Wenn nicht, betrachtet dieses Posting bitte als hinfällig. 😉


  • Mod

    Rev. 256:

    Eine Version, in der jede Funktion bei EHCI und USB in der Abfolge angezeigt und mit 2 sec Pausen (delay 2000000) versehen wird, um das Debuggen zu erleichtern.

    Diese Version läuft OHNE "Host System Error" auf meinem Entwicklungs-PC hoch!

    Tobiking und Cuervo et. al.:
    Bitte testen! Bin gespannt. Tobiking hat leider immer noch unerklärlichen Host System Error.

    Wenn der Fehler auch bei euch verschwindet oder die Ursache gefunden wird, müssen wir gemeinsam heraus finden, was der wesentliche Punkt ist, um den Host System Error sicher zu vermeiden.

    @Z: das Problem liegt eher im Bereich EHCI, evtl. sogar PCI. USB liegt im Wesentlichen noch vor uns. Wir quälen uns mit EHCI, um möglichst viele Mitstreiter mitzunehmen, aber wir sind auf dem richtigen Weg, auch wenn er etwas serpentinenreich ist.


  • Mod

    Rev. 258: (Rev. 257 fehlerhaft)

    pciDev_t pciDev_Array[PCIARRAYSIZE];

    DeactivateLegacySupport(uint32_t num) mit Debug-Prints bereichert. Offenbar Problem beim "Wait for BIOS-Semaphore being not set". EHCI muss dem Pre-OS (BIOS) entrissen werden! 😉
    Wenn sowohl BIOS als OS dern HC beherrschen dürfen, muss es zwangsläufig krachen!


  • Mod

    Rev. 259:

    pci_write_byte-Fkt. korrigiert (Danke an XanClic 👍 )

    BIOS ---> OS geht jetzt bei EHCI ext. cap. 🙂

    Leider immer noch HostSystemError nach dem Einschalten der AsyncList bei meinem PC mit Ext.Cap.


  • Mod

    Rev. 260:

    usb2.c: ohne "doorbell" läuft es besser

    Interrupt on Async Advance Doorbell R/W. This bit is used as a doorbell by software to tell the host controller to issue an interrupt the next time it advances asynchronous schedule. Software must write a 1 to this bit to ring the doorbell. When the host controller has evicted all appropriate cached schedule state, it sets the Interrupt on Async Advance status bit in the USBSTS register. If the Interrupt on Async Advance Enable bit in the USBINTR register is a one then the host controller will assert an interrupt at the next interrupt threshold. See Section 4.8.2 for operational details. The host controller sets this bit to a zero after it has set the Interrupt on Async Advance status bit in the USBSTS register to a one. Software should not write a one to this bit when the asynchronous schedule is disabled. Doing so will yield undefined results.


  • Mod

    Rev. 261:

    ehci.c: Fehler in DeactivateLegacySupport korrigiert


  • Mod

    Rev. 262:

    nur kleine Veränderungen

    Der "Host System Error", der bei einigen Systemen noch kommt, kann wie folgt unterdrückt werden:

    in ehci.c, Funktion void createQH(void address, void* firstQTD, uint32_t device)*

    // uint32_t physNext = paging_get_phys_addr(kernel_pd, firstQTD);
    	// head->qtd.next = physNext;
    	/// TEST
    	head->qtd.next = 0x1;
    

    Damit sind die QTD vom QH entkoppelt. Was das bedeutet, ist bisher unklar.


  • Mod

    Rev. 263:

    ehci.c: QTD kann nun auch NULL anstelle firstQTD annehmen, damit man QH ohne QTD erzeugen kann.


  • Mod

    Rev. 264:

    ehci.c: Fehler in DeactivateLegacySupport behoben

    jetzt: if(failed){/* manueller Versuch */} <--- könnte das Problem BIOS=1 && OS=1 bei störrischem BIOS lösen. Macht es aber offensichtlich nicht (Test bei Tobiking).



  • Revision 265:

    - Hello-Programm auf 0.5 aktualisiert (kleiner Zeilenfehler behoben)
    - makefile: clear-target ergänzt, clear.bat beigelegt
    - Shell wird jetzt mit der start.asm der Usertools kompiliert
    - HELLO.ELF statt hello.elf



  • Revision 266:

    - printf -> kprintf;
    - printformat -> printf (Deswegen sind so viele Dateien geändert)
    - Das neue printf und i2hex in userlib übernommen; my_stdarg.h mit userlib mitgeliefert
    - typedefs aus os.h in userlib übernommen
    - TTT auf Version 5.1 aktualisiert (Man kann nicht mehr gewinnen und zugleich Remis spielen, mglw. Verbesserung der Lauffähigkeit auf manchen PCs)


  • Mod

    Revision 267:

    ehci.c: Vereinfachungen in der Ausgabe zur besseren Übersicht

    interrupts.asm:
    DO_IDT_ENTRY SYSCALL_NUMBER, 0x0008, 0xEE00
    DO_IDT_ENTRY CONTEXT_SWITCH_CALL, 0x0008, 0x8E00 <---

    syscall.c, video.c: nur Formatierung/Kommentare

    User-Programm: TTT (hello.elf) Zahleneingabe wird abgebrochen
    (Prompt (=Totalabbruch) bzw. unerwartete Fehlermeldung, dass Zahl bereits verwendet wird).

    Irgendwas bei der Ausführung der User-Programme ist "kaputt".
    DO_IDT_ENTRY CONTEXT_SWITCH_CALL, 0x0008, 0xEE00 hilft auch nichts, also OK.



  • Ja, irgendwas ist da kaputt. Das müssen wir alles nochmal durchgehen, u.a. video.c, wie ehenkes im IRC schon sagte.

    Ich hab übrigens mal die printf etwas erweitert&korrigiert, gibts bald...


  • Mod

    Rev. 268:

    ehci.c und usb.c: test-transfer mit 2 QH und 3 QTD

    Ablauf des USB-Transfers: http://www.henkessoft.de/OS_Dev/Bilder/rev268_asyncList.PNG



  • Rev. 269:

    - printf: Ausgabe korrigiert, Funktion vereinfacht, Buffer verkleinert
    - os.h/descriptor_tables.h: extern vor Funktionsdeklarationen zwecks Vereinheitlichung entfernt
    - min und max von util.c nach math.c verlegt
    - Klammern bei via Präprozessor definierten Fkts. ergänzt
    - clear.bat: pause entfernt (Relikt vom testen der Funktionsfähigkeit)


  • Mod

    Rev. 270:

    file.c: (floppy disk motor off)

    printf("file not found in root directory\n");
    flpydsk_control_motor(false);
    

  • Mod

    Rev. 271:

    ehci.c:
    Umsortierung entsprechend:
    Intel® 82801EB (ICH5), 82801ER (ICH5R), and 82801DB (ICH4) Enhanced Host Controller Interface (EHCI)
    Programmer’s Reference Manual (PRM) April 2003
    Entsprechende Kommentare eingefügt


Anmelden zum Antworten