LinuxBIOS |
LinuxBIOS is an Open Source project aimed at replacing the normal BIOS with a compressed Linux kernel that is bootable from a cold start. LinuxBIOS source code is freely distributed under the GNU GPL license.
=General information=
A unique feature of LinuxBIOS is that the x86 version of it is running in 32 bit mode after executing only sixteen instructions. (Almost all other x86 BIOS es run exclusively in 16 bit mode.) Running in 32 bit mode makes it run so fast that its current cold boot record is just 3 seconds. LinuxBIOS does whatever hardware initialization that the Linux kernel doesn t do and lets the Linux kernel finish the hardware initialization.
LinuxBIOS usually loads a Linux kernel, but it can load any other stand-alone Executable and Linkable Format executable, such as etherboot which can boot Linux from a boot server or ADLO which itself loads MS Windows 2000/XP. If that s not flexible enough, the Linux kernel can load almost any operating system from any Linux supported device even Myrinet, Quadrics, or SCI cluster interconnects.
Applications for LinuxBIOS include clusters, embedded devices (including car stereo systems), workstations, servers and even laptops. Also, LinuxBIOS allows one to avoid the high cost and computer bugs of a Commercial Off The Shelf (COTS) BIOS.
=Developing and Debugging LinuxBIOS=
Since LinuxBIOS must initialize the bare hardware, it must be ported to every chipset and mainboard that it supports. Before initializing RAM, LinuxBIOS initializes the serial port, so it can send out debug text to a connected terminal emulator. LinuxBIOS can also send byte codes to port 0x80 that are displayed on a two-hex-digit display of a connected POST card. Another aid is the BIOS Savior, which is a combination of two BIOS devices that plugs into the BIOS socket and has a manual switch to select between them. A more expensive alternative is an EPROM/flash programmer. (The Willem EPROM programmer is only $60.) If that s not enough help, there are also CPU emulators that either replace the Central processing unit or connect via a JTAG port. Finally, code can be built on, or downloaded to, BIOS emulators rather than flashing the BIOS device.
=Initializing DRAM=
The most difficult hardware that LinuxBIOS initializes is the DRAM controllers and DRAM. This is particularly difficult because until the RAM is initialized, there is no RAM available for use. The obvious way to initialize DRAM controllers and DRAM without using RAM is to use the CPU s general purpose registers. To make this hard task easy, a C compiler that uses registers instead of RAM, called romcc, was built. Using romcc it is relatively easy to make SMBus accesses to the SPD ROMs of the DRAM DIMMs, etc. that allows the RAM to be used.
=External links=
|
|
