Sprachauswahl(Ass/C/C++) für eigenes Betriebssystem mit USB zugriff
-
Hi Leute!
Ich würde gerne ein Minibetriebssystem/Filetool selber programmieren und habe Probleme bei der Sprachauswahl.Mein Programm soll in der Lage sein automatisch zu booten, auf Lokale und Externe Datenträger (HD/USB-Stick) zuzugreifen und die Files zu manipulieren (verschieben/ändern/löschen).
Das Programm soll dann von der CD startbar sein (so ne Art Live CD) und den Zugriff auf Externe Datenträger ermöglichen.
Das eigentliche Problem ist wie man auf Externe Datenträger über USB zugreifen kann. Mit USB habe ich noch nicht gearbeitet und wollte fragen ob das nur in ASM oder auch in C bzw. C++ geht
Wenn ja dann wie (über eine DLL wenn ja dann welche und wie muss ich die aufrufen) bzw. wo kann ich dazu genaue Informationen finden.
ThX für eure Hilfe
-
Also um einen Bootloader zu programmieren brauchst du Assembler. Ob man den USB-Zugriff auch mit C/C++ realisieren kann weiß ich leider nicht, würde mich aber auch mal interessieren.
-
Also um einen Bootloader zu programmieren brauchst du Assembler.
Quatsch.
-
boot schrieb:
Also um einen Bootloader zu programmieren brauchst du Assembler.
Quatsch.
Dann würde ich mich freuen, wenn du mir zegist, wie du einen Bootloader ohne Assembler programmieren willst.
-
... Mit einem wilden Gefrickel von Compiler-Anweisungen und wilden Direktiven wird das evtl. mit einem vernuenftigen C oder C++-Compiler auch ohne Assembler machbar sein - schoen waere das aber sicher nicht mehr.
Zum Thema:
Um USB anzusteuern brauchst du kein Assembler. Ist allerdings die Frage, was du eigentlich vor hast? Solange du nicht versuchst, das Windows-Kernel zumindest teilweise nach zu bauen, wirst du DLLs und Windows-Treiber nicht benutzen koennen.
Heisst, du musst die Treiber fuer (S)ATA- und USB-Controller, die du in deinem OS unterstuetzen willst, selbst programmieren. Ein guter Anlaufpunkt dazu sind entsprechende Treiber-Sourcen fuer Linux.
-
Ich habe auch gelesen das man einen Bootloader mit Assembler schreiben muss außer man erstellt sich eine Bootfähige Diskette/CD/DVD. Auf so einer Diskette/CD/DVD gibt es dann die autorun.bat und man könnte diese verändern (dort das eigene Programm eintragen) und sich so den bootloader ersparen. Versucht habe ichs es ja noch nicht denn ansonsten würde ich euch nicht fragen :D. Ich habe es nur gelesen
-
Da hast du dir aber verdammt viel vorgenommen.
boot schrieb:
Also um einen Bootloader zu programmieren brauchst du Assembler.
Quatsch.
Doch, Assembler is unerlässlich, wenn man den Bootsector selber erstellen will. Man kann natürlich auch GRUB nehmen und direkt den Protected-Mode (32-bit) einschalten und zum Kernel springen lassen. Aber wo ist da der Spaß, wenn man es nicht selber macht?
King schrieb:
Ich habe auch gelesen das man einen Bootloader mit Assembler schreiben muss außer man erstellt sich eine Bootfähige Diskette/CD/DVD. Auf so einer Diskette/CD/DVD gibt es dann die autorun.bat und man könnte diese verändern (dort das eigene Programm eintragen) und sich so den bootloader ersparen. Versucht habe ichs es ja noch nicht denn ansonsten würde ich euch nicht fragen :D. Ich habe es nur gelesen
Diese Windowsbootdiskette bleibt meines Wissens nach nur im Real-Mode (16-bit), der nur 1MB(nicht MiB) Speicher bietet und das ist sicherlich zu wenig für deine geplante Anwendung, zumal der Speicher auch noch von den Progs auf der Diskette gebraucht werden.
An deiner Stelle würd ich die Idee ganz schnell wieder vergessen und schauen ob es evtl. schon eine fertige Lösung gibt (Knoppix oder Ubuntu Live-CD z.b.).
mfg
-
anonym schrieb:
King schrieb:
Ich habe auch gelesen das man einen Bootloader mit Assembler schreiben muss außer man erstellt sich eine Bootfähige Diskette/CD/DVD. Auf so einer Diskette/CD/DVD gibt es dann die autorun.bat und man könnte diese verändern (dort das eigene Programm eintragen) und sich so den bootloader ersparen. Versucht habe ichs es ja noch nicht denn ansonsten würde ich euch nicht fragen :D. Ich habe es nur gelesen
Diese Windowsbootdiskette bleibt meines Wissens nach nur im Real-Mode (16-bit), der nur 1MB(nicht MiB) Speicher bietet und das ist sicherlich zu wenig für deine geplante Anwendung, zumal der Speicher auch noch von den Progs auf der Diskette gebraucht werden.
Ohje, da muss ich wohl wieder gegen Vorurteile und Verwirrung DOS betreffend vorgehen.
1. Ich denke, was du meinst, King, ist im Grunde eine Diskette (bzw. das Image dieser Diskette auf CD/DVD), mit einem kompletten DOS Betriebssystem.
Klar kannst du dir dabei den Bootloader, die Treiber fuer die Laufwerkskommunikation und FAT-Dateisysteme sparen, da DOS das alles schon mitbringt.
2. Die Datei heisst autoexec.bat
3. DPMI gibt es schon eine ganze Weile. uA. damit ist DOS nicht nur auf 1 MB Adressraum beschraenkt. Mit Hilfe eines brauchbaren extenders kann man so ganz geschmeidig auch 32Bit-Programme schreiben - einige (/nur einer?) extender unterstuetzen sogar Windows-Programme.anonym schrieb:
An deiner Stelle würd ich die Idee ganz schnell wieder vergessen und schauen ob es evtl. schon eine fertige Lösung gibt (Knoppix oder Ubuntu Live-CD z.b.).
Da stimme ich allerdings zu. Versuch es besser erstmal mit etwas Einfacherem.
-
Ich bin mir im klaren, dass es dazu schon viele andere Lösungen gibt, wollte jedoch meine eigene Entwickeln, weil es mich einfach interessiert sowas selbst zu machen und ich gute Erfahrungen in C/C++/C#/Java/… habe. Ich werde den Lösungsvorschalg von Nobuo T verwenden.
Ich hätte da nur noch eine Frage welche nicht ganz in das Assemblerforum reinpasst, ich aber nicht unnötig einen neuen Beitrag eröffnen will.
Wie kann ich auf das USB Device (speziel USB-Stick wenn ich die Variante von Noubuo T verwende) zugreiffen?. Habt ihr einen Link dazu bzw. wo kann ich da was gescheites finden (irgend ein Beispiel)/nachlesen
.
Vielen Dank für eure Tipps bis jetzt Ihr habt mir echt weitergeholfen
-
Also willst du das jetzt ueber DOS machen?
Dazu sei noch folgendes angemerkt:
DOS unterstuetzt nur (V)FAT - kein NTFS und AFAIK keine DVDs (ka, was sich da bei FreeDOS e.Ae. evtl. getan hat).
Auf USB-Sticks o.Ae. kannst du unter Verwendung der DOS-Funktionen nur zugreifen, wenn das BIOS das unterstuetzt - und das klappt AFAIK selbst bei den aktuellsten Rechnern noch nicht immer reibungslos (ausprobieren). => Die USB-Treiber musst du immer noch selbst organisieren. Wie gesagt: am weitesten wirst du da wahrscheinlich kommen, wenn du dich bei den Linux-Treibern fuer USB-Controller umsiehst (google, o.Ae.).Alternativ koenntest du dann natuerlich zB. auch gleich versuchen, dir deine eigene Linux Mini-Distri zusammen zu stellen.