Skocz do zawartości
finish

Uruchomienie Wolfdale na VIA P4M900 - Biosmod

Rekomendowane odpowiedzi

Witam. W skrócie chciałbym opisać uruchomienie procesora z rdzeniem Wolfdale 45nm na
płycie Maxdaty P5VDC-TVM TE/S chipset P4M900 socket 775 robionej przez asusa dla tej firmy


mody były przeprowadzane wrzesień-październik 2014 (screen 1,2,5,6,7) i sierpień-wrzesień 2015 (screen 3,4)

Pierwszy screen opisuje możliwość przesunięcia instrukcji w celu zwolnienia miejsca dla instrukcji 8 bajt potrzebnych do zbootowania Wolfdale- 00 1706 0000 1D06 00h (wzorowane na biosie z Biostara P4M900M7 FE i pochodnych)
Conroe- 00 0F00 0000 1606 00h. Oczywiście można nie przesuwać tych instrukcji i zapisać na te od Conroe, ale nie będzie obsługi procesorów na rdzeniu Conroe 65nm.

Drugi screen opisuje przesunięte instrukcje i związane z tym połączenia innych modułów biosu.

Trzeci screen opisuje usunięcie instrukcji (moduł xgroup.bin), które powodowały brak przechodzenia przez POST testu ustawienia częstotliwości dla pamięci ram i tym samym przejścia do wykrycia podpiętych pod kontroler IDE urządzeń. Występowało to na modyfikowanych biosach Asusa i Maxdaty.

Czwarty screen dotyczy instrukcji w module xgroup.bin związanych z modułem _DMI.BIN, które powodowały uszkodzenie (bios z kodem dzielników od gigabyta) biosu podczas przechodzenia z bootstrapa i pobraniu manufaktury, ID biosu, płyty. Zostały zastąpione instrukcjami modułu xgroup.bin z biosu 1301.BIN płyty Asus P5V-VMSE-DH.

Piąty screen dotyczy skopiowania, zastąpienia części kodu Maxdaty kodem z biosu Gigabyte GA-VM900MC.

Szósty dotyczy umiejscowienia kodu dla mikrokodów, dzielników pamięci i programu wypakowującego moduły, którego można z powrotem zamienić, skopiować na oryginalny z oryginalnego biosu. W tym miejscu należy tylko wyzerować jeden bajt, jeśli się nie wraca do oryginalnego programu wypakowującego.

Siódmy opisuje ostatnią część modyfikacji, czyli powrót przez skopiowanie kodu z oryginalnego biosu do modyfikowanego, kod związany z clock generatorem i bootblock.

Na koniec modyfikacji trzeba komendą w CBROM wykasować mikrokody i sterownik do vga, następnie wgrać nowe moduły
CBROM.EXE bios.bin /nc_cpucode release
CBROM.EXE bios.bin /nc_cpucode ncpucode.bin ( podczas dodawania nowych mikrokodów, pliki
bios.bin i ncpucode.bin muszą być otworzone w edytorze szesnastkowym )
CBROM.EXE bios.bin /vga release
CBROM.EXE bios.bin /vga M64CRT09.ROM
z modyfikowanym awardext.rom i _DMI.BIN tak samo, jeśli się przeprowadza moda z obsługą conroe i wolfdale (przy wolfdale sam awardext.rom bez _DMI.BIN)

mod wykonany na Hex 4.23, IDA, Cbrom 1.82, ckcmos, modbin 2.04.03 ( modyfikacja modbinem kodu od 0000h-ffffh modułu system.bin-orginal.bin )

Procesor na tej płycie z tym biosem działa stabilnie, timingi z dzielnikami pamięci ustawiane są poprawnie, nie można ręcznie z bios konfigurować timing-ów pamięci, tylko dzielniki, w POST wyświetlane są niepoprawne wartości fsb, pamięci. Mnożnik połówkowy nie jest obsługiwany co widać na screenach z cpuZ, ale jest za to poprawny, wysoki przy niepołówkowej wartości, C1E function działa w połowie poprawnie, EIST trochę inaczej. No i oczywiście napięcia są obniżone do 1.05V. Starsze biosy obniżają mnożnik.

Płyty na chipsetach P4m890, P4m900, PT880 Pro/Ultra, PT890 z biosami AMI odpalają w większości procesory na rdzeniu wolfdale, ale z obniżonym mnożnikiem i napięciami, problemami z dmi itp. Jest oczywiście kilka tych płyt z nowszymi rewizjami mostków północnych, które obsługują poprawnie te procesory (fsb 266 max) jak Biostar, czy Asrock, ale jest ich mniej.

