Booting on Libre Computer boards occur in 3 stages.
- Low Level Startup
- BIOS
- Linux
Low Level Startup
SoCs have integrated BootROM that attempts to load software from predefined storage media. Typically, a SoC will read the value of some IO configuration pins and then try to read code from certain storage devices based on the configuration pin values. This behavior is fixed since the BootROM is hard coded within the SoC.
- If it finds matching bootable data, it will load it into SRAM and start executing the program.
- The SRAM program will bring up DRAM and then load the rest of the BIOS into the DRAM.
- The SRAM will either boot the BIOS directly or go back to the BootROM which will boot the loaded BIOS depending on the SoC and programmed configuration.
An error loading the BIOS or configuring DRAM from the storage media will cause failure at this step. Since there is no video output support at this stage, this is a silent error only detectable via UART cable.
- Storage media read failure as a result of corrupt or improperly flash data.
- Fake MicroSD cards can cause read failure.
- Incorrect boot switch settings attempting to load from the incorrect device.
- Power or SoC voltage or DRAM tuning failure.
BIOS
- Libre Computer boards all make use of the u-boot as a Basic Input Output System (BIOS).
- u-boot is a light full featured single-threaded OS capable of booting UEFI compliant applications including Linux.
- The USB and FS software stack is not as robust as Linux so certain non-standard devices and data blocks will cause a fatal error. For USB devices, enumeration can be disabled on startup to prevent crashes.
- Unsupported display resolutions may not show any video since u-boot display timing configuration is more limited than Linux. Video output may work once Linux has loaded.
Since HDMI may be available at this stage, usually you can see the error that occurs before the board resets. However if there is insufficient power, the bringup of the CPU core might crash either before or after video output is enabled. Usually insufficient power issues will cause immediate crash with no warning messages but it can also exhibit brown-out or “soft” crashes.
Linux
- Linux will turn on various power regulators and enable all of the CPUs and other hardware blocks within the SoC. Therefore, there is a significant increase in power consumption during system boot.
- If Linux spontaneously crashes and reboots without any error messages, it is usually because of a power problem.