Weiterentwicklung von PrettyOS: Floppy vs USB



  • Hallo,

    mal ne etwas andere Frage: Müsst Ihr wirklich Floppys unterstützen? Die sind doch faktisch ausgestorben!
    Es gibt verschiedene USB-Stacks die vor allem für Mikrocontroller u.ä. ausgelegt sind und Teilweise auch UHCI/OHCI (manche vielleicht sogar EHCI) unterstützen. Generische Treiber für die wichtigsten Device-Klassen (z.B. Massenspeicher) sind meist auch schon dabei. Da hättet Ihr mit einem Schlag USB-Sticks und USB-Festplatten. Sicher steckt da etwas Aufwand drin sowas auf PrettyOS zu portieren aber auf der anderen Seite solltet Ihr euch fragen wie viel Zeit ihr noch in die Floppy-Ansteuerung stecken wollt wenn eigentlich absehbar ist das die überwiegende Mehrheit der Computer keine entsprechende Hardware mehr hat. Heutige Mainboards haben nicht mal mehr einen Floppy-Anschluss und zum eigentlichen Chip-Satz gehört der Floppy-Controller schon lange nicht mehr sondern wird mit irgendwelchen Super-IO-Chips per LPC angebunden die der Main-Board-Hersteller gerne aus Kostengründen weglässt. Der Floppy-Controller ist die letzte Komponente die noch den klassischen DMA-Controller (der glaube ich nur die ersten 16 MB physischen RAM benutzen kann) benötigt, ohne Floppy-Unterstützung könnt ihr ne Menge alten Ballast über Bord werfen.

    Also ich persönlich würde meine Zeit lieber in USB investieren, das hat IMHO mehr Nutzwert und bessere Zukunftsaussichten.
    Ich will Euch nicht die Freude am Programmieren nehmen aber etwas gesunder Pragmatismus schadet nicht.

    Grüße
    Erik


  • Mod

    Diese Frage ist sehr interessant. Daher zunächst die Fakten:

    Es gibt zwei Threads, die sich mit dem Thema beschäftigen:
    Floppy-Treiber: http://www.c-plusplus.net/forum/viewtopic-var-t-is-253791.html
    USB: http://www.c-plusplus.net/forum/viewtopic-var-t-is-253016.html

    Der PCI-Scan bietet bereits die Schnittstelle zu USB-Devices:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-252512.html

    Viele Hobby-OS bieten immer noch eine Möglichkeit, die Floppy Disk anzusteuern.

    Warum habe ich immer noch die Floppy mit FAT12 und nicht die Festplatte mit FAT16/FAT32 als Speichermedium im Blick? Der Grund dafür ist eine gewisse Sicherheit beim Einstieg. Ein Zerschießen der Festplatte des Entwicklungsrechners kann übel ausgehen. Auch bei meinen Format-/Schreib-Versuchen in Richtung Floppy habe ich schon einige Disks "unbrauchbar" gemacht (Rettung durch format a: unter MS WIndows Konsole).

    Das Thema USB hat bei uns in der Weiterentwicklung Priorität. fricky hatte diesen Bereich übernommen. Er hat sich allerdings aus dem Staub gemacht. SO einfach ist die Entwicklung eines USB-Treibers also nicht.



  • Hallo,

    Erhard Henkes schrieb:

    Viele Hobby-OS bieten immer noch eine Möglichkeit, die Floppy Disk anzusteuern.

    Sicher weil es dafür jede Menge Dokumentationen, Spezifikationen und Beispielcode gibt.

    Erhard Henkes schrieb:

    Der Grund dafür ist eine gewisse Sicherheit beim Einstieg.

    Ein kleiner USB-Stick für 3 Euro bietet die gleiche Sicherheit und hat keinen mechanischen Verschleiß. Außerdem können 1,44MB doch recht schnell zu eng werden.

    Erhard Henkes schrieb:

    Ein Zerschießen der Festplatte des Entwicklungsrechners kann übel ausgehen.

    Von der wichtigen Festplatte sollte man natürlich erst mal die Finger lassen.

    Erhard Henkes schrieb:

    Er hat sich allerdings aus dem Staub gemacht.

    Man sollte sich seine Leute schon etwas genauer anschauen.

    Erhard Henkes schrieb:

    SO einfach ist die Entwicklung eines USB-Treibers also nicht.

    Wie gesagt, sowas gibt es bereits.

    Grüße
    Erik



  • Für die Tests auf echter Hardware werden meist alte Kisten verwenden. Bei denen kann man dann nicht pauschal sagen ob diese booten von USB unterstützen. Zusammen mit der Floppy sollte man aber so gut wie alles abdecken können.

    Ein Problem das man bei USB auch noch lösen muss ist das Wählen des Richtigen Laufwerkes im Buildscript. Das Diskettenlaufwerk hat einen gewissen extra Status, die USB Laufwerke unterscheiden sich erstmal nicht von den Festplatten. Wenn man aufs falsche Laufwerk schreibt gibts Ärger.



  • Hallo,

    Tobiking2 schrieb:

    Für die Tests auf echter Hardware werden meist alte Kisten verwenden. Bei denen kann man dann nicht pauschal sagen ob diese booten von USB unterstützen.

    Wie alt sind den die? Alle Rechner die ich zur Verfügung hab (bis zu 10 Jahre alt) können von USB booten.

    Tobiking2 schrieb:

    Ein Problem das man bei USB auch noch lösen muss ist das Wählen des Richtigen Laufwerkes im Buildscript.

    Im Buildscript muss man die Verwaltung des Host-Systems benutzen. Für den Bootvorgang des neuen OS (finden des Root-Laufwerks) gibt es mehrere Varianten. Der Laufwerksnahme oder irgendwelche Seriennummern sind da eine beliebte Methode.

    Tobiking2 schrieb:

    die USB Laufwerke unterscheiden sich erstmal nicht von den Festplatten.

    Von den internen (S)ATA-Festplatten unterscheiden sich USB-Geräte doch sehr deutlich und was man so alles per USB anschließt wenn man ein experimentelles OS startet sollte man sich eben gut überlegen.

    Grüße
    Erik



  • erik.vikinger schrieb:

    Tobiking2 schrieb:

    die USB Laufwerke unterscheiden sich erstmal nicht von den Festplatten.

    Von den internen (S)ATA-Festplatten unterscheiden sich USB-Geräte doch sehr deutlich und was man so alles per USB anschließt wenn man ein experimentelles OS startet sollte man sich eben gut überlegen.

    Das war auch noch auf das Buildsystem bezogen. Das Diskettenlaufwerk ist z.B. unter Linux als /dev/fd0 nicht zu verwechseln. Das USB-Laufwerk wird aber meist als irgendein /dev/sd* eingetragen und läuft damit unter der gleichen Bezeichnung wie die Festplatten. Schreibt man nun in das Buildsystem /dev/sdb als Default Wert rein wird das sicherlich schief gehen. Ich wüsste grad auch keine Methode um sicher zu gehen das man das richtige Device erwischt. Das wird man immer angeben müssen. Das ganze auf eine Diskette zu schreiben ist daher etwas problemloser.

    erik.vikinger schrieb:

    Wie alt sind den die? Alle Rechner die ich zur Verfügung hab (bis zu 10 Jahre alt) können von USB booten.

    Ich habe letztens einen Laptop mit einem Pentium 90 gefunden, auf dem ich das mal testen wollte. Der hatte noch keine USB Anschlüsse, allerdings war da auch das Diskettenlaufwerk kaputt und es wurde nichts daraus. 🙂



  • Hallo,

    Tobiking2 schrieb:

    Das USB-Laufwerk wird aber meist als irgendein /dev/sd* eingetragen und läuft damit unter der gleichen Bezeichnung wie die Festplatten. Schreibt man nun in das Buildsystem /dev/sdb als Default Wert rein wird das sicherlich schief gehen. Ich wüsste grad auch keine Methode um sicher zu gehen das man das richtige Device erwischt. Das wird man immer angeben müssen.

    Mann kann einen Link auf das zu verwendende Block-Device anlegen und nur den '/dev/myOsDev' verwenden.

    Grüße
    Erik



  • Hallo,

    OT:

    Tobiking2 schrieb:

    Ich habe letztens einen Laptop mit einem Pentium 90 gefunden

    Wenn der ≥2 echte (mit 16550 UARTs) und funktionierende Serielle Schnittstellen hat (und insgesamt noch einigermaßen funktioniert) darfst Du den gerne bei mir gegen 20 voll funktionsfähige Euronen eintauschen. 😃

    Grüße
    Erik



  • Der ist leider schon entsorgt. Der wurde allerdings auch mal aufgeschraubt weil versucht wurde die kaputte Festplatte auszutauschen und ging seitdem nicht mehr richtig zu. Also viel war da nicht mehr mit zu machen.


  • Mod

    So einfach ist die Entwicklung eines USB-Treibers also nicht.
    Wie gesagt, sowas gibt es bereits.

    @Erik: kannst Du mir bitte diesen Link auf den Sourcecode eines funktionierenden USB-Treibers geben?



  • Hallo,

    Erhard Henkes schrieb:

    kannst Du mir bitte diesen Link auf den Sourcecode eines funktionierenden USB-Treibers geben?

    Aber klar:
    http://www.embedded-projects.net/usbport
    http://www.platon42.de/poseidon.html
    http://www.reactos.org/wiki/USB_Stack
    ich hab da noch ein paar andere in Erinnerung aber finde die jetzt nicht auf die schnelle. Die großen etablierten Open-Source-OSe bieten auch einiges.
    Viele größere Mikrocontroller haben heutzutage einen USB-Host-Controller eingebaut und daher gibt es da verschiedene Projekte. Die Suchmaschine Deiner Wahl sollte noch mehr bringen können.

    Grüße
    Erik


  • Mod

    Danke! 🙂


  • Mod

    Hier läuft auch gerade eine aktuelle Diskussion bezüglich USB-Treiber:
    http://forum.osdev.org/viewtopic.php?f=1&t=21515



  • Hallo,

    ich hab noch ein paar Links
    http://www.mikrocontroller.net/articles/USB#Host-Controller_im_Mikrocontroller für die dort genannten Mikrocontroller gibt es von den Herstellern unterschiedlich komplexe UBS-Host-Stack Implementierungen, zum Teil auch als Source-Code; die Seite ist auch insgesamt recht interessant
    http://code.google.com/p/tatos/ tatOS : "Operating system for x86 32bit computers written in assembly", unterstützt UHCI & EHCI Host-Controller und Mass-Storage-Devices

    Wenn ich mit meinem Projekt irgendwann mal so weit bin das ich Dateien lesen/schreiben will (außer RAM-Disk) dann muss ich mich entscheiden ob ich mit USB oder SATA anfange, so nen uralten Floppy-Kram will ich jedenfalls nicht anfangen.

    Grüße
    Erik


  • Mod

    so nen uralten Floppy-Kram will ich jedenfalls nicht anfangen

    Können Cuervo und ich inzwischen nachfühlen, ist auch wirklich nicht einfach und ziemlich lahm.



  • Hallo,

    so nen uralten Floppy-Kram will ich jedenfalls nicht anfangen

    Ich hatte mal daran gedacht sowas wie http://www.nuvoton.com/hq/enu/ProductAndSales/ProductLines/ComputerIC/SuperIO/LPCSuperIOforDesktopAndServer/W83627HG-AW.htm oder http://www.via.com.tw/en/products/peripherals/super-io/ einzusetzen, etwas in der Art habt Ihr bestimmt auch in Euren physischen Test-Rechnern. Allzu schwer sollte es nicht sein ein LPC-Master in ein FPGA zu implementieren, den A20-Ausgang dieser Chips muss ich ja nicht nutzen. So ein Chip würde mir auf einen Schlag eine Reihe Schnittstellen bieten, auf der anderen Seite müsste ich auch etliche Verrenkungen machen um dieses Gewürch in meine Plattform zu integrieren.

    Erhard Henkes schrieb:

    Können Cuervo und ich inzwischen nachfühlen, ist auch wirklich nicht einfach und ziemlich lahm.

    Tja, moderne Schnittstellen (USB oder SATA) sind doch etwas anderes als so ein abscheulicher Kram der schon gut 30 Jahre vor sich hin fault (und in der Zwischenzeit ziemlich stinkt).

    Viel Spaß noch! 😃

    Grüße
    Erik


  • Mod

    Viellicht kannst Du in die Schnittstelle Floppy ---> DMA rein schauen, warum das so unzuverlässig läuft. Wir müssen da höllisch aufpassen und checken, damit uns dort die Daten lückenlos ankommen. Irgendetwas ist da noch nicht brauchbar.



  • erik.vikinger schrieb:

    Erhard Henkes schrieb:

    Können Cuervo und ich inzwischen nachfühlen, ist auch wirklich nicht einfach und ziemlich lahm.

    Tja, moderne Schnittstellen (USB oder SATA) sind doch etwas anderes als so ein abscheulicher Kram der schon gut 30 Jahre vor sich hin fault (und in der Zwischenzeit ziemlich stinkt).

    Stimmt, ekelhaft und hässlich. Das ist USB wirklich, da spreche ich aus Erfahrung. Komm nach #tyndur und frag eddyb, der auch versucht, einen USB-Treiber zu implementieren, der singt das gleiche Lied (und der ist noch dabei, den Host Controller zum Sprechen zu bringen...). 🙄

    Ich habe nie versucht, fremden Code zu nehmen. Das könnte schon einfacher sein. Aber was soll das? Ich möchte mein OS nie wirklich einsetzen. Wenn ich arbeiten will, nehme ich Linux. Deshalb hab ich persönlich nichts dagegen, wenn in Hobby-Betriebssystemen auf "veraltete" Standards gesetzt wird, weil diese dazu da sind, Erfahrung zu sammeln. Gerade bei PrettyOS ist das der Fall. Dies soll doch ein didaktisch wertvolles OS sein und kein OS, das alles kann, dachte ich?

    erik.vikinger schrieb:

    Viel Spaß noch! 😃

    Den werden sie haben, wenn sie versuchen, USB selbst zu implementieren, wie es sich für ein didaktisch wertvolles OS gehört. 🙄


  • Mod

    Dies soll doch ein didaktisch wertvolles OS sein und kein OS, das alles kann, dachte ich?

    Völlig richtig. PrettyOS soll verständlich bleiben und zum eigenen Experimentieren einladen. Momentan treten einige Effekte auf, die zumindest ich nicht völlig verstehe. Außerdem sind im Floppy/FAT-Bereich einige Parallelitäten bei Funktionen eingetreten, die noch beseitigt werden müssen. Bezüglich Multitasking stehen wir noch ziemlich am Anfang, das macht Probleme.

    Was aber Spaß macht, ist der Umstand, dass man mehrere eigene User-Programme für PrettyOS erstellen und laufen lassen kann. Da warten aber auch schon wieder neue Tücken. Also genug damit zu tun, das Vorhandene gerade im didaktischen und experimentellen Sinne zu optimieren, verständlich zu halten und zu stabilisieren.



  • Hallo,

    Erhard Henkes schrieb:

    Viellicht kannst Du in die Schnittstelle Floppy ---> DMA rein schauen, warum das so unzuverlässig läuft. Wir müssen da höllisch aufpassen und checken, damit uns dort die Daten lückenlos ankommen.

    Ob Du es glaubst oder nicht aber mit dedizierten DMA-Controllern hatte ich noch nie etwas zu tun, mit dem 8237 auch nicht, alle Hardware für die ich Treiber programmiert habe kann ihre Daten selber aus/in dem RAM lesen/schreiben oder wurde per PIO von der SW bedient (bei kleinen Datenmengen).
    Kann es sein das ihr Eure DMA-Transfers aufsplittet weil die Zielpages nicht an einem Stück im physischen Speicher liegen? Du hattest Doch mal geschrieben das ihr immer ganze Spuren am Stück verarbeitet, das sind doch 9kByte wenn mein Gedächtnis mich jetzt nicht im Stich lässt. Falls da ein Problem ist solltet ihr versuchen zusammenhängend physischen Speicher und nur einen DMA-Job zu nutzen. Für was nehmt ihr eigentlich die ersten 640k? Die würden sich ideal als Zwischenpuffer anbieten.

    XanClic schrieb:

    Stimmt, ekelhaft und hässlich. Das ist USB wirklich, ...

    Okay, USB ist vielleicht nicht unbedingt als Positiv-Beispiel geeignet, die Spec liest sich teilweise echt fürchterlich. Auch das mit jeder neuen Generation ein neuer Host-Controller mir rein gewürgt wird ist sicher zum kotzen aber so übel sieht die EHCI-Spec IMHO gar nicht aus, ich sehe dort viele Konzepte die ich von anderer Hardware auch gewöhnt bin. Ich habe mich mit USB noch nicht so sehr intensiv beschäftigt, ich bin mir auch noch nicht sicher ob ich auf meiner Plattform überhaupt USB haben will. USB ist eben sehr verbreitet und man hat ja neben der Mass-Storage-Class noch HID und für alles gibt es auch bereits ne Menge Source-Code. Ich denke (hoffe) wenn ich doch USB haben will dann werde ich nur in die untersten Ebenen viel Arbeit investieren müssen.

    Ich habe nie gesagt das ein USB-Host-Stack einfacher ist als ein Floppy-Treiber, ich habe lediglich angeregt mal drüber nachzudenken ob sich dieser Mehraufwand nicht vielleicht doch lohnt weil man auch einen viel größeren Gegenwert bekommt und Floppy in kaum einen Rechner mehr drin ist. Ich bin der Meinung das die potentielle Zielgruppe eingeschränkt wird wenn man ausgestorbene Hardware voraussetzt. Wenn man sich anschaut was die letzten 10 Jahre als Komplett-PC bei Media-Markt und Co. so über die Theke gewandert ist so ist "booten von USB" sicherlich deutlich häufiger als "booten von Floppy". Wenn Ihr Euch gegen USB entscheidet so kann ich damit prima leben, ich wollte lediglich zum diskutieren anregen.

    Grüße
    Erik


Anmelden zum Antworten