Od 2009 r do 2014 była przerwa, nic nie robiłem z modami. W tamtym roku mocno uderzyłem na 1 miesiąc, znów rok przerwy i w 2015 była próba odnalezienia tych dwóch błędów ze screen-ów 3,4. Jestem zadowolony z tego modu w połowie ze względu na to, że uwidaczniają się braki w wiedzy, jeśli chodzi o ustawienie programowo chociaż jednego Bitu na którymś z Vid-ów procesora (jeśli tak w ogóle można to zrobić, więc pozostaje tylko drutmod-Vmod), regulacja mnożnikiem, i oczywiście konfiguracja dzielników, timing-ów pamięci (no tutaj są już wyższe loty- producenci dostają specyfikację, kody źródłowe sterowników od intela w tym sterownik dla kontrolera pamięci dzięki któremu mogą wszystko ustawiać, konfigurować strapa, wytrzymałość kontrolera pamięci).

Co zauważyłem w procesorach conroe, wolfdale. Procesory z Costa Rici mają niższe temp. o 10 st.- 15st. niż procesory z Malezji. Celerony 420 z Costa Rici mogę trzymać na radiatorze bez wentylatora przy wyłączonym C1 (przy założeniu, że mostek płn nie ma wysokich temp) , na procesorach z Malezji musi być już większy radiator z wentylatorem (prawdopodobnie inne użyte materiały w produkcji rdzeni). Za to z Malezji kręcą się lepiej- np cel 420 powyżej 3,5 GHz, z Costa Rici max 3GHz.

post-152444-0-33851700-1443551455_thumb.png

post-152444-0-01010800-1443551663_thumb.png

post-152444-0-83136200-1443551883_thumb.png

post-152444-0-73630900-1443553079_thumb.png

post-152444-0-63704700-1443553112_thumb.png

post-152444-0-80385500-1443553405_thumb.png

post-152444-0-76265200-1443553417_thumb.png

post-152444-0-54393200-1443553549_thumb.png

post-152444-0-07923700-1443553576_thumb.png

Edytowane przez finish
  • Upvote 2

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jeszcze raz chciałbym umieścić poprawiony mod na biosie Maxdaty p5vdc-tvm-te. Poprzedni miał błędy związane ze zmianą timingów ( nie działał drugi bank z obsadzoną tylko jedną kością RAM, z obiema było w porządku ), spowodowane nieoryginalnym sterownikiem dla dzielników pamięci z biosu Gigabyta. No i oczywiście napięcie bootowania wynosiło 1.1V i występował błąd z obsługą połówkowego mnożnika dla procesorów wolfdale. Napięcie i wysoki mnożnik niepołówkowy prawidłowo jedynie ustawiał sterownik w windowsie- intelppm.sys.

Oparty mod (screen 3) na kodzie związanym z rejestrami MSR i instrukcją CPUID, biosy Gigabyta ga-vm900m rev 1.0.

W pierwotnej wersji ten kod miał realizowane zmiany w rejetrach MSR na instrukcjach logicznych, porównawczych  i krótkich skoków warunkowych ustawiających poszczególne bity w rejestrze flag. No taki kod wprowadzał trochę zamieszania, więc musiałem go skrócić do minimum i zastąpić instrukcje logiczne zwykłymi instrukcjami kopiującymi bezpośrednio wartość do rejestrów.

( W gigabyta- bios f5- moduł system.bin- zmiana wartości cmp ax, 660h na cmp ax, 670h wymuszała wyższe napięcie bootowania )

Odczyt przez CPUZ adresów rejestrów MSR i ich wartość  w EDX-EAX posłużył do umieszczenia w rejestrze al i ah bitów odpowiedzialnych za mnożnik i napięcie.

Nie będe się rozpisywał na temat MSR i CPUID, każdy może znaleźć w sieci ogrom na ten temat informacji. Dodam tylko, że są odpowiedzialne za konfiguracje opcji w bios, optymalizację poszczególnych funkcji procesora. Wchodzą w skład sterowników, ale prawdopodobnie jeszcze to nie sterowniki w całej okazałości.

Screen 5. Zmienione zostały wartości porównwacze z rejestrem EAX przy trzech instrukcjach cmp eax, 10660h na cmp eax, 10670h ( z wartością 70h brak obsługi celeronów jednordzeniowych na conroe ) wymuszając tym samym uruchomienie wolfdala na oryginalnym sterowniku dla dzielników pamięci- modyfikacja na nieskompresowanym kodzie w głównym pliku MD0401.bin.

Najprawdopodobniej mod związany z napięciami i mnożnikiem można przeprowadzić w jeszcze inny sposób.

Działa już wyższe napięcie bootowania, połówkowy mnożnik, timingi i ogólnie jest ok. Przy włączonej opcji Enhanced Intel SpeedStep spada mnożnik na wysoki niepołówkowy przy wyłączonej jest w porządku, w najnowszych biosach Asusa P5V-VM SE DH, P5VD2-VM działa w pełni. Błąd w wyświetlaniu mnożnika i fsb występuje w post ( procesory wolfdale z mnożnikiem połówkowym ) .

