Friday, April 20, 2007
A revival of the BIOS?
With the long load times of most major OS's, it's getting very frustrating to turn on your computer when you just need a simple piece of information. For example, if I need show the pictures I took from my weekend of antique shopping, I need to wait for Windows to boot. Even on a system in hibernation, it might take almost a minute.
What if I could write an application that didn't need Windows to run? Run it straight in the BIOS.
Extensible Firmware Interface (EFI), is a technology that Intel has co-developed to replace the venerable BIOS architecture found in x86 PCs. Like the standard BIOS, it is possible to write applications in the pre-boot environment of EFI. However, EFI offers has a much richer environment to application developers, including some really cool capabilities:
Learning more
There is an open source implementation of the EFI framework that can be used as a development environment for EFI applications. You can find the information here. Although the EDK project is mostly concerned with driver development; The package contains headers and a basic build environment to construct EFI applications. It also contains a simulator to test your applications.
To write applications, you will also want to take a look at the Application Toolkit from Intel. It contains a whole bunch of utilities and libraries to assist the development of pre-boot applications.
We're not there yet
All of this EFI coolness might remain an artifact of the future for now. Most PCs don't implement an EFI BIOS yet. Some Itanium-based machines support it, and the new Intel-based Macs also have an EFI BIOS. Furthermore, Microsoft has announced that Vista will not support EFI for its first release. Actually, the word from Redmond is that it is unlikely that we will see support for EFI on 32bit machines. Ever. So, until you get your hands on a next-generation PC, you can always use a simulator to test out your ideas.
What if I could write an application that didn't need Windows to run? Run it straight in the BIOS.
Extensible Firmware Interface (EFI), is a technology that Intel has co-developed to replace the venerable BIOS architecture found in x86 PCs. Like the standard BIOS, it is possible to write applications in the pre-boot environment of EFI. However, EFI offers has a much richer environment to application developers, including some really cool capabilities:
- Full network stack (DHCP, TCP/IP)
- File-based disk access (FAT32)
- High-level abstraction of the graphic hardware (UGA)
- High-level abstraction of the input hardware (keyboard-mouse)
- High-level abstraction for system concepts like timers
- Development environment in C (instead of assembly)
- The ability to load EFI pre-boot applications from disk (they don't have to fit in the ROM)
- Access to the machine's memory without the 1MB restriction of BIOS
- Disk access is limited to FAT32 partitions. The EFI pre-boot application can't read NTFS partitions unless someone creates an EFI driver for it.
- It is possible to write graphical applications in the pre-boot EFI environment but everything has to be rendered by hand. Each control, widget, window, font, everything. The UGA driver doesn't even know how to write plain text in a fixed-size font.
Learning more
There is an open source implementation of the EFI framework that can be used as a development environment for EFI applications. You can find the information here. Although the EDK project is mostly concerned with driver development; The package contains headers and a basic build environment to construct EFI applications. It also contains a simulator to test your applications.
To write applications, you will also want to take a look at the Application Toolkit from Intel. It contains a whole bunch of utilities and libraries to assist the development of pre-boot applications.
We're not there yet
All of this EFI coolness might remain an artifact of the future for now. Most PCs don't implement an EFI BIOS yet. Some Itanium-based machines support it, and the new Intel-based Macs also have an EFI BIOS. Furthermore, Microsoft has announced that Vista will not support EFI for its first release. Actually, the word from Redmond is that it is unlikely that we will see support for EFI on 32bit machines. Ever. So, until you get your hands on a next-generation PC, you can always use a simulator to test out your ideas.