What is difference between U-Boot and BIOS ? Are both these devices present on a particular CPU or once a single device can be present at a time? It would be nice if someone provides examples.
What is difference between U-Boot and BIOS ? Are both these devices present on a particular CPU or once a single device can be present at a time?
There are numerous difference between U-Boot and a BIOS.
BTW these are both software, not "devices".
BIOS is essentially a PC concept, having appeared in CP/M personal computers and the original IBM PC.
U-Boot tries to live up to its name ("Universal Boot"), and has been ported to many architectures/platforms.
BIOS functions include basic system initialization after a reset or powerup, performing Power On Self Tests (aka POST), provide an interactive hardware configuration interface (aka BIOS setup) and bootstraping the PC. The use of the integrated device drivers of the original IBM PC's BIOS has been abandoned in favor of OS device drivers.
U-Boot functions include basic system initialization and bootstraping the system. The booting sequence can optionally be aborted to enter an interactive command-line session. Since U-Boot is extensible, any number of features can be configured in or added, such as POST and other diagnostics, filesystem maintenance utilities, network capabilities such as retrieving time-of-day (SNTP) or an IP address (DHCP client), and reading/writing/modifying memory locations. The actual features and capabilities of U-Boot will vary on system/installation to system.
BIOS handles the initial startup of the PC as first-stage bootloader. It typically executes in place (XIP) in the Flash memory that it resides in.
U-Boot is typically a second (or even third) stage bootloader. It could be the 1st-stage bootloader like a BIOS, since it can XIP, but I'm not aware if any platform has actually done that. Typically U-Boot is loaded from Flash memory and executed in main memory, e.g. SDRAM.
As a first-stage bootloader the BIOS is rather limited as it what it loads and executes, such as the Master Boot Record (MBR) from a hard disk. The BIOS does not typically load the actual OS image.
U-Boot, when it is provided the uImage file format, is aware of the OS it is loading, and can properly prepare memory buffers and parameters for proper OS initialization.
BIOS, since it is PC based, typically uses the video adapter and keyboard as operator I/O devices.
U-Boot typically uses a RS232 serial port as the operator I/O device.
The original IBM PC BIOS was published in the IBM PC technical documents as an x86 assembly language listing. Modern versions sold by AMI, Award and Phoenix are proprietary.
U-Boot is released under the GNU GPL.
Linux on PCs typically use Grub as the post-BIOS bootstrap program. I suppose U-Boot could be used in place of Grub, but I don't know the reasons for or against such an implementation.
1U-Boot understands disk partitions, and file systems such as FAT or ext2fs, and can load a kernel + initrd off of them (or even TFTP) instead of having a bootloader on the disk do that. Because of this, GRUB is not needed. Other differences - U-Boot stores its configuration in flash as environment-style variables instead of CMOS/ESCD/NVRAM. Feb 17, 2014 at 0:32
1Baytrail (Intel Atom E3800) is supported by U-Boot. It can be flashed to the SPI flash and booted directly. It first does XIP, then runs with Cache-as-RAM, then runs in RAM. It requires Intel's FSP. Also, U-Boot can be used as a payload of Coreboot, so any board that is supported by Coreboot can probably use U-Boot with minimal effort.– jpkottaNov 3, 2017 at 21:38
U-Boot is typically a second (or even third) stage bootloaderI believe only for PCs. Most SBCs such raspberry pi directly boats by uboot, without the existence for bios Dec 9, 2021 at 12:27
@FindOut_Quran "I believe ..." -- What you believe is incorrect. GRUB is preferred to U-Boot on PCs. The RPi is an anomaly, but does not "directly" execute U-Boot. There'a ROM program involved. FYI I've worked on and/or extracted the boot logs of dozens of embedded boards and devices (e.g. eval boards, set-top boxes, IP cameras, DVRs, and televisions) with SoCs from Atmel, TI, NXP, Marvel, AllWinner, MediaTek, Goku, Etrax,. and all used U-Boot as a 2nd or 3rd stage bootloader. The first stage boot is in the ROM of the SoC.– sawdustDec 9, 2021 at 21:41
Ok sounds good. But about nanopc t2 which I used, it is based on soc from Samsung that uses arm, and has an EEPROM that only has Mac address store, no special logic behind uboot(btw it is completely open source, even some part of the EEPROM can be programmed) see wiki.friendlyarm.com/wiki/index.php/NanoPC-T2#EEPROM Dec 10, 2021 at 8:41
I believe that the difference is that U-boot is Open Source.
U-Boot was first created for a 8xx PowerPC. It was moved to sourceforge.net with the name of PPCBoot. Two years later it merged with ARMBoot, a bootloader for ARM cpu. Then, it evolved to support various other chips and platforms.
BIOS was created for IBM PCs. So I think it is closed source.
The main difference is that u-boot is just a bootloader. A Bios is a bootloader and functions to use the hardware on your board.
This is a good answer. The BIOS exists as a sort of library in memory space. Back in the MS-DOS days making calls to the BIOS (interrupts) was how you drew graphics to the screen (See Int 10h); now you use an OS driver, but the BIOS is still there if you want to do VGA graphics from real mode. U-boot, on the otherhand, provides no additional function after execution is passed to the OS kernel. en.wikipedia.org/wiki/INT_10H– bobpaulJun 22, 2017 at 16:21
1When using the U-Boot UEFI implementation to boot the operating system the UEFI runtime stays in memory.– XypronSep 23, 2018 at 8:36
Generally speaking there isn't a difference. Both U-Boot and BIOS are forms of boot loaders. You would not have both on one system, you take one or the other.
Your BIOS (Basic Input/Output System) is a complex set of flash stores software which runs on power-up to initialize your system hardware and load the operating system.
U-Boot is an open source boot loader which is used on various linux systems and I believe some ARM systems use it. Once again it is used to process hardware and operating systems on start up.
Apologies if this is a bit brief. If you want to read the full details around u-boot it is available through their github and the internet is covered in information regarding BIOS.