Sourcecode Fortschritt


  • Mod

    version = "0.0.3.75 - Rev: 1276"

    irq.h/c: sprechende defines eingefügt, BIT(n) verwendet

    Bezüglich ehci/usb2.0 hier ein Ablauf (4 screenshots) in VMWare Player beim Anstecken eines usb-sticks: http://www.henkessoft.de/OS_Dev/Bilder/rev.1276_ehci_asyncScheduler.PNG

    3:/arrow wird erfolgreich geladen. Zeitbedarf beim Laden: ca. 50 sec, insgesamt 23 asyncInterrupt Timeouts beim Laden, das aber funktioniert.

    Manche Dateien werden gefunden, manche nicht (Kopie des FAT12 FloppyImages auf den usb-stick mit dd_for_windows aus dem FloppyImage):

    Gefunden werden: arrow, ftp, pqeq, readme (der readcache funktioniert beim Mehrfachladen sehr gut!)
    Nicht gefunden werden: browser, calc, hello, irc, music, piano, pong, psort, showdns, starwars, , test, ttt, udprecv, udpsend, webshell

    Schaut man bei den geladenen Dateien nach einer Gemeinsamkeit, so findet man diese: http://www.henkessoft.de/OS_Dev/Bilder/rev.1276_ehci_asyncScheduler_GeladeneDateien.PNG
    Sie starten bei cluster 1450, 1493, 1429, 1410. Der Ort der Datei im FAT12-Filesystem (1410 - 1493) bestimmt also, ob sie auf dem usb-stick gefunden wird. Von Floppy werden bei gleichem Zustand des devicemanagers, also mit zugefügtem usb-stick, alle Dateien geladen!

    Auch mit einem anderen Stick wurde das gleiche Ergebnis gefunden.

    Ausnahmen: einmal wurde test gefunden, manchmal wird garnichts gefunden.

    Ein Stick wurde dann auf FAT32 formatiert und alle Dateien im Windows Explorer von Floppy auf den Stick kopiert (keine Ahnung, wie die dort ankommen, dürfte bezüglich Reihenfolge aber bleiben). Dateien konnte geladen werden!

    Vielleicht bringt uns dieser umfangreiche Test bei der Fehlersuche weiter. Da dieser Vorgang "früher" problemlos lief, fragt sich, was geändert wurde.


  • Mod

    version = "0.0.3.76 - Rev: 1277"

    fat.c: Ausgaben umgelegt nach serial output (VMWare kann das in ein File umleiten)

    ehci-asyncScheduler deutlich beschleunigt! (asyncInt wird pos./neg. angezeigt)



  • Version 0.0.3.77:

    - EHCI: J-State und undefined state werden nicht mehr an Companion HC abgegeben (Änderung gemäß EHCI-Spezifikation 1.0, Seite 28, 56), port-Reset nach Auslesen des states
    - readCacheFlag entfernt - Readcaches nun dauerhaft aktiv
    - getPartition stabilisiert - Bugfixes in fopen von ehenkes dahingehend überarbeitet.
    - VM86-Tasks mit cli/sti statt task_switching=false/true gesichert -> VBE geht nun wieder
    - flpydsk_refreshVolumeName optimiert, weniger Zugriffe bei mehreren Diskettenlaufwerken, nur noch für Floppylaufwerke aufgerufen


  • Mod

    Bezüglich der Fehlersuche "File not found" wude festgestellt, dass bei einem usb-Stick mit FAT12 (hergestellt durch Kopieren des Floppy-Images mit dd) das rootdir falsch angesteuert wurde.

    Partitions-Start gemäß MasterBootRecord(MBR): sector 32
    Angesteuert wurde Sector 52 bei der Suche nach einem File.
    Das hätte aber 32+19 sein müssen, also 51.
    Ein Test zeigte, dass diese Annahme richtig ist.
    Die Ursache der fehlerhaften Berechnung wurde bisher noch nicht gefunden.

    Eine FATx-abhängige Stelle in fat.c:
    uint32_t cluster2sector(FAT_partition_t* volume, uint32_t cluster)
    Hier erfolgt die Berechnung des Sectors. Für die root dir von FAT12 und FAT16 ist die Formel: sector = (volume->root + cluster * volume->SecPerClus);
    Eine falsche Zahl könnte hier durch volume->root entstehen.

    Anylsiert man die Revisionen, so tritt ein/der Fehler bei dem Übergang Rev. 1178 --> 1179 (MrX) ein.


  • Mod

    version = "0.0.3.78 - Rev: 1279"

    ehci: asyncScheduler umgebaut

    FloppyImage fehlt


  • Mod

    version = "0.0.3.79 - Rev: 1280"

    fat.c: Fehler bei FAT12/16 korrigiert
    Es fehlte: fpart->FatRootDirCluster = 0; bei FAT12/16



  • Version 0.0.3.80:

    - Erkennung und Abgabe von Fullspeed-Geräten
    - Erkennung von fehlgeschlagenen Transfers ergänzt, Timeout von 5 zur Wiederholung
    - Codestil und -vereinfachungen


  • Mod

    Diese Version läuft bezüglich usb hervorragend (vor allem richtig schnell) auf VMWare, allerdings schlecht (transfers klappen nicht vernünftig) auf meinem EHCI-Test-PC (lief früher dort perfekt). 😉

    Hispeed sticks werden auf dem PC abgewiesen und nach ohci (noch nicht in usb-Transfers eingebunden) abgegeben.



  • Version 0.0.3.81:

    - USB-Abstraktion verbessert, zahlreiche EHCI-Abhängigkeiten beseitigt
    - statische disk- und usb2_Device_t-Arrays beseitigt
    - Patch von neuer_user für FTP-Client: Shortcuts umgebaut, neue Funktionen (Upload, Dateirechte), Ausgaben verbessert


  • Mod

    version = "0.0.3.82 - Rev: 1283"

    asyncScheduler: Zeitsteuerung optimiert, so dass sowohl VMWare als auch PC mit verschiedenen Sticks läuft.

    performAsyncScheduler(e, true, true, 1 + transfer->packetSize/100);
    timeout = 3 * velocity + 1;
    sleepMilliSeconds(10);

    Bei 512 Byte: ( 3 * 6 + 1 ) * 10 = 190 ms


  • Mod

    version = "0.0.3.83 - Rev: 1284"

    usb_hc.c: Implementierung für u/o/ehci vorgesehen unter Nutzung der Schnittstelle transfer->HC->type


  • Mod

    version = "0.0.3.84 - Rev: 1285"

    ohci.h/c: USB-Transfers vorbereitet

    Für Tests:
    OHCI_USB_TRANSFER aktivieren in ohci.c, line 16

    Offene Fragen/TODOs:
    Beim Anstecken eines Low-Speed-Device (einfache Maus) werden sofort alle Konsolen belegt (Grund nicht klar).

    Die Zahl der von Anfang an vorhandenen rootports bei ohci reicht nicht aus, wenn weitere ports von ehci abgegeben werden können, im Prinzip alle. Hier sollte ein separater Portmanager her, der alle usb-Ports verwaltet.

    Aber die Abstraktion von USB und HC ist gelungen! 👍


  • Mod

    version = "0.0.3.85 - Rev: 1286"

    ohci.c korrigiert


  • Mod

    version = "0.0.3.86 - Rev: 1287"

    ohci.c: Korrektur im handler (OHCI_MAX)
    uhci.h/c: analog ohci in usb eingehängt


  • Mod

    version = "0.0.3.87 - Rev: 1288"

    ohci/usb weiter ausgebaut 🙂


  • Mod

    version = "0.0.3.88 - Rev: 1289"

    ohci-usb-Transfer weiter entwickelt.
    Transaktionen/Transfer laufen offenbar. Daten sind noch nicht korrekt.

    Screenshot: http://www.henkessoft.de/OS_Dev/Bilder/rev.1289_ohci_USB_Transfer.PNG


  • Mod

    version = "0.0.3.89 - Rev: 1290"

    ohci/usb weiter entwickelt. Verbindung zwischen setup-TD und Rest fehlt noch in der TD-Queue (durch die Umstellung der TDs von vorne nach hinten ist das nun schwieriger. MrX: wie hast du dir das gedacht bei deinem Modell?). Hier wird um Ideen gebeten.

    TD->cond (condition = status) wird nun mit 15 (NOT ACCESSED) gefüllt, damit man sieht, ob der TD korrekt abgearbeitet wird (bei setup klappt es bereits).


  • Mod

    version = "0.0.3.90 - Rev: 1291"

    ohci.c: Fehler (hoffentlich) korrigiert, curOHCI ersetzt.

    Transfers laufen noch nicht.


  • Mod

    version = "0.0.3.91 - Rev: 1292"

    ohci.h/c: Fehlerkorrekturen (Ausgabe der ED -> TD queue zur Kontrolle)

    ED -> ED -> ...
    |     |
    TD    TD
    |     |    
    TD    TD
    

    Ketten sind ok (check der struct member)

    Nun muss man den OHCI noch ordentlich gemäß spec bewegen. 😃


  • Mod

    version = "0.0.3.92 - Rev: 1293"

    Fehler in ohci.c beseitigt, z.B. tailPointer und directions


Anmelden zum Antworten