Beim aufräumen sind mir gerade eine ganze Reihe älterer Pentium 2,3 und 4 Mainboards - teilweise mit CPU und RAM - in die Hand gefallen. Da kam mir spontan eine Idee: das BIOS durch selbstgeschriebenen Code ersetzen. Ich habe mir den LinuxBIOS-code heruntergeladen und kurz mal durchgesehen. Danach schien die Sache machbar - auch wenn alles andere als trivial. Zugegeben: einen wirklichen Nutzen hat die Sache nicht, aber ich finge es überaus Interessant mal bei Null anzufangen und nicht nur fertige Systemrufe eines Betriebssystems zu nutzen. Von dem SuperI/O gibts nen ausführliches Datenblatt... Wie man diesen über die Sothbridge anspricht, ob da vorher noch andere Dinge initialisiert werden müssen, weiss ich noch nciht. Hat jemand schon mal was in der Richtung versucht? LinuxBIOS ist doch schon recht komplex. Mein erstes Ziel wäre z.B. eine LED am Parallelport blinken zu lassen...
Wie du schon richtig erkannt hast wird das Problem dadurch kompliziert das du halt erstmal die ganzen Chips initialisieren musst. Im schlimmsten Fall ja sogar noch Code in die CPU laden musst, auch wenn ich das bei deinen alten Teilen nicht glaube. Es waere also vernuenftiger das eigentliche Bios so zu lassen wie es ist. Vor allem weil du dann auch die Standard-Biosaufrufe aus DOS-Zeiten verwenden kannst. Allerdings kann ein Bios auch externe Biose enthalten. Ein Beispiel dafuer waere Ansteueungen fuer SCSI-Adapter. Die werden vom Bios nachdem es seine Initialisierungen beendet hat, gestartet. An der Stelle solltest du deinen Code einfuegen. Du koenntest dir auch eine Steckkarte basteln auf der ein EPROM mit so einem externen Bios draufkommt. Oder noch einfacher du nimmst irgendeine Netzwerkkarte und steckst dort ein EPROM in den freien Sockel. Der ist naemlich genau dafuer gedacht. Olaf
Conrad hat vor vielleicht zwei oder drei Jahren eine ISA-Karte ausverkauft, die mit einer BIOS-Erweiterung einen IDE-Controller für bis zu 4 Festplatten bis 137 GByte auch für uralte 486er enthielt. Auch ( bootfähihges?)CDROM ist damit anschließbar.
http://linuxbios.org/index.php/Welcome_to_LinuxBIOS http://www.openbios.info/Welcome_to_OpenBIOS http://freebios.sourceforge.net/ ("outdated") Das hier klingt interessant: "Fast boot times (3 seconds from power-on to Linux console)" wenn das wirklich funktioniert.
Ich habe sowas vor Jahren mit einem 386er-Mainboard mal gemacht. Allerdings war damals die Rechnerwelt noch ein wenig einfacher. Die Adressen der Ports (Parallel, RS232) waren fix und man musste nur die entsprechenden Register ansprechen. Ich hatte mir damals eine ISA-Karte mit Optokopplern und Transistoren fuer die digitalen I/Os und ADCs und DACs fuer die analogen I/Os gebastelt. Alles auf einer Prototypen-ISA-Karte mit Lochraster. Eine zweite ISA-Karte war mit Timerbausteinen und analogen Komparatoren ausgestattet. Diese erzeugte die noetigen Interrupts fuer einen einfachen Scheduler, um den Echtzeitanforderungen gerecht zu werden. DOS kam deswegen nicht in Frage. Das relativ einfache Programm war in Assembler geschrieben und wurde mit einem Eprom-Programmiergeraet direkt in die zwei BIOS-Eproms gebrannt. Ich weiss nicht mehr genau, welchen Assembler wir benutzt haben. Es war ein DOS-Editor. Allerdings musste der Output nachbearbeitet werden. Dazu hatten wir ein Pascal-Programm geschrieben. Dieses splittete auch die Binary fuer die beiden Eproms auf. War sozusagen eine Selbstbau-Low-Cost-SPS. Aktuelle Chipsaetze mit PCI sind ungleich schwerer handzuhaben. Dort muessen vorher viele Dinge initialisiert werden. Aus diesem Grund ist das Debugging auch sehr schwierig, da man fruehzeitig keine Moeglichkeit hat etwas auszugeben. Wir haben damals den Parallelport mit einem Oszi zum debuggen benutzt. Trotzdem glaube ich, dass es nicht unmoeglich ist, ein aktuelleres Mainboard zu benutzen. Der LinuxBIOS-Code ist ein guter Startpunkt. Sofern es von allen relevanten ICs Datenblaetter gibt - und die Intel-Chipsaetze sind sehr gut dokumentiert (SuperIO ist eine moeglicherweise andere Sache) - ist das Vorhaben machbar. Du solltest dir ausserdem noch das "IA-32 Intel® Architecture Software Developer’s Manual" von Intel runterladen. Das sind zwar drei PDFs von je 500 - 900 Seiten, aber darin findest du alle Befehle und Register beschrieben. Gerade die Befehle/ Register zur Einrichtung der Speicherverwaltung und anderen Dinge brauchst du sonst eher nicht, da das vom Betriebssystem erledigt wird. Dann noch viel Erfolg!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.