Supportnet / Forum / Anwendungen(Java,C++...)
BIOS selber Programmieren
Frage
Hi :-)
Vielleicht kann mir ja jemand helfen. Ist es möglich ein BIOS selber zu verändern, oder auch im kleinen Rahmen selber umzuprogrammieren. Gibt es Software dazu, oder sogar Kurse?
thx Joachim
Antwort 1 von Wiko
Hallo Joachim Traumtänzer!
Du willst tein eigenes BIOS Programmieren? Weist Du, was Du dazu alles wissen musst? Das BIOS ist direct in der Maschinensprache oder in Assembler, welches in Maschinensprache umgewandelt worden ist, geschrieben. Die Maschinensprache ist in eine Binärdatei (*.BIN) gefass, welche auch bei BIOS-Upgrades verwendet werden. Du kannst vielleicht, wenn Du gut bist in C++ ein Programm schreiben, welches einen Binärdatei auf das BIOS-EEPROM brennt. Doch für das BIOS-Programm selber muss Du exakte Känntnisse über das Mainboard (solche, die nur die Herstellerfirma hat) haben und perfekt Assembler beherschen. Die BIOS - Mainboard Schnittstellen sind zwar für alle Mainboards genormt aber deswegen nicht unkompliziert. Du kannst ja die Firma AWARD ode AMI kontaktieren, doch ich mache dir keine große Hoffnungen, denn Betriebsgeheimnisse geben die nicht Preis. Es sei den Du kaufst für ein Paar Milionen US$ das Patent und die Lizens von den Mainboardhestellern.
Viel Glück!!!
Kontaktier mich, falls Du tatsächlich Hilfe bekommst!
Du willst tein eigenes BIOS Programmieren? Weist Du, was Du dazu alles wissen musst? Das BIOS ist direct in der Maschinensprache oder in Assembler, welches in Maschinensprache umgewandelt worden ist, geschrieben. Die Maschinensprache ist in eine Binärdatei (*.BIN) gefass, welche auch bei BIOS-Upgrades verwendet werden. Du kannst vielleicht, wenn Du gut bist in C++ ein Programm schreiben, welches einen Binärdatei auf das BIOS-EEPROM brennt. Doch für das BIOS-Programm selber muss Du exakte Känntnisse über das Mainboard (solche, die nur die Herstellerfirma hat) haben und perfekt Assembler beherschen. Die BIOS - Mainboard Schnittstellen sind zwar für alle Mainboards genormt aber deswegen nicht unkompliziert. Du kannst ja die Firma AWARD ode AMI kontaktieren, doch ich mache dir keine große Hoffnungen, denn Betriebsgeheimnisse geben die nicht Preis. Es sei den Du kaufst für ein Paar Milionen US$ das Patent und die Lizens von den Mainboardhestellern.
Viel Glück!!!
Kontaktier mich, falls Du tatsächlich Hilfe bekommst!
Antwort 2 von Unforgiven_II
Was er sagen will, und da wird jeder zustimmen:
Das kannst net machen.
Das BIOS ist das WIRKLICHE System des Rechners, sprich wenn du einen Fehler hast, dann ist da nix mehr "drüber", was dir sagt, das etwas falsch ist. Du müsstest Support für X-Komponenten programmieren, was nahezu unmöglich ist, wenn du das Teil nicht selber gebaut hast. Das ist so, als würdest du aus einzelteilen (Dioden etc.) einen Rechner komplett neu bauen. Also nicht fertiges Mainboard, oder so, sonder selber Mainboard bauen...
DANN könntest du ein BIOS dazu machen (villeicht)
Das kannst net machen.
Das BIOS ist das WIRKLICHE System des Rechners, sprich wenn du einen Fehler hast, dann ist da nix mehr "drüber", was dir sagt, das etwas falsch ist. Du müsstest Support für X-Komponenten programmieren, was nahezu unmöglich ist, wenn du das Teil nicht selber gebaut hast. Das ist so, als würdest du aus einzelteilen (Dioden etc.) einen Rechner komplett neu bauen. Also nicht fertiges Mainboard, oder so, sonder selber Mainboard bauen...
DANN könntest du ein BIOS dazu machen (villeicht)
Antwort 3 von Chonhulio
Na na, prinzipiell ist das BIOS auch nicht so ein Hexenwerk, und "Support für X-Komponenten" bietet es auch nicht (Die könnte man hier sogar aufzählen).
Außerdem übernimmt ein modernes Betriebssystem fast alle Aufgaben des BIOS. Diese hat lediglich die Aufgabe Plug&Play-Hardware zu "aktivieren", den Chipsatz zu programmieren (z.B. RAM Zugriffe usw.) und schließlich das winzige Programm im Bootsektor eines Laufwerks auszuführen, welches dann seinerseits den Bootcode des Betriebssystems läd.
Ein "modernes" BIOS wäre also recht einfach zu schreiben.
Aber ein klassisches DOS-/Windows kompatibles BIOS, wie es in jedem üblichen Mainboard zu finden ist, ist wesentlich schwieriger zu entwickeln.
Man muß Assembler benutzen und darf dabei zunächst keine DOS- oder BIOS-Interrupts verwenden, da man diese ja erst selbst implementieren muß.
Man kann (anfangs) lediglich auf CPU-Register, Speicheradressen, Hardwareinterrupts und Geräteports zugreifen.
Hat man die Interruptroutinen geschrieben, kann man unter dem (nicht)guten, alten DOS probeweise die vorhandenen ersetzen und testen (auch einzelne). Wie das geht lernt man am Besten aus Virenquelltexten, denn genau dies tut eigentlich jeder speicherresidente DOS-Virus.
Wenn das alles funktioniert muß man noch die Spezifikationen für die "Zielhardware" (d.h. Chipsatz) auftreiben und Routinen schreiben, die selbige initialisieren.
Dann alles funktionierend zusammenfügen, in den Flashspeicher schreiben und beten bzw. Opfergaben darbieten, weil nun evtl. der PC keinen Mucks mehr macht.
PS: Computer die ausschlieslich mit modernen Betriebssystemen arbeiten, z.B. Macs oder Alpha- bzw. Sparc-Rechner, und nicht die dämliche DOS-Kompatibilität wahren müssen haben sehr primitive und kleine BIOSe, die wirklich nicht viel mehr tun als den Prozessor anzuweisen den Bootcode von der Festplatte auszuführen.
Für Windows 2000 wäre soetwas theoretisch auch möglich, und für Linux wurde es sogar schon gemacht.
mfg Chonhulio
PS: Langer Text, aber ich hoffe es wurde klar, daß die BIOS-Programmierer auch nur mit Wasser kochen (und nur noch dank der rückständigen DOS-Klone dem BIOS große Beachtung geschenkt werden muß).
Außerdem habe ich gerade viel Zeit ...
Außerdem übernimmt ein modernes Betriebssystem fast alle Aufgaben des BIOS. Diese hat lediglich die Aufgabe Plug&Play-Hardware zu "aktivieren", den Chipsatz zu programmieren (z.B. RAM Zugriffe usw.) und schließlich das winzige Programm im Bootsektor eines Laufwerks auszuführen, welches dann seinerseits den Bootcode des Betriebssystems läd.
Ein "modernes" BIOS wäre also recht einfach zu schreiben.
Aber ein klassisches DOS-/Windows kompatibles BIOS, wie es in jedem üblichen Mainboard zu finden ist, ist wesentlich schwieriger zu entwickeln.
Man muß Assembler benutzen und darf dabei zunächst keine DOS- oder BIOS-Interrupts verwenden, da man diese ja erst selbst implementieren muß.
Man kann (anfangs) lediglich auf CPU-Register, Speicheradressen, Hardwareinterrupts und Geräteports zugreifen.
Hat man die Interruptroutinen geschrieben, kann man unter dem (nicht)guten, alten DOS probeweise die vorhandenen ersetzen und testen (auch einzelne). Wie das geht lernt man am Besten aus Virenquelltexten, denn genau dies tut eigentlich jeder speicherresidente DOS-Virus.
Wenn das alles funktioniert muß man noch die Spezifikationen für die "Zielhardware" (d.h. Chipsatz) auftreiben und Routinen schreiben, die selbige initialisieren.
Dann alles funktionierend zusammenfügen, in den Flashspeicher schreiben und beten bzw. Opfergaben darbieten, weil nun evtl. der PC keinen Mucks mehr macht.
PS: Computer die ausschlieslich mit modernen Betriebssystemen arbeiten, z.B. Macs oder Alpha- bzw. Sparc-Rechner, und nicht die dämliche DOS-Kompatibilität wahren müssen haben sehr primitive und kleine BIOSe, die wirklich nicht viel mehr tun als den Prozessor anzuweisen den Bootcode von der Festplatte auszuführen.
Für Windows 2000 wäre soetwas theoretisch auch möglich, und für Linux wurde es sogar schon gemacht.
mfg Chonhulio
PS: Langer Text, aber ich hoffe es wurde klar, daß die BIOS-Programmierer auch nur mit Wasser kochen (und nur noch dank der rückständigen DOS-Klone dem BIOS große Beachtung geschenkt werden muß).
Außerdem habe ich gerade viel Zeit ...
Antwort 4 von Chonhulio
Zum eigentlichen Thema:
Um das BIOS funktional zu verändern müßtest du es zunächst disassemblieren und dich in den Assemblercode einarbeiten, was selbst bei eigenem, schlecht kommentierten Code nach wenigen Tagen bereits sehr schwer sein kann. Von den technischen Schwierigkeiten ganz abgesehen ist das natürlich auch verboten.
Was man evtl. tun kann ist das Verändern der Textmeldungen des BIOSes (Übersetzen oder ähnliches). Dazu reicht ein Hex-Editor. Aber möglicherweise verweigert das Flash-Programm beim Einspielen des veränderten BIOSes die Arbeit, da die Datei-Prüfsumme nicht mehr stimmt.
Um das BIOS funktional zu verändern müßtest du es zunächst disassemblieren und dich in den Assemblercode einarbeiten, was selbst bei eigenem, schlecht kommentierten Code nach wenigen Tagen bereits sehr schwer sein kann. Von den technischen Schwierigkeiten ganz abgesehen ist das natürlich auch verboten.
Was man evtl. tun kann ist das Verändern der Textmeldungen des BIOSes (Übersetzen oder ähnliches). Dazu reicht ein Hex-Editor. Aber möglicherweise verweigert das Flash-Programm beim Einspielen des veränderten BIOSes die Arbeit, da die Datei-Prüfsumme nicht mehr stimmt.
Antwort 5 von Kupferman
Frag mich blos wie die es machen, die Bios Tuning Programme schreiben, denn die können ja auch noch Einstellungen bei verschiedensten Biosen vornehmen.
Conhulio was sagste dazu?
Conhulio was sagste dazu?
Antwort 6 von SeppMaier
Mensch, Loide, Unforgiven hat doch recht..
Kupferman und Chonhulio:
Diese Tools ändern nur was am Chipsatz, aber nie den MicroCode, spezifische Routinen( Temp-Überwachung, Mainboardeigene Routinen), und selbst dabei kann es sein, dass du dein MoBo schrottest..
Ein Bit Falsch gesetzt, und du kannst deinem MoBo Goodbye sagen, ausser du nennst einen EPROM Brenner dein Eigen und einen Logik-Analyzer und ein Binoskop und.....
und das auch nur, wenn das falsche BIOS nix angerichtet hat, und das hat es schnell, glaube mir, ich spreche aus Erfahrung (Schliesslich arbeite ich in der Entwicklungsabteilung einer Computerfirma)
Meistens will man da ja sowieso nur rumhacken, um aus einer 500 CPU optisch eine 800er oder mehr zu machen... (BETRUG!!!)
Lasst die Finger davon, ehrlich
sihju Sepp
Kupferman und Chonhulio:
Diese Tools ändern nur was am Chipsatz, aber nie den MicroCode, spezifische Routinen( Temp-Überwachung, Mainboardeigene Routinen), und selbst dabei kann es sein, dass du dein MoBo schrottest..
Ein Bit Falsch gesetzt, und du kannst deinem MoBo Goodbye sagen, ausser du nennst einen EPROM Brenner dein Eigen und einen Logik-Analyzer und ein Binoskop und.....
und das auch nur, wenn das falsche BIOS nix angerichtet hat, und das hat es schnell, glaube mir, ich spreche aus Erfahrung (Schliesslich arbeite ich in der Entwicklungsabteilung einer Computerfirma)
Meistens will man da ja sowieso nur rumhacken, um aus einer 500 CPU optisch eine 800er oder mehr zu machen... (BETRUG!!!)
Lasst die Finger davon, ehrlich
sihju Sepp
Antwort 7 von Chonhulio
Die BIOS-Tuning Programme ändern eigentlich nichts am BIOS, sie programmieren lediglich den Chipsatz um, d.h. schreiben andere Werte in seine Controllregister. Ändern also beispielsweise die RAM-Parameter oder die Anzahl der Wartezyklen. Sie greifen dazu direkt auf die Hardware zu und tun das, was das BIOS auch während des Bootens tut.
Schlimmstenfalls stürzt dabei der Computer ab und nach dem Reset werden wieder Standardwerte geladen (OK, es kann auch Datenmüll auf der Festplatte geben wenn man die Timingwerte der IDE-Controller ändert oder fehlerhafte Features aktiviert und der Computer NICHT sofort abstürzt).
Vom BIOS sind diese Programme aber völlig unabhängig, lediglich den Chipsatz müssen sie kennen.
@SeppMaier: Erkläre mir, wie ein falsches BIOS die Hardware dauerhaft schädigen sollte und wozu ich dann einen "Logik-Analyzer" brauche. Das man einen Flash-Writer braucht ist meiner Meinung nach der schlimmstmögliche Fall.
Schlimmstenfalls stürzt dabei der Computer ab und nach dem Reset werden wieder Standardwerte geladen (OK, es kann auch Datenmüll auf der Festplatte geben wenn man die Timingwerte der IDE-Controller ändert oder fehlerhafte Features aktiviert und der Computer NICHT sofort abstürzt).
Vom BIOS sind diese Programme aber völlig unabhängig, lediglich den Chipsatz müssen sie kennen.
@SeppMaier: Erkläre mir, wie ein falsches BIOS die Hardware dauerhaft schädigen sollte und wozu ich dann einen "Logik-Analyzer" brauche. Das man einen Flash-Writer braucht ist meiner Meinung nach der schlimmstmögliche Fall.
Antwort 8 von SeppMaier
setz zB mal die Busfrequenz um den Faktor zwei hoch..
das ist ja keine Kunst, auch mit den "TOOLS" nicht..
den Analyzer brauchst dann, um die defekten Bausteine zu finden..
Das Bino, um die Teile raus und reinzulöten..
ausser du wechselst das Board..
muss ich noch mehr sagen?
das ist ja keine Kunst, auch mit den "TOOLS" nicht..
den Analyzer brauchst dann, um die defekten Bausteine zu finden..
Das Bino, um die Teile raus und reinzulöten..
ausser du wechselst das Board..
muss ich noch mehr sagen?
Antwort 9 von Chonhulio
Niemand hat davon geredet Systemkomponenten um das zweifache zu übertakten. Wenn man beim Ändern des BIOSes nicht über die Grenzen der Null-terminierten Strings hinausschreibt und dabei die Werte verändert mit denen später der Chipsatz programmiert wird - und die üblicherwiese an ganz anderen Stellen stehen - passiert soetwas auch nicht.
Quelltexte und Dokumentation zu einem modernen Mini-BIOS findet man übrigens unter "http://www.acl.lanl.gov/linuxbios/"
Quelltexte und Dokumentation zu einem modernen Mini-BIOS findet man übrigens unter "http://www.acl.lanl.gov/linuxbios/"

