read these articles: http://www.ryston.cz/petr/bios/ga586hx_mod.html http://www.ryston.cz/petr/bios/ga586t2_mod.html Pretty easy to do yourself. I've modded one ASUS board with that trick (IIRC it was one of ASUS P2BF variant -- forgot the exact type of the mobo, 32GB limit bug)
The result of my research on BIOS for several years is now out in a book form (English and Russian). For English version, see: http://www.amazon.com/BIOS-Disassembly-Ninjutsu-Uncovered/dp/1931769605 For Russian (translated version), see: http://www.bhv.ru/books/book.php?id=180728 Have phun
Good day. I need to fetch CPU Temperature, Fan Speed from motherboard Advantech PCA-6178V in my program. What is the best path: to get the bin file (BIOS) and to dig in it, or to look at lmsensors, or something else? Thnx
EDIT: -------- The URL have been changed because I moved the site to Google sites. Geocities will be closed one month from now.
The BIOS articles URLs have been changed (click the links below to access them): Comprehensive guide to Award BIOS reverse engineering Award BIOS Code Injection Low Cost Embedded x86 Teaching Tool cheers, Pinczakko
I have been reading your article about BIOS injection procedure - and got curios regarding this issue with most correct place for new subroutine. You've noticed that problem - with probability approx. ~1/30 machine gets stalled if this routine is executed _after_ PIC initialization, and you seems like fixed it by choosing some other dummy proc to patch - _before_ PIC's init. The problem might has two explanation: a) [yours] the PIC routine (or some other code that gets activated by that) "too strict" about timings (e.g. it is not possible to execute too much instruction after everything was initialized - if I understood it correctly) b) some interference between your [injected] routine and other components of BIOS - for example, timer handler could use the same resources (ports) as your code and at some stage it makes machine stalled. I think it could be quite easy to conduct some experiment to clarify it. If it is only time-consuming issue, just one large delay prog must reproduce the problem with probability up to 100%: NewDummy: push ecx mov ecx,0100000h ; or whatever else - but be sure it takes at least few seconds for current machine @@delayme: jmp $+2 loop @@delayme pop ecx clc ret So if measurements can show that this new one has execution time ~10 times more than yours and this new one DOESN'T hang the machine - it will mean the problem in sharing resources or in some other place...
Pinczakko I read your book. (Russian edition) Give me link to article about phisical memory map around 4gb bound.
Hello, @PSR1257: Thanks for the suggestion. Anyway, the motherboard in that article has been dead for several years. I'll revive it when I have some free time and try to test your hypotheses. @Rockphorr: You can read such thing in the chipset datasheet. For example, system with X58 chipset has (almost) complete physical memory map explanation in the "System address map section" of the chipset datasheet. You can download the datasheet at http://www.intel.com/products/desktop/chipsets/x58/x58-technicaldocuments.htm. If you want to look for the SMRAM mapping. I think you should consult the datasheet as well.
Pinczakko, still around? maybe Pinczakko knows the best custom ROM for BIOS and free hardware to replace stock? Thanks