Sourcecode Fortschritt
-
Rev. 466:
Serials von usb msd und von der FAT16 oder FAT32 Partition werden angezeigt und gespeichert. Damit können wir eine Partition sicher erkennen.
usb-stick usb device ser. # FAT ser. # FAT.. ------------------------------------------------------ 512 MB 8B6A0861 F6 1C E9 20 16 1 GB 110 ED 50 07 58 16 4 GB 0D09297675C0 62 F9 2A 94 32 16 GB N014IM75 79 A2 6C 5C 32
Hierbei verwende ich bei den usb device ser. # nur die letzten 12 Stellen, weil nur diese unterschiedlich sein müssen.
Die serial vom 1GB stick erscheint verflixt kurz.
Die serial vom 4GB stick ist sogar 16 Stellen lang, die vorderen 4 habe ich beim Speichern verworfen. Wir können aber auch erhöhen.
-
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.