DevelBoard, just like Linux, follows a multi-stage boot process, which involves three separated bootstrap stages (and as many bootloaders).
In this section, we'll briefly explain the significance and operations of each bootloaders, how to format an SD card to boot from it, and how to modify the boot options for the Linux kernel.
As said before, the boot process involves three bootloaders:
a hardware bootloader, which is embedded in the Atmel AT91 SoC, which is responsible for checking the presence in FLASH of the second level bootloader and loading it in SRAM;
a second level bootloader,
AT91Bootstrap, specifically designed for Atmel AT91 microprocessors, which initializes several on-board peripherals (clock speed, PIO, DRAM), to load from FLASH or SD Card to main memory the third level bootloader;
finally, a third level bootloader,
barebox, which is in charge of retrieving or downloading the kernel binaries from a specified location (FLASH, SD Card, network etc.).
From a DevelBoard user perspective, only
barebox is of particular
significance, since it is the one responsible for passing boot options to the
kernel. These options, and the
barebox configuration in general, can be
modified by the user, as described in the next sections.
During the boot sequence, the
barebox boot menu will appear for a few seconds
(specified in the configuration file):
Welcome on Barebox Boot Sequence 1: boot 2: boot tftp 3: boot mmc 4: boot mmc-rw 5: kernel location -> 6: rootfs location -> 7: update -> 8: test -> 9: shell 10: reset
This is used to change the default behavior of the bootloader (which is, boot the system from FLASH after 3 seconds).
boot options allow to choose alternative locations for retrieving
the system files:
- tftp: from a remote location in the network, using the TFTP protocol
- mmc: from the SD card, in read-only mode (changes to the filesystem are lost upon power down)
- mmc-rw: from the SD card, with persistency support
- kernel location and rootfs location: different sources for kernel and root filesystem
Other options available include:
- test: perform various self-tests
- shell: open the
- reset: reset the device
If no input is detected in 3 seconds, the bootloader proceeds to boot into the system.
To modify the kernel boot process, we must modify the
configuration file. This file contains several customization options, ranging
from default kernel and root filesystem locations, startup network interface
configuration, kernel boot args etc.
There are multiple ways to go about this, but the easiest and most user-friendly
is by using the
dboard tool. A basic tutorial on
the tool is available in the tool's section of the guide. For the sake of
simplicity, we will assume that the user is already familiar with the tool, and
has created a new DevelBoard project which needs to be modified.
Once you have a project up and running, and you have created an SD card using
dboard makesd, a new folder
images/bareboxenv will be automatically created.
This folder contains a
config file you need to modify in order to
Example of configuration change
Let's assume we want to modify the default bootloader behavior, and boot from the SD card rather than from FLASH by default.
This is done by opening the
images/bareboxenv/config file and changing the
following lines from:
Now you need to remove the precompiled
images/barebox.env file in order
dboard to regenerate it from the configuration file:
$ rm images/barebox.env $ dboard makesd
You can now verify that everything is working correctly by waiting for
to autoboot from the SD card in the boot menu.