Mod wykonany na tym co wcześniej, doszedł fasm, cpuZ i rightmark clock, pdf- 64-ia-32-architectures-software-developer-system-programming-manual-325384-chapter 35.1, 35.2, 14.1, 14.3


Na końcu moda trzeba wgrać mikrokody i sterownik do vga, metodą jak z postu pierwszego.

No to tak, już zadowolony jestem z tego modu trochę więcej niż w połowie, ale patrząc na ogrom instrukcji i danych technicznych udostępnionych przez intela, chyba wolę już następnym razem wziąć beczke wina i wypić ją sam oczywiście w lesie, śpiąc z tydzień pod sosnami.

Pobrałem około kilkanaście pdf-ów, gdzie łącznie jest 20 tys stron, naliczyłem kolejne 20tys. Z układami i budową elektroniczną może być łącznie ze 100tys, także nie jest za dobrze.

 

 

post-152444-0-90889400-1488416657_thumb.png post-152444-0-71822900-1488826813_thumb.png

post-152444-0-11453700-1488826846_thumb.png post-152444-0-67795800-1488416707_thumb.png

post-152444-0-04723300-1488416720_thumb.png post-152444-0-08221600-1488416731_thumb.png                           

 

 

 

 

 

Edytowane przez finish
  • Upvote 1

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dodaje kolejną i ostatnią modyfikację Biosu AMI. Mod wykonany w kwietniu tego roku na biostar p4m900-m7-se ( z braku płyty i doświadczenia z Ami Bios posługiwałem się miernikiem do sprawdzenia napięcia bootowania na biosach od asus P5VX0404, ECS 070409S ) i ECS P4M890t-M VT8237R w listopadzie.

Jest to najprostszy mod, ale miałem problem z określeniem offsetu ( moduł System Bios ) na jaki wskazują instrukcje bezwarunkowe CALL FAR i JMP FAR ( bez tych instrukcji nie można przesuwać procedur i dopisywać kodu ).


Doszedłem do tego po analizie  PDF Pinczakka BIOS Disassembly Ninjutsu Uncovered- AMI BIOS początek sekcji 5.2.4, Listing 5.43

Okazało się, że występuje dodatkowe przesunięcie na segmentach 0f000h i 4000h ( moduł System Bios ) o 369h ( W modułach awarda System Bios i Xgroup.bin praktycznie tego nie ma ). Oczywiście sprawdzałem przez różnice dwóch najbliższych wartości, ale nie wychodziło mi to ( teraz wychodzi ).

Screen 1, 2 ( moduł System Bios-Single )  opisuje zmiany w instrukcjach porównawczych i ustawienie bitów w rejestrze dh na adresie MSR 198h- najwyższy mnożnik połówkowy i tylko napięcie nominalne ( brak rejestru dl-undervolt ). Można oczywiście przesunąć kod ( sprawdzałem to i działa ) i umieścić w pełni instrukcję z edx, ale nie ma takiej potrzeby.

3 Screen ( moduł System Bios-Single )  opisuje usunięte instrukcje, które powodowały sporo błędów w POST i bootstrapem na Celeronach E3xxx.

4 Screen. Widać po tym screenie, że segment 0F000h pozostaje, zmienia się jego zawartość po wypakowaniu modułów i umieszczeniu w pamięci ram. Dochodzi jeszcze segment 4000h.

5 Screen. Napięcie nominalne dla tego C2D to 1.1V ( trafiła się taka sztuka )

Błędy jakie występują, to zła wyświetlana wartość połówkowa mnożnika w bios ( W POST jest wszytko ok ).

Prawdopodobnie przetwornica na płycie nie chce ustawić 0 na VID7 ( trzeba łączyć na procesorze VID7 do VSS-masy, lub na stałe od strony socketu rezystor-kondensator obok przetwornicy ) przez co Celerony E3xxx uruchamiają się losowo ( Na C2D E7200 jest dobrze bez połączeń- VID7 jest na tej sztuce przyłączony do masy fabrycznie )

Mod wykonany na tym co zwykle czyli Hex, Fasm, Ida, MMtool 3.12, Uniflash 2.0b05 ( uniflash.exe -E bios.rom )

Na koniec trzeba dodać microcody od wolfdala ( starsze MMtool po zapisie uszkadzają sumę kontrolną )

Zadowolony jestem z płyty głównej. Mostki mają bardzo niskie temperatury, szczególnie południowy VT8237R pod obciążeniem.

 

 

 

1.PNG

2.PNG

3.PNG

4.PNG

9.PNG

Edytowane przez finish

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...