U-Boot (Universal Boot-loader), developed by Denx Software Engineering, is an open-source bootloader commonly used in embedded systems. It serves as the initial program that loads the operating system, notably the Linux kernel, into DRAM and prepares the system for execution. U-Boot is highly configurable and supports a wide range of architectures and hardware platforms. Moreover, it is licensed as free software under the GNU General Public License, fostering collaborative development and widespread adoption.
Refer to:
https://www.denx.de/project/u-boot/
Contents
Features of U-Boot
Key features and characteristics of U-Boot include:
Versatility: U-Boot is designed to be versatile and can be adapted to various architectures, including ARM, MIPS, x86, and more.
Open Source: U-Boot is released under the GNU General Public License (GPL), providing users with the freedom to view, modify, and distribute the source code.
Boot Sequence Control: U-Boot handles the initialization and configuration of the hardware during the boot process. It allows users to interact with the bootloader through a command-line interface, enabling them to control the boot sequence, load kernel images, and set various parameters.
Support for Various Storage Devices: U-Boot supports loading firmware and kernel images from a variety of storage devices, including NAND and NOR flash memory, SD cards, USB storage, TFTP servers, and more.
Environment Variables: U-Boot allows the configuration of environment variables that store important settings, such as boot parameters and memory addresses.
Network Booting: U-Boot supports network booting, allowing systems to load kernel images and other files over the network using protocols like TFTP or NFS.
Development and Debugging Tools: U-Boot includes tools for debugging and development, such as memory and register inspection, script execution.
Features of U-Boot of SP7350
U-Boot serves as the second-stage bootloader in SP7350 platform. After initializing itself, U-Boot then loads Linux kernel image from external storage devices into DRAM and executes it. As it runs in DRAM, its size is no longer limited by SRAM of SP7350 (only limited by the system's DRAM size), ranging from hundreds of kilobytes to several megabytes.
Apart from being a boot-loader for loading the Linux kernel, U-Boot supports to read images from external storage device such as USB flash drives or SD cards and write images into NOR flash, NAND flash, and eMMC devices in system. key features of U-Boot of SP7350 are listed below:
Support console at UART0 (@ 115,200 bps).
Support booting Linux from SPI-NOR flash, SPI-NAND flash, 8-bit NAND flash or eMMC device.
Support in-system program SPI-NOR flash, SPI-NAND flash, 8-bit NAND flash or eMMC device.
Support read images from USB flash drives or SD cards for in-system program (ISP).
Support secure-boot (check hash value of Linux image).
Support fastboot function for eMMC device.
Support fastboot for SPI-NAND and 8-bit NAND flashes (only for updating Linux kernel or rootfs partition).
Drivers and features
The source files of U-Boot are conveniently located within the "boot/uboot/" directory under the project's top directory. For the SP7350 platform, a wide array of device drivers is supported. These drivers are within the "drivers" directory. Below is a reference table detailing the drivers along with their corresponding feature descriptions:
Drivers | Folders or files | Feature descriptions |
8-bit NAND | mtd/nand/raw/sp_paranand/ |
|
Clock | clk/sunplus/ |
|
eMMC | mmc/sp_mmc* |
|
Ethernet | net/designware.* |
|
I2C | i2c/designware_i2c* |
|
OTP | soc/sunplus/ |
|
Reset | reset/reset-sunplus.c |
|
Pinctrl | pinctrl/sunplus/ |
|
SD card | mmc/sp_sd* |
|
SPI | spi/designware_spi.c |
|
SPI-NAND | mtd/nand/raw/sp_* |
|
SPI-NOR | mtd/spi/spi-nor-ids.c spi/sp_spi_nor.c |
|
UART | serial/serial_sunplus.c |
|
USB2.0 EHCI | usb/host/ehci-sunplus.c |
|
USB2.0 OHCI | usb/host/ohci-sunplus.c |
|
USB2.0 UDC | usb/gadget/sp_udc.c |
|
USB3.0 DRD | usb/host/xhci-spdwc3.c usb/gadget/spdwc3_udc.c |
|
Video | video/sunplus/sp7350/disp/ |
|
Other files or folders
Board specific files
Board specific files of SP7350 platform are located at “board/sunplus/.”
The following table lists board specific files
Folders | Descriptions |
common/secure_sp7350/ | Contains secure-boot related files. |
sp7350/ | Contains SP7350 platform or hardware-specific files. |
Machine (CPU) specific files
Machine (CPU) specific files of SP7350 platform are located at “arch/arm/mach-pentagram” under U-Boot directory.
The following table lists the files or folders.
Files or folders | Descriptions |
include/mach | Contains platform or hardware-related header files. |
cpu.c | Contains subroutines for CPU reset, memory map, DRAM setting, and etc. |
Configuration header file
Configuration header file contains board-specific configuration options, hardware parameters, and initialization settings tailored to the target platform. Configuration header file of SP7350 platform is “include/configs/pentagram_common_sp7350_c.h.”
Default configuration files
Default configuration files of U-Boot are located under “configs” directory. Default configuration files of SP7350 platform are the files with name prefixing “sp7350_”.