Sourcecode Fortschritt
-
Revision 467:
- Weiterbau an CDI
- ...
-
Herzlichen Dank an MrX für das Engagement bezüglich CDI!
Rev. 468:
Zwischenschritt: Hidden Sectors durch Startsector der Partition ausgetauscht (dürfte momentan bei einer Partition - also bei sticks - zuverlässig funktionieren)
Für Tests:
- Datei auf stick kopieren oder entsprechend auswählen/benennen
- Filename[8] incl. Extension[3] ohne Punkt(!), aber mit Spaces (Summe 11 character) hier eingeben:
usb2_msd.c, zeile 660 ff.
// testFAT("clean bat"); // TEST FAT filesystem filename: "prettyOSbat" without dot and with spaces in name!!! testFAT("makefile.xxx"); // TEST FAT filesystem filename: "prettyOSbat" without dot and with spaces in name!!! // testFAT("makefile "); // TEST FAT filesystem filename: "prettyOSbat" without dot and with spaces in name!!! // test more!
EDIT: testFAT("makefile.xxx"); ist leider verkehrt gewesen, sorry, richtig: "makefilexxx"
-
Rev. 469:
Korrekturen und Umbenennungen (z.B. von DISK nach PARTITION)
usb2_msd.c, zeile 660:
testFAT("clean bat"); // TEST FAT filesystem filename: "prettyOSbat" without dot and with spaces in name!!!
-
Revision 470:
- cdi_list: Bugfixes
- list_GetElement gibt nun element_t* statt void* zurück.
- video.c: Titelzeilen-Bug gefixt
- fat.c: Code optimiert und (verlustfrei) gekürzt.
- Sound wieder aktiviert
-
Rev. 471:
FAT32 Filestruktur wurde angepasst mit Cluster > 2^16
Test bei MrX: mit vollem Stick bezüglich FAT32 OK.
-
Rev. 472:
Zwischenschritt: Umbauten in ehci und usb_msd, damit auch bereits eingesteckte/angeschlossene usb msd getestet werden. Als Suchfile wird makefile.xxx verwendet (ohne xxx taucht ein seltsames 'B' auf, das nicht aus dem Entry auf dem msd, sondern offensichtlich aus dem code stammt.
-
Rev. 473:
- user heap verlegt
- uint16 gegen uint32 ausgetauscht in fat.h/c (wegen Zahlen > 2^16)
- volume formatiert mit NTFS wird gemeldetSuchfile: makefile.xxx (im FAT-Filetest)
-
Revision 474:
- Userlib: - Neue Funktionen: vprintf, snprintf, vsnprintf, strncat - Änderungen: strncpy aus util.c übernommen - Bug in gets gefixt (Neue Zeile wurde eingefügt, wenn \b an Pos 0|0 (Relativ vom Start) gedrückt wurde) - Kleinigkeiten (Typen, etc.) - Kernel: - cprintf basiert nun auf vprintf - Bug mit %v in printfs behoben (nun in allen kernel-printfs unterstützt) - ehci, usb, etc.: Umformatierungen, etc. - Kommentare gefixt - Sound reaktiviert
-
Rev. 475:
fat, data packages bei ehci: Ausgaben korrigiert, verringert zur besseren Übersicht. Kleine Fehler bei Filename-Handling korrigiert.Inzwischen existieren in os.h folgende Schalter:
/// #define _DIAGNOSIS_ // Diagnosis-Output - activates prints to the screen about some details and memory use /// #define _USB_DIAGNOSIS_ // only as transition state during implementation of USB 2.0 transfers /// #define _FAT_DIAGNOSIS_ // only as transition state during implementation of FAT 16/32 #define _SOUND_ // Sound-Messages - deactivation makes sense during development, because of better boot-time
-
Rev. 476:
ttt.elf (tic tac toe) wird von usb-stick geladen und ausgeführt!
Bei 3 aus 4 usb-sticks wurde ttt.elf sauber geladen/ausgeführt, beim 4GB stick (billiges "unsauberes" Device) knallen momentan vorne nur so die scsi-transfer-errors, ttt wird aber nach mehreren versuchen dennoch irgendwie geladen, allerdigs defekt ausgeführt, man sieht nur 0 und X beim setzen. Das liegt also an den usb-transfers.
Meilenstein: Ausführen eines Programms von usb-stick!
MrX hat ebenfalls bestätigt, einzige Kritik: "Die Kreuzchen sind Gelb"
-
Rev. 477:
%i wurde weitgehend gegen %u ausgetauscht beim Ausdruck.
utoa in util.c eingefügt und in ...printf bei %u verwendet.
Dies führt zum Beispiel zu verbesserten Ergebnissen bezüglich der Darstellung bei der Analyse der Partitionstabelle im MBR.
-
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