When power is first applied to the desktop computer, a software program called the BIOS
immediately takes control of the processor. (Historically, BIOS was an acronym meaning Basic
Input/Output Software, but the acronym has taken on a meaning of its own because the functions it
performs have become much more complex than the original implementations.) The BIOS might
actually be stored in Flash memory (described shortly), to facilitate field upgrade of the BIOS
The BIOS is a complex set of system-configuration software routines that have knowledge of the low
level details of the hardware architecture. Most of us are unaware of the extent of the BIOS and its
functionality, but it is a critical piece of the desktop computer. The BIOS first gains control of the
processor when power is applied. Its primary responsibility is to initialize the hardware, especially
the memory subsystem, and load an operating system from the PC’s hard drive.
In a typical embedded system (assuming that it is not based on an industry-standard x86 PC hardware
platform) a bootloader is the software program that performs these same functions. In your own custom
embedded system, part of your development plan must include the development of a bootloader specific
to your board. Luckily, several good open source bootloaders are available that you can customize
for your project.
Some of the more important tasks that your bootloader performs on power-up are as follows:
- Initializes critical hardware components, such as the SDRAM controller, I/O controllers, and graphics controllers
- Initializes system memory in preparation for passing control to the operating system
- Allocates system resources such as memory and interrupt circuits to peripheral controllers, as
- Provides a mechanism for locating and loading your operating system image
- Loads and passes control to the operating system, passing any required startup information
that might be required, such as total memory size clock rates, serial port speeds and other lowlevel
hardware specific configuration data
This is a very simplified summary of the tasks that a typical embedded-system bootloader performs.
The important point to remember is this: If your embedded system will be based on a customdesigned
platform, these bootloader functions must be supplied by you, the system designer. If your
embedded system is based on a commercial off-the-shelf (COTS) platform such as an ATCA
chassis, typically the bootloader (and often the Linux kernel) is included on the board.