Sourcecode Fortschritt
-
Rev. 478:
- testFAT(...) ausgelagert aus fat.c (soll möglichst allgemein bleiben)
- scsi-abfolge test unit ready - test unit ready - request sense - (test unit ready - request sense)
- utoa (von MrX überarbeitet)
- FAT testablauf etwas optimiert
- die beiden QH (out/in) bei bulk-Transfer wieder getrennt
-
Rev. 479: Zwischenschritt
Bei Ausfall eines In-Transfers wird dieser einfach wiederholt.
Bitte pqeq.elf und ttt.elf auf das usb msd (usb-Stick, usb-HDD) kopieren und testen.
Zuerst wird pqeq.elf ausgeführt, anschließend springt das OS zurück zur Konsole Alt+M. Es geht aber weiter z.B. bei Alt+1, also dort, wo der letzte Aufruf statt fand. Dort kann man anschließend ttt.elf ausführen.
usb2_msd.c, zeile 645 ff. (zum Experimentieren):
testFAT("pqeq elf"); testFAT("ttt elf");
Bei meinem störrischen 4GB stick klappt das Laden, aber die Programme sind irgendwie nicht ok (kA was da los ist), ansonsten geht alles.
-
Rev. 480:
fat.c: fatRead und fatReadQueued wurden von FAT16 auf FAT32 erweitert.
Nun sollten die Ladevorgänge auch bei FAT32 funktionieren. Eigentlich ist es verblüffend, dass das in einzelnen Fällen bisher schon gelang.
TODO: (fileFind)
Fehler: root dir wird nur im ersten cluster durchsucht! Bei z.B. 8 sectors per cluster sind das nur die ersten 8 * 512/32 = 128 Einträge! Da sieht man deutlich wie wichtig Tests auch mit großen Mengen sind (Durchführung: 512 MB stick wurde auf FAT32 formatiert, Fonts von Windows aufgespielt, dann die zu suchenden Files, damit diese möglichst weit hinten sind).
-
Rev. 481:
Zwischenschritt: fileFind und CacheFileEntry umgebaut auf FAT16 u. 32
funktioniert mit einem fileentry im ersten Cluster (cluster 2), also nicht über entry Nr. 128 (bei 8 sectors per cluster).Wie findet man die weiteren Cluster des rootdir?
http://users.iafrica.com/c/cq/cquirke/fat.htm
The root directory is fixed in length and always located at the start of the volume (after the FAT) in FAT12 and FAT16 volumes, but FAT32 treats the root directory as just another cluster chain in the data area. However, even in FAT32 volumes, the root directory will typically follow imediately after the two FATs.
-
Revision 482:
- Task-Verkettung im Scheduler (mit ring_t) statt in Task-Struktur. (Nächster Schritt zum neuen Scheduler). scheduler_getNextTask tut nun auch, was sie verspricht.
- Ring-Funktionen neugeschrieben.
- Doppelter Code in task.c eliminiert. Threads und Tasks haben gemeinsame Basis. -> Besser wartbar, weniger Fehleranfällig, weniger Code
- userlib/console.c/video.c/util.c: utoa-Vereinheitlichungen
- Sound aktiviert
- Diverse Kleinigkeiten
-
Rev. 483:
Zwischenschritt beim Aufbau des FAT-Moduls (FAT12,16,32).
-
Rev. 484:
Zwischenschritt für Experimente (man sieht hier auch schön, wenn der Code aus dem Datenbereich lesend in die FAT verzweigt. Dieses "Springen" bezüglich der Sektor-Nummer hatten wir bisher nicht verstanden ):
Das richtige Entry wird bei FAT32 und Einträgen, die nicht im ersten Cluster der root dir sind, nun also auch in späteren Clustern (Finden via File Allocation Table) gefunden. Leider wird das Programm noch nicht geladen.Als Suche ist nach wie vor folgendes eingestellt:
usb2_msd.c, zeile 645:testFAT("pqeq elf"); testFAT("ttt elf");
-
Rev. 485:
Files lesen von FAT16 und FAT32 funktioniert.
Suchstrings noch wie oben.
-
Rev. 486:
- Erkennung MBR verbessert: nur noch 55 AA bei 510/511 und 00 00 bei 444/445 (bei Cuervo klappts jetzt auch)
- showDirectoryEntry(DIRENTRY dir) korrigiert
- performAsyncScheduler: sleepMilliSeconds(150 + velocity * 150); (vorher: 200 + velocity * 200)
- waitForKeyStroke in fat.c eliminiert
-
Rev. 487:
- USB2-Kontrollausgaben vereinfacht
- Partitionstabelle mit Größe 0x80808080 unterdrückt
- fat.h/c überarbeitet, etwas komprimiertDas beschleunigt die Abläufe und Ladezeiten signifikant.
Aktuelle Kernelgröße: 99.984 Bytes
-
Rev. 488:
* Makefile- und Toolanpassungen, nun müssen Mac OS X Benutzer nicht die Tools selbst erstellen. Ausserdem wurde die Übersichtlichkeit verbessert.
Ich bitte um Tests von Linux- und Windowsusern.
TiA
Cuervo
-
Test unter Win XP: full ACK
nun müssen Mac OS X Benutzer nicht die Tools selbst erstellen
Vielen Dank!
-
Rev. 489:
devicemanager.h/c (neu)
Zwischenschritt Implementierung des Device Managers
Hier ein Ausdruck bei VBox mit zwei eingestellten Floppy Disk Drives (FloppyImage und Laufwerk A: ):
PrettyOS [Version 0.0.0.489] -------------------------------------------------------------------------------- Memory size: 192 MiB / 201 MB (201326592 Bytes) Mass Storage Device Manager installed. 1.44 MB FDD device 0 found 1.44 MB FDD device 1 found #0 0:0.0 dev:1237h vend:8086h IRQ:0 #1 0:1.0 dev:7000h vend:8086h IRQ:0 #2 0:1.1 dev:7111h vend:8086h IRQ:0 #3 0:2.0 dev:BEEFh vend:80EEh IRQ:11 #4 0:3.0 dev:2000h vend:1022h IRQ:10 #5 0:4.0 dev:CAFEh vend:80EEh IRQ:9 #6 0:5.0 dev:2415h vend:8086h IRQ:5 #7 0:6.0 dev:003Fh vend:106Bh IRQ:11 USB OHCI F0804000h MMIO sz:4096 #8 0:7.0 dev:7113h vend:8086h IRQ:9 #9 0:11.0 dev:265Ch vend:8086h IRQ:10 USB EHCI F0805000h MMIO sz:4096 List of attached Mass Storage Devices: FDD: Drive: 1: partition: 0 serial: floppy1 (no usb msd) FDD: Drive: 2: partition: 0 serial: floppy2 (no usb msd) RAM Disk: Drive: 3: partition: 0 serial: ramdisk (no usb msd) -------------------------------------------------------------------------------- <RAM Disk at C0007000h DIR> dev 35 info 10961 shell
Nächster Schritt: Einbindung der USB MSD
Anmerkung: Drive 0 ist reserviert für das aktive Mass Storage Device mit PrettyOS.
-
Rev. 490:
Zwischenschritt device manager:
usb msd devices werden versuchsweise eingebunden bzw. gelöscht
-
Sieht sehr schön aus!
Nur zwei Anmerkungen:
Das "no usb msd" kann man ruhig weglassen. Namen wie "floppy1" sagen bereits alles darüber aus. Die Spalte für den Typ ganz vorne ist ja zudem auch eindeutig. Lieber sagen, was es ist, anstatt was es nicht istUnd es wäre gut, wenn die Tabelle wie eine Tabelle wirkt, d.h. eine Zeile mit Überschrift, dann, mit Tabulator eingerückt, die Werte. Das erspart einem bei vielen Daten pro Zeile (und es könnten ja evtl. mehr werden) mglw einen Zeilenumbruch.
-
Zwischenstand (ohne Code):
Ja, gute Idee. Nachfolgende Darstellung ok?
VBox:
Attached Mass Storage Devices: Type Drive Part. Serial Port ---------------------------------------------------------------------- FDD 1 0 floppy1 FDD 2 0 floppy2 RAMdisk 3 0 ramdisk USB MSD 4 0 00000000729A 1 ----------------------------------------------------------------------
Real PC:
Attached Mass Storage Devices: Type Drive Part. Serial Port ---------------------------------------------------------------------- FDD 1 0 floppy1 RAMdisk 2 0 ramdisk USB MSD 3 0 8B6A0861 4 USB MSD 4 0 N014IM75 3 USB MSD 5 0 0D09297675C0 2 ----------------------------------------------------------------------
Ein-/Ausstecken führt aber noch zu Fehlern, nicht ganz einfach. Auf der USB-Transfer-Seite kommt es hierbei auch noch zu Total-Blockaden. Die Floppy verschwindet nach einigen Wechseln ebenfalls.
Über die Verwaltung der Drive-# sollten wir noch etwas diskutieren.
Zur Zeit vergebe ich diese Drive-# (zu Testzwecken) jeweils fortlaufend.
Die durch "deleteFromDeviceManager" entstandenen Lücken (msd == NULL) recycle ich bisher nicht.Sobald das Device Managementsystem stabil steht, werden wir es an den Load-Prozess seitens der Shell bzw. andere User-Programme anbinden.
Die Einbindung von CDI sollte ebenfalls gelingen.
Infos wie "ehci_handler: Interrupt on Async Advance" wurden nun hinter _USB_DIAGNOSIS_ gesetzt, das stört den normalen Ablauf.
-
Ja, viel schöner
-
Revision 491:
- Zahlreiche Style-Anpassungen (TAB)
- Vereinfachungen/Änderungen am devicemanager
- Projektfile geupdated
- Memory-Ausgabe optimiert (Shiften)
- ...
-
Rev. 492:
devicemanager.c: Tabellarische Darstellung verbessert, zur Kontrolle "deleted" eingefügt bei Nichtnutzung einer Volume-Nr.
Das Serial bezieht sich momentan noch auf das Device, nicht auf die Partition (=Volume)
-
Revision 493:
- devicemanager weitergebaut
- PARTITION heißt jetzt partition_t
- Kleinigkeiten