How is data in a BIOS organized?

Only for programmers and BIOS gurus with technical questions.
Post Reply
alexander55
New visitors - please read the rules.
Posts: 3
Joined: Wed Mar 31, 2010 8:03 pm

I have a dead ACER T180 mobo. The BIOS is possibly corrupt (it was never flashed however). I purchased a Nano Bios programmer and read the contents of the ROM. When I compared this with a BIOS upgrade from Acer i found that the the ugrade contained no data up to address 10000x , while in the original ROM this first part did contain data. In this first part the make and model of the PC, file name of the BIN file, version info etc. could be found.
My question(s): can anyone tell me where data is stored in a BIOS? Is there a guide describing the ins and outs.
Can I just copy this address range (00000x-1FFFF) from the original ROM file to the upgrade file? Or does this mess up a checksum?

thanks, Alex
sharky
BIOS Newbie
Posts: 27
Joined: Wed Oct 07, 2009 2:29 pm

alexander55 wrote:My question(s): can anyone tell me where data is stored in a BIOS? Is there a guide describing the ins and outs.
Can I just copy this address range (00000x-1FFFF) from the original ROM file to the upgrade file? Or does this mess up a checksum?
I don't know of any guide, and every BIOS does this in a different way (no standard exists). You could try the merge approach you suggested, but there is no guarantee it will work.

I suggest to find a download of the exact BIOS version you already have, and then compare the two. The stuff at the beginning indeed looks like machine configuration data, and so you can ignore that region for the comparison. If your BIOS is really corrupt, only a few bits should be different in the rest of the chip. If whole regions differ, you proably have either another data region or the downloaded and on-chip BIOS versions differ and thus any analysis is pointless.

In practice, most "corrupt BIOS" problems are broken hardware instead which causes the BIOS to hang and then people assume that it is the fault of the BIOS.
alexander55
New visitors - please read the rules.
Posts: 3
Joined: Wed Mar 31, 2010 8:03 pm

thanks Sharky,

I found out that the first part of the BIOS is used to store the DMI pool data, it is written every time the machine boots. Meanwhile i have flashed the latest bios version using the external programmer. With this new flashROM fitted, the Acer boots up again and functions normally. However this "repair" lasted only a month or so. The machine now stalls at verifiing "DMI pool data" . Apparently something is screwing up the flashROM. Afik there are no viruses around who would do this. Maybe the flashROM is worn-out (they do last long but not forever).

Alex
sharky
BIOS Newbie
Posts: 27
Joined: Wed Oct 07, 2009 2:29 pm

alexander55 wrote:thanks Sharky
You're welcome.
alexander55 wrote:Apparently something is screwing up the flashROM. Afik there are no viruses around who would do this. Maybe the flashROM is worn-out (they do last long but not forever).
A few really old viruses erased the flash chip (CIH virus), and in theory it would be possible for a virus to corrupt only a part of the flash chip, but I don't think this happens here.
Sometimes even brand new flash chips have some stuck bits, and it is entirely possible that this happened to you. Depending on the board, there may be a jumper which causes the BIOS to reset ESCD before reading it. That could help. If you decide to reflash with an external programmer again, please make a backup of the current flash chip contents. It will be interesting to compare it with the BIOS image you flashed back when you recovered the first time. If only the ESCD region is changed, then there is probably some ESCD corruption. If other areas are changed and only single bits changed there, the flash chip is probably too flaky to be used.

Side note: If you don't know how to analyze the BIOS chip changes in detail, tell me and I can take a look. I've been active in various flash chip projects and this looks like a fun analysis.
Post Reply