Biosprogrammerare & AM3 MITX
Hejsan Sweclockers!
Jag tänkte dela med mig av en historia samt ett hembygge som ni kanske finner intressant/informativt!
Backstory:
Jag har länge letat efter ett MITX moderkort för en miniserver/spelmaskin att ha i vardagsrummet. Storlek var ett bekymmer och samma med ljudnivå, men jag lyckades få min flickvän att mer och mer acceptera tanken att ha ett litet media/spelcenter i vår lilla lägenhet. En dag då jag sökte efter billiga MITX på eBay så hittade jag ett billigt Asus M4A88T-I Deluxe. AM3 drömmen! Billiga 6kärninga processorer för severtjänster, mer än nog för att driva runt Sims 3 åt tjejen! Kunde det bli bättre?!
Dock såldes den som "for parts or not working" så jag kontaktade säljaren för att höra exakt vad han menade med det. Han förklarade att efter ett byte av processorer samt en nyinstallering av operativsystemet så slutade moderkortet fungera, och postade "USB device over current status detected will shut down in 15 seconds". Det kändes lite som ett BIOSfel och troligtvis/förhoppningsvis något som gick att lösa.
Första försöket:
Moderkortet kom med 2x2 GB DDR3 och till den kombinationen tillkom en vacker liten Athlon II X3 455 inköpt från Sweclockers (Tack Rasmusen98! ). Vid första booten klagade moderkortet på "usb over current status detected" och stängde automatiskt ner sig. Precis samma som säljaren hade haft problem med. Efter lite ytterligare efterforskning online så hittade jag ett antal personer som hade fått problem med nyare BIOS på liknande moderkort, så jag bestämde mig för att testa nedgradera en version eller två. Efter 3 nedgraderingar via Asus EZ-flash, så fick jag och min kollega (som jag nu bestämt mig att involvera) moderkortet att posta korrekt och komma förbi "over current"-problemet. Då använde vi ett bios från 2010, (0501).
Vi bestämde oss hastigt och glädjefyllt för att även pröva med 0801 eftersom vi hoppade över denna och gick direkt till 0501, för att se om det gick eller inte. Asus EZ-flash krashar såklart mitt i flashen. CMOS reset + startar igen efter lite dröjsmål. Vi försöker få den att köra igenom en ytterligare flash; krashar. Efter det vägrade moderkortet boota även efter resets. BIOS var helt klart f*¤ckat och EZ-flash kunde inte hjälpa oss längre. Fläkten startade, ingen statuslampa förutom strömindikatorn tändes. What to do?
Alternativen var att beställa ett nytt chip från eBay eller att programmera om BIOSchippet vi hade på något sätt. Eftersom ett chip kostade 100 kr, plus att frakten kan ta hur lång tid den vill (tack svenska jävla posten) så bestämde vi oss för att bygga en BIOS-programmerare.
Bygget:
Vi behövde ett sätt att prata med bioschippet och helst utan att involvera moderkortet. Efter lite googling med mera så hittade vi en sida som hjälpte en del, där de beskrev en LPT till SPI bioschipslösning:
http://rayer.g6.cz/elektro/spipgm.htm
På sidan ovan fanns det ett nice kretsschema på hur man kunde bygga en, sen förklarades det också ganska fint hur den fungerar Det fanns också redo programvara att använda för programmeringen. Programvaran heter spipgm och den kan köras i MS-DOS (de flesta vi såg på nätet använde MS-DOS).
Programmet fungerande sisådär i vårt fall vilket vi märkte i efterhand, men vi byggde i alla fall klart kretsen enligt instruktionerna och den fungerade klanderfritt, om lite långsamt. Det enda i bygget som vi skippade var den polariserade kondensatorn, då vi ansåg att den var 100% nödvändig då till för att hålla spänningen på 3.3V mer "stabil", vilket kan vara ett problem om spänningskällan är mindre kvalitativ. Vi använde oss av en spänningskub så det var inte ett problem för oss.
Programmeringen:
Chippet vi hade till hand var ett MX25L1605DPI. Vi lyckades initiellt läsa från chippet, samt skapa dumps relativt felfritt. Då det kom till programmering av chippet så blev det snabbt väldigt komplicerat. Först var det ett problem att datorn skrev "för fort" till chippet, så att det table flippade och gav upp. Vi fick 512 hex-tecken bioskod på rätt plats, sen så fick vi en full rad av 1'or och efter det ingenting. Efter otroligt mycket tjorvande med MS-DOS, laboration med delay kommandon som gjorde att det tog hur länge som helst, andra extra steg med mera så bestämde vi oss att det bör finnas någon bättre kombination av operativsystem och programvara att leka med. Anledningen till varför vi upplevde MS-DOS bristfälligt var då för att MS-DOS behöver att en DPMI-server körs innan för att tillhandahålla den funktionalitet spipgm kräver. Se:
http://en.wikipedia.org/wiki/DOS_Protected_Mode_Interface
http://homer.rice.edu/~sandmann/cwsdpmi/
Vi bootade systemrescuecd på datorn istället för MS-DOS för att snabbspola från 1998 fram till 2014.
Senaste versionen av flashrom tankades hem, packades upp och kompilerades med "make" kommandot. För er som kan med systemrescuecd och ifrågasätter varför vi inte bara använde flashrom som finns med, så var det för att den saknade programmeraren rayer_spi. Det vi sen enkelt gjorde i flashrom finns beskrivet nedan, samt en länk till det:
Kör flashrom med endast programmerare:
flashrom -p rayer_spi
Detta ger oss informationen att vi har fått kontakt med hårdvaran, då den skriver ut att vi har någon av 3 olika minneschip (listade i output). I de följande kommandona har vi rätt minneschip specificerat med hjälp av "-c"-flaggan.
*kommando för att göra en dump*
#flashrom -p rayer_spi -c X25L1605D/MX25L1608D -r dumpname
*kommando att programmera nytt från fil*
#flashrom -p rayer_spi -c X25L1605D/MX25L1608D -w filename
Flashroms manual med fler detaljer:
http://linux.die.net/man/8/flashrom
Slutresultat:
Efter programmeringen gjorde vi en ytterligare dump bara för att säkerställa att det stämde med biosfilen. Hexdump på både dumpfilen och på original-bios, därefter diff-kommandot på dessa två filer.
Hela härligheten tog bara 4 minuter och 14 sekunder, detta inkluderar rensning av hela chippet, programmering och verifiering.
Efter första försöket så bootade och postade moderkortet normalt, utan problem med over current! Vi försökte/ville dock inte testa oss på nyare BIOS. Det blir nog till ett senare projekt, efter vi kollar upp om vi lyckas låsa upp några kärnor/cache från 455'an!
Mer information angående biosprogrammeraren/nyare revisioner kan komma att postas, samt en status på MITX-projektet
Här är en liten film som visar vad vi har gjort, till en viss del..!
/Rickard & Henrik