BIOS Autodetection Design
Charles Esson
charlese at cvs.com.au
Tue Jan 12 15:11:07 CET 1999
There is a forth, SUN use it, Apple uses it and freeBSD use it, it is part
of the PCI spec and it comes with a IEEE standard. It spends a lot of time
dealing with this issue, in a device and CPU independent way. OPENBOOT, IEEE
Std 1275.
Why would anyone reinvent the wheel.
"Eric R. Kern" wrote:
> > After alot of thinking about this I've come to the conclusion that I
> agree
> > that there should be autodetection of chipsets. I have been reading
> some
> > pciset documents from Intel, and as Andrew says there is really only
> > smaller differences (between the PCI chipsets that is). But all this
> > depends on one things; if it is possible to, with 100% accuracy,
> determine
> > what chipset the BIOS is running on. If this is possible, is see no
> reason
> > not to include autodetection. A wild guess is that the code for the
> > various chipsets (all together) is not more then a couple of kB.
>
> I'll give you a little help with sizing the chipset code since I have
> had some experience with this (I am a BIOS programmer for IBM's
> Commercial Desktop Division). Upon bootup of a system, there are many
> PCI configuration registers that need to be set to a certain value in
> order for the system to boot DOS (let alone a sophisticated operating
> system like Linux, Windows NT or Windows 98). These registers are
> generally set through a table early on in POST (Power On Self Test).
> The autodetecting BIOS would need to keep a table for every chipset that
> it detects. The tables for all of the chipsets that you want to support
> would fill any BIOS EEPROM on the market and you haven't even written
> one line of code yet.
>
> I think I have a better design. There are generally three ways of
> modifying the BIOS on a computer. The first way is to pull the EEPROM
> off the mother board and "burn" an image using an EEPROM burner. The
> second way is to enable boot block recovery mode, put the desired flash
> image in the floppy drive (or whatever media that was preselected) and
> turn the computer on. (Boot block recovery mode is usually a jumper
> setting that runs a "bare bones" portion of BIOS in order to load the
> desired image.) The third way is through a flash utility.
>
> The flash utility should run from DOS (or maybe Linux for you Linux fans
> out there). DOS is used since this utility is run at manufacturing time
> before an operating system has been loaded onto the harddrive and DOS
> fits nicely onto a floppy. My proposed design would have the system
> boot to a CDROM (more space and everyone has one) which boots DOS. The
> autodetection would be built into the flash utility. The chipset and
> other hardware detected by the flash utility would load the appropriate
> modules. These modules would then be put together to form a BIOS image
> and a table of pointers to each module would be created at a specified
> location in the image.
>
> +------------------------+ FFFFh
> | Jmp Vector |
> +------------------------+
> | Table of Pointers |
> +------------------------+
> | North Bridge Config. |
> +------------------------+
> | South Bridge Config. |
> +------------------------+
> | Cache Configuration |
> +------------------------+
> | Memory Configuration |
> +------------------------+
> | ISA Configuration |
> +------------------------+
> | PCI Configuration |
> +------------------------+
> | Keyboard Controller |
> +------------------------+
> | BIOS Functions (int 15)|
> +------------------------+
> | Planar Hardware |
> +------------------------+
> | Etc. |
> +------------------------+ E000h
>
> Just a thought. Good luck.
>
> Eric R. Kern
More information about the openbios
mailing list