What is the common boot loader used in embedded system?
UBOOT or Universal Boot Loader is the default boot loader of any embedded Linux system. Windows embedded devices use NAND boot loader called nboot and ethernet boot loader called eboot. Android boot loader is basically a modified uboot with graphical interface called xboot.
What are the booting media available in embedded systems?
Hard disk and Solid state devices are common in laptops and desktops. However embedded system rarely have disk drives. They often include -
- NAND flash ROM
- NOR flash ROM
- SD CARD
- USB Drive
- Disk less Network booting
How booting options and configuration are maintained?
Embedded storage devices like NOR or NAND flash will have partitions defined inside it. Most of the boot loaders seats in the first few sectors of the first partition. There after there will a partition to store the the environment configuration. In this partition boot loader stores the kernel arguments, loading addresses of kernel binary, load address of rootfs binary and other necessary options. Multi-boot loader configuration stores multiple booting options. There will be a default and primary booting option in multi-boot options. Secondary boot options may include recovery kernel with booting in minimal configuration or debugging options added to the kernel or other custom options.
What are the stages in uboot loader?
Depending on the CPU architecture and SRAM and RAM available in a system, there can be three stages in uboot.
- OnChip ROM loader- This is stored in ROM inside processor. This is programmed by the manufacturer. CPU loads the ROM content at the location of the reset vector. This is generally small in size. Content in SPI flash is loaded in ROM address region known as a stepping stone process. It initializes the SRAM and setup temporary stack and data area and loads SPL binary.
- SPL (or Secondary Program Loader) - This is a staged or intermediate module. Uboot binary is large in size and main RAM is not initialized during this time. ROM loader loads SPL /Secondary Program Loader binary located in the first few sectors in SDCARD or NAND. ROM based loader loads this into SRAM and then executes it. Further this initializes the main RAM and then loads the main UBOOT binary from first FAT formated partition in SDCARD.
- U-BOOT - UBOOT binary holds the drivers for loading kernel and other binaries from the storage device. It also have drivers for input and out devices. It has a command shell to get inputs from users. Loading of Kernel and rootfs is done here then the control goes to starting address of the kernel.
Similar topics related to this section
BIOS, Booting, PC Firmare, Topics Index, Primary Base Memory, High, Extended Memory and IO Ports, Memory Mapped IO Layout, IO Port Ranges, Interrupt Lines, x86 Registers, Real Mode Memory Segmentation, Power On Self Test, H/W Inits, Software Interrupts, Keyboard Module and int16, VGA Display int10, Disk Subsystem int13, BIOS Config Screen, BIOS Development Code Flashing Debugging, Plug-n-Play, PCI card PnP Mechanism, PCI Config Address Space, PCI MMIO IO IRQ perations, BIOS Boot OPROMs Drivers, Disk Cylinder Head Sectors, MBR Disk Partitions, MBR and File Allocation Table Partitions, Boot Loader, Grand Universal Bootloader Linux Booting, NT Loader Windows Booting, Embedded System Booting, Unified Extensible Firmware Interface Stack, UEFI Development And Advantages, References and Links,