Sourcecode Fortschritt
-
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.
-
version = "0.0.3.78 - Rev: 1279"
ehci: asyncScheduler umgebaut
FloppyImage fehlt
-
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
-
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
-
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
-
version = "0.0.3.83 - Rev: 1284"
usb_hc.c: Implementierung für u/o/ehci vorgesehen unter Nutzung der Schnittstelle transfer->HC->type
-
version = "0.0.3.84 - Rev: 1285"
ohci.h/c: USB-Transfers vorbereitet
Für Tests:
OHCI_USB_TRANSFER aktivieren in ohci.c, line 16Offene 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!
-
version = "0.0.3.85 - Rev: 1286"
ohci.c korrigiert
-
version = "0.0.3.86 - Rev: 1287"
ohci.c: Korrektur im handler (OHCI_MAX)
uhci.h/c: analog ohci in usb eingehängt
-
version = "0.0.3.87 - Rev: 1288"
ohci/usb weiter ausgebaut
-
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
-
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).
-
version = "0.0.3.90 - Rev: 1291"
ohci.c: Fehler (hoffentlich) korrigiert, curOHCI ersetzt.
Transfers laufen noch nicht.
-
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.
-
version = "0.0.3.92 - Rev: 1293"
Fehler in ohci.c beseitigt, z.B. tailPointer und directions
-
version = "0.0.3.93 - Rev: 1294"
ohci.h/c: Transfer-Mechnanismus läuft nun endlich, aber Fehler bei den Paketen in den Transactions: Device: no response to IN or no handshake (OUT)
-
version = "0.0.3.94 - Rev: 1295"
ohci.c: donehead begonnen
-
version = "0.0.3.95 - Rev: 1296"
ohci: weiter entwickelt, Transfers funktionieren aber noch nicht korrekt.