Also grundsätzlich kannst du alles was wir im Bios eingebaut haben auch nach dem booten setzen. Entweder per NF2 Tweaker oder halt per WCPRedit. Das Hauptproblem ist allerdings, das du keine komplett neuen Items im Bios hinzufügen kannst, wenn das Bios keine ITEM.bin hat. Bisher ist mir kein Bios mit ITEM.bin über den Weg gelaufen, das scheint erst weit nach Sockel A eingeführt worden zu sein. Es bleibt also nur das recyclen von nicht benötigten Optionen bzw. es gibt eigentlich im jedem Bios 5 oder 6 Optionen die ungenutzt rumliegen. Die kann man für neue Items verwenden. Folgendes muss erledigt werden, damit das alles klappt. Zuerst die Kurzfassung:
1. In der EN_CODE.bin neue Labels anlegen, damit das neue Item einen passenden Namen und Einstellungen bekommen kann
2. Mit Modbin die ungenutzten/gewünschten Items finden und "markieren"
3. Im Hexeditor das System Modul öffnen, den Item String (25 bytes lang) finden und so ändern das er auf die neuen Labels zeigt, die korrekte Anzahl an Einstellungen hat und in ein leeres Cmos Register schreibt
4. Bios mit CBRom wieder zusammenbauen (für einen ersten Test reicht System Modul und EN_CODE.bin) und Bios mit Modbin öffnen. Modbin sollte alle Items mit korrektem Label anzeigen, wenn der Mod geklappt hat.
5. Wenn das klappt, dann kann das Bios regulär zusammengebaut werden und sollte lauffähig sein.
Soweit so gut, aber: Die Settings lassen sich zwar bereits im Bios setzen, haben aber noch keinen Effekt. Sprich Einstellungen verändern schreibt zwar in ein Cmos Register, aber wir brauchen noch etwas, das das Register ausliest und uns die gewünschte Einstellung im Register des Ram Controllers setzt. Daraus folgt:
6. ISA Option Rom in Assembler programmieren. Das Option Rom wird bei jedem Booten automatisch ausgeführt und manipuliert dann die gewünschten Register. Das Option Rom wird später einfach als letztes Modul mit CBrom ins Bios eingebaut.
Generell macht das Rom nun folgendes. Es wird bei jedem Start ausgeführt, liest nacheinander alle durch die Items gesetzten Cmos Register aus, prüft den im Cmos Register enthaltenen Wert und schreibt dann basierend darauf einen Wert in ein bestimmtes PCI Register. Ich habs bei mir generell so gemacht, das als Standardwert "AUTO" im Bios gesetzt ist. Wenn das Option Rom "AUTO" (00h) erkennt, dann überspringt es die (Unter-)Schleife und der Standardwert des Boards bleibt erhalten.
-------
Bleibt nun die Frage wie das mit der EN_CODE.bin funktioniert...
Das habe ich im Bot bereits niedergeschrieben und findet sich hier:
A7N8X-E Deluxe as an alternative for socket 462 - Page 9 - Mainboards - HWBOT Community Forums
Wenn du dir das Leben leichter machen möchtest, kannst du natürlich einfach aus meinem Asus Bios oder dem Abit Bios von Infrared die entsprechenden Teile der EN_CODE.bin verwenden. Du musst nur aufpassen das die Offsets für die einzelnen Labels passen bzw. die ggf. anpassen. Wenn du die Item Strings aus dem System Modul benötigst, bei mir liegen die grob bei Offset 10365h im System Modul bzw. sehen so aus:
Code:
Label von DriveStrength und Slewrate auf 02 0B und 04 0B:
10333h 0000 020B 0000 F000 75F0 0003 0B00 000F 0004 0000 0000 0000 00 Drive Strength
1034ch 0000 040B 0000 0F00 750F 0005 0B00 000F 0024 0000 0000 0000 00 Slewrate
Trc (Row Cycle Time)
* 9 bis 31 auswählbar auf LP NF2
* mask auf 1F -> 32 settings
* Cmos register -> 76h
10365h 0000 000B 0000 1F00 761F 0001 0B00 001F 0044 0000 0000 0000 00 Trc
Trfc (Row refresh cycle time)
* 9 bis 31 auswählbar auf LP NF2
* mask auf 1F -> 32 settings
* Cmos register -> 77h
1037Eh 0000 060B 0000 1F00 771F 0007 0B00 001F 0064 0000 0000 0000 00 Trfc
Tref (Refresh interval)
* mask auf 19 -> 26 settings
* Cmos register -> 78h
10397h 0000 080B 0000 1F00 781A 0009 0B00 0019 0084 0000 0000 0000 00 Tref
EN_CODE.bin group map:
1. T(rc)
3. Drive Strength
5. Slewrate
7. T(rfc)
9. T(ref)