Уважаемый Sarinn! Перенёс сюда сделанный вами русский перевод статьи "Art of BIOS flashing" и откатил статью к прежнему состоянию: это, всё же, английский вариант статьи. Ваш перевод при желании можете скомбинировать с исходной статьёй (желательно) либо создать новую. DmitTrix 22:18, 1 апреля 2007 (MSD)
ЧАСТЬ ПЕРВАЯ. Посвещается тем, кому лень читать и тем кто просто хочет это сделать КАК МОЖНО БЫСТРЕЕ.
ПРИМЕЧАНИЕ: если вам интересна эта статья то, вам необходимо знать и понимать такие вещи как:
- что такое BIOS, для чего он предназначен и какие типы BIOS-ов существуют?
- что такое интерфейс коммандной строки DOS и как им пользоваться?
- и возможно некоторую прочую ерунду...
И напоследок, вы должны уметь находить необходимую/отсутствующую информацию в Сети — эта статья не поможет вам в этом вопросе. Так, вместо начала с азов, давайте начнем с другой строны вопроса - с освобождения от наиболее типичных мифов и путаницы.
- Миф #1: Для перепрограммирования чипа FLASH memory (который содержит код BIOS) необходимо использовать только программное обеспечение (т.е. прошивающую программу) от производителя BIOS (для примера, использовать AwdFlash для AwardBIOS, или AMIFlash для AMIBIOS).
Это неверно, но многие люди верят в этот миф — отчасти потому, что имеется много предупреждений на сайтах производителей (особенно для тех людей для кого English является неродным языком!). Вы можете спросить: "Почему это неверно?". Если вы хотите узнать ответ – не ленитесь и прочтите эту часть статьи и следующую!
- Миф #2: Возможно использвать так называемый метод Hot Swap только с абсолютно одинаковыми материнскими платами (один чипсет, один производитель, и т.д.)
Это неверно, и это вторая наиболее часто встречающаяся ошибка. Она появляется из-за нехватки знаний о том как разные flash чипы работают, и эта разница действительно может вызывать некоторые ограничения на типы материских плат которые могут быть использованы для пере(программирования) специфических чипов flash памяти. Тем не менее, если вам нужно перепрограммировать flash чип с (мертвой) материнской платы, и у вас имеется такая же рабочая плата — это может стать преимуществом.
Flashers and their usage
A flasher is a piece of software for flash memory chips (re)programming (process also commonly known as (re)flasing). The most popular "universal" flashers are AwdFlash, AMIFlash and UniFlash; other flashers are mostly special ones for specific brands, like aFlash for ASUS motherboards or special flashers for Intel boards (note that universal flashers may not work with these boards). In this article we'll concentrate only on the mentioned three "universal" flashers.
As most DOS programs, flashers can be controlled by command line switches. As there is plenty of information about them in the Net, so only the essential ones will be described here.
| ATTENTION! Running a flasher WITHOUT specifying any swithes (i.e. using the default ones) might damage the BIOS, even though you had no intention to reflash it and were just wondering how it works and/or just wanted to backup the current version of your BIOS. Although it's a very rare case and is related usually to some specific versions of AMIFlash, it has happened personally to the author, and not just once! 8-)
Executing some special utilities (like DMICFG), which are sometimes included on CD's that came with a motherboard (for "fine-tuning" BIOS), often causes the same problem — damages the BIOS, even when you had no intention to reflash the flash chip, but just wanted to have a look on what a utility does.
Наиболее популярный прошивальщик - но не самый лучший. Используется со следующими ключами:
AWDFLASH имя_файла_bios /py/sn/f/r/cd/cp
Ключи укажут AwdFlash делать следующие вещи:
- /py — перепрограммировать flash память содержимым имя_файла_bios безо всяких лишних подтверждений (здесь p означает Program (Программировать), y значит Yes (Да));
- /sn — не сохранять старый BIOS (Save=No);
- /f — не проверять BIOS в файле имя_файла_bios на совместимость с данной материнской платой и на то BIOS-ли это ваще (Force reprogramming);
- /r — перезагрузить компьютер после завершения "прошивания" (Reboot). Если вам это не нужно — не используйте этот ключ;
- /cd и /cp — очищать некоторые данные настройки. Крайне рекомендуется использовать эти ключи (Clear DMI data, Clear PNP data). Также рекомендуется добавить еще один ключик — /cc, для автоматического Clear CMOS (сброса содержимого CMOS-памяти).
Not so popular as AwdFlash, but actually the best one (despite even the problems with some versions when being executed without any switches — see the warning above). Should be used it with the following switches:
AMIFLASH bios_file /b /n /-o /-c /-d /-r /v /-i /-k /-e /-g
To backup your current BIOS, run AMIFlash as follows (NOTE: there is no SPACE character after the /s switch):
AMIFLASH /b /n /-o /-c /-d /-r /v /-i /-k /-e /-g /sbackup_file
If you're going to reprogram a flash chip(s) more then twice — don't be lazy and prepare a .BAT file on your DOS system disk(ette), with a string like this:
A:\UTILS\AMIFLASH.EXE %1 /b /n /-o /-c /-d /-r /v /-i /-k /-e /-g
UniFlash is a much more advanced flasher (compared to AwdFlash and AMIFlash) and requires some major knowledge/experience from the user, so it will not be described in this article.
Особенности прошивания BIOS материнских плат ASUS
Для перепрограммирования flash чипов на ASUS-овских материнских платах НЕЛЬЗЯ использовать "Стандартные" прошивающие программы, потому что _ВСЕ_ BIOS-ы ASUS (начиная с древних Pentium-1) блокируются обычными методами программирования. Для этого типа материнских плат, мы должны использовать их собственные, ASUS-овские утилиты. Для старых плат (486/P-1) это будет - PFLASH, и для новых это будет AFLASH (даже если во многих случаях AFLASH также работает и на старых платах). Для современных плат вам понадобится использвать windows-based утилиты. In the case of PFLASH/AFLASH the statement "you will need to" is not fully correct because:
- First, they are very comfortable to use, easy to understand, quite universal, don't ask a hundreds of questions and successfully flash "everything on their way".
- Second, AMIFLASH is still quite useful, omitting the mistake at the end of the flashing process, which actually caused not by AMIFLASH, but by DOS4GW.
In any case, all happy owners of ASUS motherboards should be extra careful while reprogramming(flashing) their boards, because the resurrection process in case of the BIOS file corruption should be difficult. And even if you think you are an advanced user with a great experience - I will repeat: Be careful! ASUS engineers use very extraordinary BIOS protection techniques in their masterpieces, and this “other side of the medal” can make your resurrection process of corrupted BIOS file (i.e. bringing your motherboard back to life) very difficult. Your motherboard may _seem_ to be dead ("00" on POST card display), Flash memory chip - behave similar way (example: appears to be “dead” during your flashing attempts on the other then ASUS boards), but really both of them are in good, absolutely working order and can be proved by setting them into another, exact similar, but working ASUS board. If you are fighting (fought) with "bugs" like this - you can read the part of the article about LPC interface (ASUS use this interface since ages ago comparing to other companies who have started using it lately).
P.s. Similar things can happen with some (as a rule-well known) other brands (necessity to use branded flashers). For example - some ABIT motherboards have some "fine print" tricks during reprogramming their flash memory chips. UNIFLASH on ABIT gives you a warning that it "does not like" this brand of motherboards.
MAJOR ISSUES (POSSIBLE ERRORS).
File size does not match with flash memory chip capacity.
-Common problem. Most likely caused by the flasher itself because the manufacturers sometimes use different capacity flash memory chips in different motherboard revisions. Example: One of the older revisions of some certain motherboard model have been equipped with 1Mbit flash memory chips while younger ones were equipped with 2Mbit chips. In quite rarely occurrence, the manufacturer denies production of those motherboards with different flash chips capacities – and that means, you have a “fake” motherboard (i.e. during motherboard cloning process manufacturer uses cheaper flash memory modules of lager capacities - 4Mbit instead of 2Mbit).
Flasher for some unknown reasons "does not like" BIOS and refuses to reprogram it, saying that BIOS file is not BIOS at all, or BIOS for different model (brand) of the motherboard.
-Even more common issue, but with above "secret" keys you won’t feel like somebody just "flipped" or "served" you and you should not have any problems with flashing your chip. Just please, read datasheets!
Flasher cannot recognize flash memory chip type and refuses to flash it.
-This one is common issue as well, and there could be a few reasons for that:
- there is a flash memory protection (most flashers ask you to check this exactly). The ancient boards had jumper flash protection, newer ones have it as an option in BIOS Setup, similar to BIOS FLASH PROTECTION = ENABLE/DISABLE.
- this particular version of flasher does not know this particular type of flash memory chip. Rare occasion, but it happens, usually when you are trying to flash some stone age flash chip with newer version of flasher or counter wise.
- the flash memory chip inserted due to a hot swapping is not supported by this motherboard - this issue you can read later in the part of the article dedicated to different interfaces like FWH/LPC...
- just dead flash chip - make sure you double checked that you have inserted it in a right way ;-)
- a flash chip is not actually a flash chip, but one-time programming SPROM or Ultra Violet EPROM (UVEPROM, with small transparent window). Applies only to a stone age motherboards (the ones before Pentium 1) and it is possible to recognize those by the chip body marks (they would start like 27xxx).
Everything went fine, no visible errors, but silence...
For recovering in this case, you will need to read other chapters of the article.
ЧАСТЬ ВТОРАЯ. Как все работает. Эта часть будет наиболее интересна тем кто не читал первую внимательно и теперь нуждается в восстановлении (системы).
Учитывая тот факт что эта глава предназначена не для описания процесса обновления рабочего BIOS-а, а для аварийного его восстановления, давайте начнем с начала и рассмотрим какие варианты есть у нас.
Вариант 1. ПЕРЕПРОГРАММИРОВАНИЕ ЧИПА ИСПОЛЬЗУЯ ПРОГРАММАТОР
Просто и ясно - вам потребуется разбить свою копилку (хрю-хрю), вытащить чип вашего BIOS, взять флоппи диск, бутылку пива (пол-сотни литров оного звучит лучше) и направиться в сторону дома одного из ваших приятелей-специалистов ("биос-экспертов"). Если ваш BIOS-чип припаян, то вам придется разбить еще одну копилку и взять системную плату с собой. Вы можете так же попросить вашего знакомого специалиста припаять "кроватку" на плату для чипа BIOS для облегчения будущих экспериментов.
Вариант 2. HOT-SWAP
Вам понадобится другая РАБОЧАЯ материнская плата. Как я кпоминал ранее, это рабочая системная плата необязательно должна иметь ни тот же чипсет, ни аналогичный brand name. Что в действительности более важно, это то, что написано на самом чипе (BIOS). Имеется две основных "совместимых" группы:
- "Обычные" - ВСЕ "прямоугольные" flash чипы в корпусе DIP32, для примера: 28XXXX, 29XXXX, 39XXXX, some 49XXXX
- Хабовые ("HUB") чипы (все хабовые чипы имеют "квадратный" PLCC32 корпус), большинство их маркированы так: 49XXXX и "родные" INTEL-овские чипы как 82802XX Согласно ранее заявленной информации, если наша recovery плата имеет совместимый тип чипа BIOS flash с такой же или большей емкостью - все должно сработать чудесно.
Призовите свое воображение. Наиболее важная вещь - во время этого процесса не ронять мелаллические предметы или проливать какую-либо жидкость (на плату). Для чипов DIP32 – все просто. Обычно рекомендуется привязать “родной” чип леской или другим непроводящим материалом для легкого его выдергивания из "кроватки" перед репрограммированием. Как до меня, то я использую 9-жильный шлейф (от старой COM-портовой "косички", для примера) и располагаю его под чипом так что будет комфортабельно и безопасно выдернуть шлейф без его разрыва и без повреждения чипа и "кроватки".
.....................PICTURE SPOT......DIP32 PLIERS..................
As for the square chips aka PLCC32 its a bit harder. One can try using fishing line as well or any non conductive type of threads or if you have a good access point and hands are stright - just use a needle, slowly lifting the chip from access corners in chipbed. If you, however, reprogram the chips everyday or just want to be 100% sure - glue something like a piece of plastic or even melt some glue from the glue-gun to the back of the chip. This would allow you to pull chip out. You can also just buy PLCC32 extractor. Anyway it is your choice.
....................picture spot ....extractor pliers for PLCC32......
Option 3 USING FLOPPY DISK (for modern motherboards – HDD or CD-ROM)
In the case when PC did not “die” completely and is trying to access a floppy disk and/or giving you a "BIOS CHECKSUM ERROR" message during the boot process - it is possible to recover your BIOS without making a trip to a techie guy.
- ATTENTION!: If you have an AGP/PCI video card you may not be able to see this error message (bios checksum error) on the ancient (P I-P III computers). One will need to have an ISA video card installed - for computers that have an ISA slot, and for not having this slot - one may be able to use PCI video card. Newertheless, in many modern computers BOOTBLOCK, actually telling us about this error, supports an AGP video cards.
- IN ADDITION: If you have a POST card (for example, a one built in the motherboard), then "BIOS CHECKSUM ERROR" can be traced by HEX code "41" at the beginning of POST procedure (if you cannot determine the "beginning", then I can just tell you that it should be around 5th -6th instruction code of those you could see on POST card). Code "41" in AWARD - is a call for floppy drive (an attempt to boot from floppy), in the case of AMI BIOS, hex codes F0-FE will mean that AMI BIOS attempts to boot from floppy drive.
Mostly all you need is a clean bootable diskette (i.e. only: IO.SYS; MSDOS.SYS; COMMAND.COM), a copy of flasher program(AWDFLASH.EXE) and of course BIOS file (bios.bin), plus AUTOEXEC.BAT with appropriate string inside:
- for AWARD:
awdflash bios.bin /cd/cp/py/sn/f/r
- for AMI:
amiflash amibios.rom /b /n /-o /-c /-d /-r /v /-i /-k /-e /-g
I do not recommend you to use your own names for bios files and flashers (use only above mentioned "official" names instead) - Why, you will ask?, because some BIOS-es (BOOTBLOCKs) may just ignore such disk (name), giving you same old error about NON SYSTEM DISK/ DISK DRIVE NOT READY.
There is no "standard" procedure for BIOS recovery from floppy drive. A plenty of brand name computers like INTEL, HP, COMPAQ, DELL, IBM, FUJITSU and some others could be restored with special floppy disk, an image of what you can download from their brand name website along with detailed description file.
It depends on age of the certain motherboard/BIOS (AWARD/AMI), but it is possible that you will need ONLY flasher program and BIOS file (disk should not contain any system files), or even nothing at all, but only this file downloaded from brand name website, because flasher and BIOS would be built in to that file. To be short - there are some variations and in addition to a possibility of hardware/BOOTBLOCK corruption, the BIOS recovery with this (floppy) method should not be so reliable and promising (statistics proves it),but it is the best method to start BIOS recovery with - who knows, maybe you will be the lucky one!
CHAPTER3. For those who still wants to know. The Basics.
Well if you made it till this chapter then let me begin from basics, which i have omitted because many people are just skipping it 8),with preference to start reading from the middle or even last topics.
A LITLLE BIT OF CHIP OPERATION PRINCIPALS
The "regular" flash chip has following signals:
- 8 DATA lines DQ0-DQ7
- 17 or 18 ADDRESS lines A00-A16/A17 (depends on chip capacity: 1Mbit- has 17 lines, 2Mbit has 18 lines.
- CE# chip enable or chip select, this signal allows to work with chip (think of it as turn on button).
- OE# output enable or RE, read enable, this signal allows us to read from data byte.
- WE# write enable or WE, allows us to write data byte.
To be short, it is relatively simple to understand even you dont possess degree in electronics.
Just from the above writen text we can see that 8bit databus (think of a databus as highway with many lanes in this case we have 8 lanes, compare it to the newer N-Force chips databus has 128bit databus which is like highway with 128 lanes!), the read speed from this type of chip would turn startup process of the fastest computer in to turtle run. The read speed also depends on speed of flash memory cells itself. Being said that, thats why most chips of this type are connected to the south bridge in certain way, which allows to *shadow* contents of the flash in to a RAM, emulating ROM, breaking the speed limit.
And again, making another conclusion from the above text: if you have seated a *unhealthy* flash chip or have inserted chip incorrectly - the consecquences will be sad not only for chip itself( usually chip damage is irreversible, when you insert it wrong way) but for a _whole_chipset_ (out of my personal experience).
In the address space flash chip occupies upper addresses E0000-FFFFF (True for 1Mbit) and because of similarity to other chips lets take 1Mbit/AwardBIOS as an example. After you turn computer on and RESET# signal dissaperance, the cpu executes its first command located by F000:FFF0 address. After beginning of initialization process, cpu recalculating different checksums (there are quite a bit of those in BIOS) but the main on is E000:0-FFFF+F000:0-BFFC, if this one is wrong, then bootblock is executed which is located in *most* upper addresses (F000:C000/E000-FFF -the last 8/16Kb), which in turn initializing floppy drive and tries to read system and/or flasher and/or BIOS file from floppy disk in attempt to recover/boot normally.
And yet, another conclusion: if you would like to force boot block execution (for reflashing purposes, as an example) you can do it by purposely corrupting CRC (checksum) by shortening address lines above bootblocks.As of myself, i usually short bylocated A15 and A16 lines (pin 2 and 3). Bootblock size=16Kb=2^14 which would not result in bootblock corruption, but checksum of the *rest* will be corrupted. If you not quite sure why we need that, then you will understand it when you meet soldered in flash chip, which you have fashed with *similar* bios and, by the way, for address lines this shortening is harmless.
After CRC check, bios is shadowed i.e. flash content is copied in to the ram and flash chip is turned off by south bridge. In order for programs to believe that thay are working with ROM contents it is being marked with READ ONLY atributes by means of programming south bridge (SB) and/or Model Specific Registers (MSR's) as for cpus, all foregoing calls are redirected to the memory addresses where shadowed copy of the bios is located.
- Conclusion: because of many programming methods to turn flash chip ON/OFF (for different chipsets) flasher should know how to do it i.e. flasher need to *know* chipset of the system where flashing is done.
PARTICULARITIES OF FLASHING INTEL 28FXXX CHIPS
If your motherboard has INTEL flash chip you need to be triple careful when flashing it. It is because intel chips are using hardware botblock protection. What does it mean ?- This means that intel chips have one more signal RP# (pin 30) - this signal allows chip bootblock programming, in 2Mbit it is A17, 1Mbit -NC (not connected, not used) i.e. for correct flashing _all_memory_space_, there should be +12Volt present on RP# pin, this is what for jumpers are made on many Socket7 motherboards and named: INTEL/NON-INTEL.
- Conclusion: If motheroard will have Intel 28FXXX and PCB (Printed Circuit Board) does not support correct commutation for programming Intel flash chips (very common) - BIOS will die with first attempt to flash the chip without any chances for revival (on this board).
For flashing Intel 28FXXX on such boards (without RP# pin) you will need to manually connect pin30 to +12Volt source, but in a such way so it would not get to the motherboard itself (A17) to avoid this you may just bend this pin so it will not have a connection with pin inside chipbed.
SOFTWARE PARTICULARITIES WITH FLASHING PROCESS
Main aspect, to which i would stress your attention is that flash chip is not being reprogrammed *at once*, or you can not write one separate byte, instead it is being programmed by blocks (sectorization). Different type of flash chips support different type of sector organization for example, a very popular flash Intel 28F001BX has followingb blocks:
- First block, in the very beginning and the biggest one -*main* block, occupies 112Kb of space, it usually contains main body of the bios (that is why it is the biggest).
- Next are two identical blocks, each occupies 4Kb space - in these blocks usually located data related toESCD/DMI/CMOS/PASSWORDS etc.
- Last block - 8Kb -bootblock
Speaking technical language - i28F001BX has 112+4*2+8 Simple and logical organization: the biggest block, 112Kb, anyways is being rewritten only during bios renewal process, next follows changing data area, thats why there are two small blocks used, so they can be rewritten faster and, at the end, non changeable bootblock, in purpose, separated from other blocks for bios protection in case of emergency recovery from floppy drive. Bootblock is always separated from toher blocks so it can peacefully reside during normal updates of the other blocks.
Some flash chips are made supporting very high sectorization, for example: SST29EE020 (2Mbit) has 2048 similar sectors each occupying 128 byte, but most chips have organization similar to intel one, because smaller blocks have drawbacks as an example in quite complicated write protection realization.
HUB TYPE FLASH CHIPS
Old school...How simple it was...address bus, data bus CE/WE/OE...But the progress is not standing on the same spot (especially In certaIn. companies) and with appearing of the i8XX chipsets, there came so called hub flash chips.
The end of year 1997. Intel decided that powerful processor must have BIG bios (4-8Mbit and more) eventhough, many that time companies were OK with what they had and present companies still use 2Mbit.
- Regular* (PLCC32), widely used flash type chips, would not have enough pins for address lines, so Intel invented LPC standart (Low Pin Count) but decided to keep PLCC body. Besides possibility to have huge flash chip capacieties - up to 4Gb, one of the other main reasons to have LPC, was soon-to-be-useless ISA bus, absense of which would remove address/data lines and allowed to have less traces in between Super I/O chip and the south bridge (obvious possibility to hide SIO in to the South Bridge were kept in secret).
LPC chips are using only 5 lines: LAD0-LAD3 + LFRAME# (thats why it is called LOW PIN COUNT) See typical LPC flash chip pinout at picture below (this standart may be used not only in flash chips, thats why iam being specific)
As you can see this type of flash can work in 2 different modes: LPC and Parallel Programming (PP). Mode is chosen by logic level on IC pin (Interface Configuration Pin) during computer startup process as follows: logic "0" -LPC mode and logic "1" -PP mode.
PP mode is the closest to *regular* flash chips and somewhat compatible with them, but not completely by all pins, so be aware! PP mode uses 11 (0-10) address lines, but those are multiplexed i.e. first, addresses A00-A10 are read and then, through the same lines, addresses A11-A21 are read as well. This multiplexing thing and dissappearance of CE# signal is the only difference between PP and *regular* flash chips.
As of LPC mode, communication between flash chip and south bridge is made through 4 bit bus and fifth LFRAME# needed as a start point for data to travel. LRESET# and LCLK# which are identical to their cousin signals used on motherboards all other lines are optional. This is how interface got simlpyfied, but, its still not serial interface as I2C and still allowing it to use DMA and BUS MASTERING (Which are used in devices like DiskOnChip/LPC)
PP mode is used during manufacturer flashing process of the chip (because it is faster), LPC is used for communication when already set in motherboard, so chipset must know how to communicate this way, thats why this standard got so popular after appearance of Nforce2 (ISA bus was never imlemented for use in this chipset)
Intel was very pleased with own work and decided to carry the flag forward and made another standart - FWH (Firm Ware Hub, thats how *HUB* type of flash chips appeared). It was fully electrically and by pin number compatible, but _absolutely_ incompatible by communication protocol. As you can read in many papers it was made in purpose, so those chips can be set up in one system, on the same bus (electrically compatible) but during communication each chip would take own data packets, because of the difference in communication protocols. by the way it is possible to hook up to 16 *HUB* type flash chips in one system, because of additional ID0-ID3 signals.
(by Author: Please think of all my stones towards the Father of x86 as a joke, however every joke has a piece of joke ;0)
As you can see FWH is similar to LPC, only pins LAD0-3 + LFRAME# renamed to FWH0-3 + FWH4. PP mode is absolutely same.
FWH differs from LPC by protocol, i.e. all commands for operation have different code values in the field of data exchange, plus, the ability to use up to 16 FWH devices, thanks to newly implemented identification signals ID0-3. As of system default ID configuration for flash chip it is assigned ID=0000, you may easily check it (intel boards) with multimeter (ohms), all those pins are connected to the ground.
Common way to check what kind of (FWH/LPC) flash chip we have is: using Ohm meter, check continuity between PINs 16/28 (flash chip) and GND (anywhere on the board) in *HUB* type flash chip resistance will be 0 Ohms (or close to it) while *regular* will have about 1KOhms.
If you have the need of flashing chips every-so-often, at work, or for any other reasons, i would have a few suggestions for you.
Someone may recommend you, in this case, to use a flash chip programmer device, but personally myself i would not advice that and not even recommend to use one. There are two major reasons. Reason one is : many programmer device will not recognize all flash chip types and those which do, cost well over three digit numbers. Second reason would be: just any programmer device cost would be, as low as, a three digit number, that being said here is my solution - all you may need to flash 99% of flash chips (talking about the chips that are used in motherboards) are next three type of motherboards:
- Something out of stoneage, like P1 (pentium) - for flashing well spreaded 1Mbit Intel chips
- Something out of PII (Pentium 2) age with 2Mbit BIOS chip - for flashing *regular* 1Mbit and 2Mbit flash chips.
- As you already guessed, something out of P!!! (Pentium 3) for example, any motherboard with i8xx chipset for flashing *HUB* type chips.
- (added for last version of edited article) Something, that is built on nForce1/2/3 chipset.
As of myself, towards the first point, I use ASUS motherboard built on i430HX chipset - P55T2P4, for cases like this one i recommend ASUS, because of very usable asus made flasher program, an old PFLASH or newer version - AFLASH, very simple to use, stable and may show you memory address where error occured, in case you will have an error of course.
Talking about second point, I use motherboard built on i440BX, PC Partner-928.It has 2Mbit flash chip, which allows us to flash *regular* chips with 1 and 2Mbit capacities.It has a DIP32 bed, for flashing PLCC32, I use PLCC32<->DIP32 adapter, which was made out of old non working board with PLCC32 bed (see picture)
As of point 3, I use motherboard built on i820 - Chaintech 6CTA2, it has i82802AB (4Mbit), that allows us to flash intel *hub* chips including HUBs themselves.
Point 4. I use motherboard on nForce1 - ABIT NV7-133R (it is not a big deal if it be NF2 /NF3).This board is used for heavyest cases, for flashing *PURE LPC* chips.Many mobo manufacturers, if not all of them, that built boards on nForce1/2/3/etc chipsets are using chips that are compatible with both LPC and FWH protocols, which allows us to flash those on equipment mentioned in point#3
Talking overall, about facts towards motherboard choices, there are no such thing, so it is solely depends on your personal needs, but i will mention the case with an ASUS for Intel flash chips combination.
It is not necessarily has to be some kind of advanced board, it is better to act counterwise - trying to find cheapest and simple boards, even so called No-Name boards are good, Acorp or PC-Partner are just a couple of such. Other important fact is easy access to flash chip bed.
As of the software I use for major flashing purpose - AMIFLASH (v.8.37 with keys, of course) Flasher knows many flash chips/chipsets and very friendly to use (I prefer command prompt).
For rare cases, when AMIFLASH cannot handle the task (some kind of exotic chips/bioses/chipsets)- I recommend to use AWDFLASH with /f key.
The heavyest case is when we need to reprogram very exotic/rare chips/bioses/chipsets, either very old or newest boards) I recommend to use UNIFLASH, it can be used for *visual* check of an error spot in memory space. Happy owners of gigabyte/epox or other mobo that has nForce2 Chipset with LPC flash chips like PMC.
PMC's are compatible with all three protocols LPC/FWH/PP and that is the probable cause of an error in case of *regular* flasher usage (those may even just hang/lock the PC), however UNIFLASH works just fine.
p.s. Latest versions of Uniflash are so knowledgeable and stable that i use it in most cases now.
Some extreme flash/reprogram methods.
There are cases when you may need to use two flashers to flash one chip, for example you reprogram chip with amiflash, at the end it may give you an error, then, you will reprogram it rightaway, again with uniflash, but you should not use it counterwise, because you will fail, its more likely will not work other way.
Probable cause - are programming algorithms of particular chips, when one flasher will be able to accomplish first part and other one will finish the job (by the way, this is not insanes speach, but my personal experience with amd chips, for example, that do have some non-standart read/write protection or damaged or non stable memory area.)
If you have a board that has only 1Mbit chip, but you need to reprogram 2Mbit chip - you may do it in two sets, first megabit last and second megabit first, as separate processes, when your first part is done, you will need to short PIN#30 (A17 for 2Mbit and PIN#NC in 1Mbit) to the ground and then flash second part.You will need to split file in two pieces, 1Mbit each (1Mbit=128kb), you may do it with any HEX editor, the only limitation for this process will be no support from flash chip for sector writing.
This situation may evolve in to case when we need only a bootblock. the second part (end part) of the splitted file. After this will be done, you need to insert this chip in to motherboard and start the pc, because of unfinished flashing, chip will have bad crc and bootblock will be loaded for recovery purposes, where you can use a floppy disk with bios file.
FLASHING CHIPS WITH DIFFERENT FLASHING VOLTAGES.
Different chips require different programming voltages. Most popular ones are 12V/5V for older boards and 3,3V/3V/2,7V and lower for modern. According to the theory, you should set onboard jumpers into appropriate position (if there are such junpers) to accomplish reprogramming. Practically we see that the chips designed for lower voltages can be reprogrammed with higher voltages as well.
For example, if the motherboard has 5V chip (usually 29xxxx series), you can flash the chips designed for lower voltages on this board and you will succeed.
But in the case when you try to flash 12V chip in 5V motherboard (or with jumpers set to 5V), you may succeed and may not, thence when you reprogram 28xxxx series chips (most of them are 12V ones) you have to pay attention to the jumpers and don't try to reprogram those using HOT-SWAP method on newer boards (12V chips were mostly used in P1/P2 period). So, the older motherboard you have, the bigger chance to succeed.
If the motherboard jumpers have no marks, you can use multimeter to see the pin32 voltage (the first one by the right side from the key, when looking to the chip's top). You also can bend or isolate this pin on the board/socket and connect the chip's pin right to 12V manually (from the power supply).