Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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:

The U-Boot Official Web: U-Boot

The U-Boot Documentation: The U-Boot Documentation

U-Boot 2024.07 is downloaded from: u-boot-2024.07.tar.bz2

Table of Contents

Table of Contents
stylenone

Features of U-Boot

Key features and characteristics of U-Boot include:

  1. Versatility: U-Boot is designed to be versatile and can be adapted to various architectures, including ARM, MIPS, x86, and more.

  2. 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.

  3. 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.

  4. 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.

  5. Environment Variables: U-Boot allows the configuration of environment variables that store important settings, such as boot parameters and memory addresses.

  6. 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.

  7. 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 Platform

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.

...

  • 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 (ISP) for 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 function for SPI-NAND and 8-bit NAND flashes (only for updating Linux kernel or rootfs partition).

Supported Drivers for SP7350 Platform

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/

  1. Supports mtd framework.

  2. Supports read and write standard 2k/4k/8k ECC sectors.

  3. Supports read and write 1K60 ECC sectors.

  4. Supports block and chip erase.

Clock

clk/sunplus/

  1. Supports common clock framework (CCF).

  2. Supports clock functions for all devices.

eMMC

mmc/sp_mmc*

  1. Supports MMC framework.

  2. Supports read and write User Data Area.

  3. Supports read and write RPMB partition.

  4. Supports DMA mode.

Ethernet

net/designware.*

  1. Supports 802.3 packets transactions.

  2. Supports 100M and 1000M speeds.

  3. Supports RGMII and RMII interfaces.

fastboot

fastboot/

  1. Support eMMC update all partitions.

  2. Support SPI-NAND and 8-bit NAND update the following partitions:

    1. uboot2

    2. fip

    3. env

    4. env_redund

    5. kernel (uImage)

    6. rootfs (ubifs)

I2C

i2c/designware_i2c*

  1. Supports I2C master mode access.

  2. Supports 100kHz and 400kHz speeds.

OTP

soc/sunplus/

  1. Supports write and read OTP.

  2. Supports rotp and wotp commands.

Reset

reset/reset-sunplus.c

  1. Supports reset functions for all devices.

Pinctrl

pinctrl/sunplus/

  1. Supports generic helper bindings.

  2. Supports pin-mux of all devices.

  3. Supports all GPIO pins.

SD card

mmc/sp_sd*

  1. Supports MMC framework.

  2. Supports read and write operations.

  3. Supports DMA mode.

SPI

spi/designware_spi.c

  1. Supports SPI master mode access.

  2. Supports set clock frequency in dts.

  3. Supports mode 0, 1, 2 and 3.

SPI-NAND

mtd/nand/raw/sp_*

  1. Supports mtd framework.

  2. Supports read and write standard 2k ECC sectors for 1 or 2 planes.

  3. Supports read and write standard 4k ECC sectors for 1 plane only.

  4. Supports read and write 1K60 ECC sectors..

  5. Supports block and chip erase.

  6. Supports 4-bit operations.

  7. Supports set clock frequency in dts.

SPI-NOR

mtd/spi/spi-nor-ids.c

spi/sp_spi_nor.c

  1. Supports mtd framework.

  2. Supports read and write operations.

  3. Supports block and chip erase.

  4. Supports set clock frequency in dts.

UART

serial/serial_sunplus.c

  1. Supports U-Boot console at UART0.

  2. Baud rate is set by i-boot.

USB2.0 EHCI

usb/host/ehci-sunplus.c

  1. Supports high-speed read and write operations.

USB2.0 OHCI

usb/host/ohci-sunplus.c

  1. Supports full-speed read and write operations.

USB2.0 UDC

usb/gadget/sp_udc.c

  1. Supports USB devices (gadgets).

USB3.0 DRD

usb/host/xhci-spdwc3.c

usb/gadget/spdwc3_udc.c
phy/phy-sunplus-dwc3.c

  1. Supports super-speed, high-speed and full-speed access.

  2. Supports host and device modes.

  3. Supports USB type C receptacle.

Video

video/sunplus/sp7350/disp/

  1. Supports U-Boot video console.

SP7350 Platform-specific Files or Folders

Board-specific Files

Board-specific files for the SP7350 platform can be found in the “board/sunplus/” directory. Below is a breakdown of the folders and their descriptions:

Folders

Descriptions

common/secure_sp7350/

Contains files related to secure boot functionality.

sp7350/

Houses SP7350 platform-specific or hardware-specific files.

Architecture-specific Files

Architecture-specific files for the SP7350 platform are situated at “arch/arm/” within the U-Boot directory. Here's a summary of the files and folders:

Files or folders

Descriptions

cpu/armv8/

Contains ARMv8 CPU (ex: Cortex A55) related files.

mach-pentagram/include/mach

Contains platform or hardware-related header files.

mach-pentagram/cpu.c

Encompasses subroutines responsible for CPU reset, memory mapping, DRAM configuration, and more.

Configuration Header File

The configuration header file comprises board-specific configuration options, hardware parameters, and initialization settings tailored to the target platform. For the SP7350 platform, the configuration header file is “include/configs/pentagram_common_sp7350_c.h.”

Default Configuration Files

Default configuration files of U-Boot are stored in the “configs” directory. Specifically for the SP7350 platform, default configuration files are prefixed with “sp7350_”.

Device-tree Source Files

U-Boot and Linux share device-tree source files, situated in the directory:

...

https://sunplus.atlassian.net/wiki/x/HwB8dg

U-Boot Log and Explanation

Line 1: The banner (version) of U-Boot.

...