» »

mod BIOSa - A64 mem timingi

mod BIOSa - A64 mem timingi

VASkO ::

uporabna zadeva za vse tiste, ki imate plate za A64 in taksen BIOS, da ne morete stelati vseh, ampak res cisto vseh nastavitev za RAM kontroler. no, za to obstaja ze softwerska resitev, A64Tweaker ponuja nastavljanje vseh mogocih zakasnitev in ostalih nastavitev. problem je, ce uporabljate linux ali ker drugi OS, kjer takega programa ni. ne preostane nic drugo, kot pa patchati vas obstojeci BIOS z nastavitvami, ki jih zelite - problem je le, da treba poprej vedeti, kaj je stabilno. no, za tiste, ki se hocete igrati.

patch koda v zbirnem jeziku:


.386

PATCH_PCI macro pcibus,reg_mask,reg_data

mov eax,pcibus
mov ebx,reg_data
mov dx,address
out dx,eax
mov dx,data
in eax,dx
and eax,reg_mask
or eax,ebx
out dx,eax

endm

CSEG SEGMENT PARA PUBLIC USE16 'CODE'
ASSUME CS:CSEG
ORG 0

;;Expansion rom header
DB 55h ;;Rom signature byte 1
DB 0AAh ;;Rom signature byte 2
DB 01h ;;512 bytes
call INIT ;;jump to initialization
retf ;;return far to main bios routine (original.tmp)

address equ 0cf8h ;address
data equ 0cfch ;data

;;patch data - trije podatki za en patch. podatke najdete v tictacovi kodi
bpm_7x equ 00E000000h ;bpm_7x - reg data
bpm_data equ 0F1FFFFFFh ;bpm_data - regmask
dcl_add equ 08000C290h ;PCI bus device function

;;program start
ORG 100h

INIT PROC NEAR
pushad

PATCH_PCI dcl_add,bpm_data,bpm_7x ;patch argumenti: vodilo, data, nastavitev
; PATCH_PCI podatek1,podatek2,podatek3 itd...

popad
retn ;return to this rom's header
INIT ENDP

ORG 200h ;datoteka mora bi dolga 512 bytov
CSEG ENDS
END


To je koda, s katero sem patchal svoj BIOS na gigabyte plati, ker le ta nima Bypass Max opcije, ki jo pa moram nastaviti na 7x namesto 4x, ker drugace se mi RAMi zazgejo - performance dropa pa ni.
Svoje patche (makroji) pisete enega za drugim, makro vsebuje pa tri argumente. Zadeva se prevede z MASM assemblerjem ML.exe, jaz sem uporabil verzijo 6.14 (zastonj na netu), rabi se se linker (tudi na netu zastonj v5.60.xx).
Ukaz: ML /AT vasa_koda.asm /link /TINY

sedaj dobite datoteko *.com, kateri je treba le se spremeniti checksum na 00h. Za preverjanje checksuma lahko uporabite romchck.exe, ki ga najdete tukaj. ta vam napise, katero vrednost je treba dodati v HEX editorju, da bo checksum datoteke 00h. v hex-editoru potem dodate to vrednost, najboljse, da na koncu datoteke, kjer bi morale biti same nicle. enostavno prepisete nicle s predlagano vrednostjo in shranite datoteko ter ji se enkrat preverite checksum. sedaj bi moral biti 00h. datoteki spremeni koncnico v .rom.

sedaj je patch pripravljen na vstavljanje v bios sliko vase maticne plosce, to storite s programom cbrom215.exe, ki je tudi v paketu z checksum kalkulatorjem. treba vstaviti kot ISA rom, komanda: cbrom215 bios_plate.bin /isa vas_patch.rom.

dodatne informacije potrebne za lociranje pravih registrov in nastavljanje zeljenih nastavitev pa najdete v tictac-ovem postu tukaj. Mislim, da ni prevec zakomplicirano. Za vsak patch, ki ga rabite, pac poiscete ven tri podatke, ki jih vnesete pri klicu makroja kot argumente in to je to.

Aja, vso delo na lastno odgovornost. Ce so pa kaksna vprasanja, pa kar.

PrimozR ::

A pa se da na podoben način modat tut max. voltaže in dodajati FSB:RAM delilnike?

VASkO ::

FSB:RAM delilnik se da, ce pogledas tictacovo kodo, bos videl da so noter vrednosti registrov za 100, 133, 166 in 200mhz. manjka 150 in 183 delilnik, mislim, da bi se v AMDjevih pdf-ih moralo najt vrednosti registrov za ta dva delilnika. lahko pa isces to tudi z wpcreditom in pa a64 tweakerom. naslov registra, ki nastavlja delilnike poznas in potem z 164tweakerom spremenis delilnik na zeljenega in z wpcreditom pogledas, kateri registri spremenijo vrednost itd...

spreminjat se da vse, kaj je nek register v procesorju ali cipsetu. s tem spreminjas procesorjeve registre, v tem primeru registre pomnilniskega krmilnika. ampak fora ni v tem, da si to dodas v BIOS meni in pol tam izbiras. to ti skompajlas in vkljucis v bios datoteko, ki jo potem flashas in je ta nastavitev od bootup-a dalje nastavljena.

jaz cakam se, da kdo najde tocne naslove za memory interleave, ker ene plate tega nimajo (tudi moja ne).

Zgodovina sprememb…

  • spremenil: VASkO ()

PrimozR ::

Sej zato sm pa prašu ker se mi je zdel da se da :D


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[ASM] Pomoč, ne najdem napake

Oddelek: Programiranje
51099 (975) c0dehunter
»

[nasm] scanf

Oddelek: Programiranje
272901 (2628) Brane2
»

Kako pravilno naviti samo procesor

Oddelek: Navijanje
483414 (2848) WamPIRe-
»

PIC 16f84A - utripanje

Oddelek: Elektrotehnika in elektronika
222240 (2040) ql000
»

problem v zbirniku

Oddelek: Programiranje
6990 (888) BigWhale

Več podobnih tem