The official Xilinx u-boot repository
This directory contains the source code for U-Boot, a boot loader for Embedded boards based on PowerPC, ARM, MIPS and several other processors, which can be installed in a boot ROM and used to initialize and test the hardware or to download and run application code.
The development of U-Boot is closely related to Linux: some parts of the source code originate in the Linux source tree, we have some header files in common, and special provision has been made to support booting of Linux images.
Some attention has been paid to make this software easily configurable and extendable. For instance, all monitor commands are implemented with the same call interface, so that it's very easy to add new commands. Also, instead of permanently adding rarely used code (for instance hardware test utilities) to the monitor, you can load and run it dynamically.
In general, all boards for which a default configuration file exists in the configs/ directory have been tested to some extent and can be considered "working". In fact, many of them are used in production systems.
In case of problems you can use
scripts/get_maintainer.pl
to identify the people or companies responsible for various boards and subsystems. Or have a look at the git log.
In case you have questions about, problems with or contributions for U-Boot, you should send a message to the U-Boot mailing list at . There is also an archive of previous traffic on the mailing list - please search the archive before asking FAQ's. Please see https://lists.denx.de/pipermail/u-boot and https://marc.info/?l=u-boot
The U-Boot source code is maintained in the Git repository at https://source.denx.de/u-boot/u-boot.git ; you can browse it online at https://source.denx.de/u-boot/u-boot
The "Tags" links on this page allow you to download tarballs of any version you might be interested in. Official releases are also available from the DENX file server through HTTPS or FTP. https://ftp.denx.de/pub/u-boot/ ftp://ftp.denx.de/pub/u-boot/
The "official" name of this project is "Das U-Boot". The spelling "U-Boot" shall be used in all written text (documentation, comments in source files etc.). Example:
This is the README file for the U-Boot project.
File names etc. shall be based on the string "u-boot". Examples:
include/asm-ppc/u-boot.h
#include
Variable names, preprocessor constants etc. shall be either based on the string "u_boot" or on "U_BOOT". Example:
U_BOOT_VERSION u_boot_logo
IH_OS_U_BOOT u_boot_hush_start
For all supported boards there are ready-to-use default configurations available; just type "make _defconfig".
Example: For a TQM823L module type:
cd u-boot
make TQM823L_defconfig
Note: If you're looking for the default configuration file for a board you're sure used to be there but is now missing, check the file doc/README.scrapyard for a list of no longer supported boards.
U-Boot can be built natively to run on a Linux host using the 'sandbox' board. This allows feature development which is not board- or architecture- specific to be undertaken on a native platform. The sandbox is also used to run some of U-Boot's tests.
See doc/arch/sandbox/sandbox.rst for more details.
The following options need to be configured:
CPU Type: Define exactly one, e.g. CONFIG_MPC85XX.
Board Type: Define exactly one, e.g. CONFIG_MPC8540ADS.
85xx CPU Options: CONFIG_SYS_PPC64 Specifies that the core is a 64-bit PowerPC implementation (implements the "64" category of the Power ISA). This is necessary for ePAPR compliance, among other possible reasons. CONFIG_SYS_FSL_ERRATUM_A004510 Enables a workaround for erratum A004510. If set, then CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV and CFG_SYS_FSL_CORENET_SNOOPVEC_COREONLY must be set. CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV2 (optional) Defines one or two SoC revisions (low 8 bits of SVR) for which the A004510 workaround should be applied. The rest of SVR is either not relevant to the decision of whether the erratum is present (e.g. p2040 versus p2041) or is implied by the build target, which controls whether CONFIG_SYS_FSL_ERRATUM_A004510 is set. See Freescale App Note 4493 for more information about this erratum. CFG_SYS_FSL_CORENET_SNOOPVEC_COREONLY This is the value to write into CCSR offset 0x18600 according to the A004510 workaround. CONFIG_SYS_FSL_SINGLE_SOURCE_CLK Single Source Clock is clocking mode present in some of FSL SoC's. In this mode, a single differential clock is used to supply clocks to the sysclock, ddrclock and usbclock.
Generic CPU options:
CONFIG_SYS_FSL_DDR
Freescale DDR driver in use. This type of DDR controller is
found in mpc83xx, mpc85xx as well as some ARM core SoCs.
CFG_SYS_FSL_DDR_ADDR
Freescale DDR memory-mapped register base.
CONFIG_SYS_FSL_IFC_CLK_DIV
Defines divider of platform clock(clock input to IFC controller).
CONFIG_SYS_FSL_LBC_CLK_DIV
Defines divider of platform clock(clock input to eLBC controller).
CFG_SYS_FSL_DDR_SDRAM_BASE_PHY
Physical address from the view of DDR controllers. It is the
same as CFG_SYS_DDR_SDRAM_BASE for all Power SoCs. But
it could be different for ARM SoCs.
ARM options: CFG_SYS_EXCEPTION_VECTORS_HIGH Select high exception vectors of the ARM core, e.g., do not clear the V bit of the c1 register of CP15. COUNTER_FREQUENCY Generic timer clock source frequency. COUNTER_FREQUENCY_REAL Generic timer clock source frequency if the real clock is different from COUNTER_FREQUENCY, and can only be determined at run time.
Linux Kernel Interface: CONFIG_OF_LIBFDT New kernel versions are expecting firmware settings to be passed using flattened device trees (based on open firmware concepts). CONFIG_OF_LIBFDT * New libfdt-based support * Adds the "fdt" command * The bootm command automatically updates the fdt OF_TBCLK - The timebase frequency. boards with QUICC Engines require OF_QE to set UCC MAC addresses CONFIG_OF_IDE_FIXUP U-Boot can detect if an IDE device is present or not. If not, and this new config option is activated, U-Boot removes the ATA node from the DTS before booting Linux, so the Linux IDE driver does not probe the device and crash. This is needed for buggy hardware (uc101) where no pull down resistor is connected to the signal IDE5V_DD7.
vxWorks boot parameters:
bootvx constructs a valid bootline using the following
environments variables: bootdev, bootfile, ipaddr, netmask,
serverip, gatewayip, hostname, othbootargs.
It loads the vxWorks image pointed bootfile.
Note: If a "bootargs" environment is defined, it will override
the defaults discussed just above.
Cache Configuration for ARM: CFG_SYS_PL310_BASE - Physical base address of PL310 controller register space
Serial Ports: CFG_PL011_CLOCK If you have Amba PrimeCell PL011 UARTs, set this variable to the clock speed of the UARTs. CFG_PL01x_PORTS If you have Amba PrimeCell PL010 or PL011 UARTs on your board, define this to a list of base addresses for each (supported) port. See e.g. include/configs/versatile.h CONFIG_SERIAL_HW_FLOW_CONTROL Define this variable to enable hw flow control in serial driver. Current user of this option is drivers/serial/nsl16550.c driver
Removal of commands If no commands are needed to boot, you can disable CONFIG_CMDLINE to remove them. In this case, the command line will not be available, and when U-Boot wants to execute the boot command (on start-up) it will call board_run_command() instead. This can reduce image size significantly for very simple boot procedures.
Regular expression support: CONFIG_REGEX If this variable is defined, U-Boot is linked against the SLRE (Super Light Regular Expression) library, which adds regex support to some commands, as for example "env grep" and "setexpr".
Watchdog: CFG_SYS_WATCHDOG_FREQ Some platforms automatically call WATCHDOG_RESET() from the timer interrupt handler every CFG_SYS_WATCHDOG_FREQ interrupts. If not set by the board configuration file, a default of CONFIG_SYS_HZ/2 (i.e. 500) is used. Setting CFG_SYS_WATCHDOG_FREQ to 0 disables calling WATCHDOG_RESET() from the timer interrupt.
GPIO Support: The CFG_SYS_I2C_PCA953X_WIDTH option specifies a list of chip-ngpio pairs that tell the PCA953X driver the number of pins supported by a particular chip. Note that if the GPIO device uses I2C, then the I2C interface must also be configured. See I2C Support, below.
Timestamp Support:
When CONFIG_TIMESTAMP is selected, the timestamp
(date and time) of an image is printed by image
commands like bootm or iminfo. This option is
automatically enabled when you select CONFIG_CMD_DATE .
Partition Labels (disklabels) Supported: Zero or more of the following: CONFIG_MAC_PARTITION Apple's MacOS partition table. CONFIG_ISO_PARTITION ISO partition table, used on CDROM etc. CONFIG_EFI_PARTITION GPT partition table, common when EFI is the bootloader. Note 2TB partition limit; see disk/part_efi.c CONFIG_SCSI) you must configure support for at least one non-MTD partition type as well.
NETWORK Support (PCI): CONFIG_E1000_SPI Utility code for direct access to the SPI bus on Intel 8257x. This does not do anything useful unless you set at least one of CONFIG_CMD_E1000 or CONFIG_E1000_SPI_GENERIC. CONFIG_NATSEMI Support for National dp83815 chips. CONFIG_NS8382X Support for National dp8382[01] gigabit chips.
NETWORK Support (other): CONFIG_CALXEDA_XGMAC Support for the Calxeda XGMAC device CONFIG_LAN91C96 Support for SMSC's LAN91C96 chips. CONFIG_LAN91C96_USE_32_BIT Define this to enable 32 bit addressing CFG_SYS_DAVINCI_EMAC_PHY_COUNT Define this if you have more then 3 PHYs. CONFIG_FTGMAC100 Support for Faraday's FTGMAC100 Gigabit SoC Ethernet CONFIG_FTGMAC100_EGIGA Define this to use GE link update with gigabit PHY. Define this if FTGMAC100 is connected to gigabit PHY. If your system has 10/100 PHY only, it might not occur wrong behavior. Because PHY usually return timeout or useless data when polling gigabit status and gigabit control registers. This behavior won't affect the correctnessof 10/100 link speed update. CONFIG_SH_ETHER Support for Renesas on-chip Ethernet controller
TPM Support: CONFIG_TPM Support TPM devices. CONFIG_TPM_TIS_INFINEON Support for Infineon i2c bus TPM devices. Only one device per system is supported at this time. CONFIG_TPM_TIS_I2C_BURST_LIMITATION Define the burst count bytes upper limit CONFIG_TPM_ATMEL_TWI Support for Atmel TWI TPM device. Requires I2C support. CONFIG_TPM_TIS_LPC Support for generic
No open issues yet, or sync has not completed.