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 support this.
-Bari