Re: [Etherboot-developers] NIC file and ROM images
Brought to you by:
marty_connor,
stefanhajnoczi
|
From: <ebi...@ln...> - 2002-04-18 00:42:29
|
ke...@us... (Ken Yap) writes: > >What if you (we) could build a bootrom that knows about ALL > >pci network chipsets. > > You already can, in theory, just do what Michael Brown did with multi > driver binaries. > > >It would start with a whole bunch of 512 byte PCI headers. > >Followed by the main() and other common code, Then, the > >unique routines that each card needs. I don't know how big > >that is, but it seems pretty small, per chipset. > > Unfortunately it isn't, if you'd written a driver before you'd know > different. Each driver can have pretty complicated code and use large > buffers. See tulip.c for an extreme example. To share the buffers would > require some kind of dynamic memory allocation. And even then there's > the memory squeeze, see below. Although all of the buffers should be in the BSS and not matter, binary size wise. > >I use 29ee512 chips for the Linksys and 3Com cards, > >I'll bet we could fit support for a lot of chipsets into 64k. > > The problem is not the ROM size, but the limited execution area with > which Etherboot has to work (48kB from 0x94000). Hence the interest in a > relocatable Etherboot binary which could copy itself to the top of > memory, which should leave enough room at the bottom for the loaded code > in all except very memory deficient machines. But that's a promising > direction to work towards. And the challenge with a relocateable binary is that we would need to split etherboot into 2 sections. The 16bit code section, which must be under 1M, and the rest. And we can probably place the code that must be under 1M between 0xC0000 - 0xE0000, basically just leave it there as our initialization finishes. I have the self relocation working just fine with memtest86, reducing it's memory footprint from 128KB to 56KB because it no longer has to have 2 copies of itself. I have a few more hurdles to over come before I release patches against memtest86 but I have the self relocating working solidly. Eric |