Phil Endecott wrote:
So my first question is, will higher-capacity flash
chips "just work", or does the motherboard design limit them to the flash size
that they are supplied with?
Motherboard designs that make use of parallel flash
devices often don't
route the higher address lines required required for larger BIOS flash
devices. For example a motherboard that ships with a 2Mbit (256k x 8)
device may only have A0 - A17 routed from the chipset to the flash
socket, even though A18 - A22 may be available on the chipset.
Motherboard designs that use a serial LPC or FWH interface have all the
control and address lines required routed from the chipset to the BIOS
flash socket, but may still not be able to access memory windows of
larger than 256KB, unless the chipset pin straps are set for 512KB, 1MB
or larger. There may be other chipset dependent issues with accessing
flash control register space (e.g., block locking) that require hardware
and/or firmware workarounds.
If it is possible to fit a larger chip the next
question is whether these are
easy to obtain in small (e.g. one-off) quantities.
It depends on the distributor of the devices. They may have minimum
requirements based on dollar amounts or quantities (e.g., $100, 25pcs.).
Assuming that this is possible, let's say that I
build a kernel
containing only minimal drivers for the framebuffer and ethernet - no
IDE etc, and maybe use the "Linux-Tiny" patch. I wonder how much space
would then be left for an initrd. Ideally I would like to fit a single
executable of maybe a few hundred kbytes uncompressed which is run
instead of init (this is a for fixed-purpose box).
It's been done with custom designs. Some current chipsets have firmware
address ranges of 4MB. There may be some off-the-shelf motherboards that