SlideShare a Scribd company logo
Team Emertxe
Embedded Boot Loaders
U-Boot
Contents
U-Boot
Contents
● Introduction
● Source Tree
● Building
● Responsibility
● Important Commands
U-Boot Introduction
U-Boot
Introduction - General
● The "Universal Bootloader" ("Das U-Boot") is a monitor
program
● Free Software: full source code under GPL
● Can get at: //www.denx.de/wiki/U-Boot
● Production quality: used as default boot loader by several
board vendors
● Portable and easy to port and to debug
● Many supported architectures: PPC, ARM, MIPS, x86,
m68k, NIOS, Microblaze
U-Boot
Introduction - General
● More than 216 boards supported by public source tree
● Simple user interface: CLI or Hush shell
● Environment variable storing option on different media
like EEPROM, Flash etc
● Advanced command supports
U-Boot
Introduction – Design Principles
● Easy to port to new architectures, new processors, and
new boards
● Easy to debug: serial console output as soon as possible
● Features and commands configurable
● As small as possible
● As reliable as possible
U-Boot Source Tree
U-Boot
Source Code Browsing
● Untar the U-Boot code
– tar xvf u-boot-<version>.tar.bz2
● Enter the U-Boot directory
– cd u-boot-<version>
● The following slide discuss the contents of the U-Boot
directory
U-Boot
Source Tree
● The left side of the slide
shows the source content of
the U-Boot
● The directory structure might
vary depending on the picked
version.
● The considered version is
u-boot-2015-01
● Lets us discuss some
important directories and files
driver
api
arch
board
common
configs
post
scripts
dts
examples
fs
include
lib
test
tools
Makefile
disk net
doc
u-boot-<version>
U-Boot
Source Tree
● Machine/arch independent API
for external apps
driver
api
arch
board
common
configs
post
scripts
dts
examples
fs
include
lib
test
tools
Makefile
disk net
doc
u-boot-<version>
U-Boot
Source Tree
● All architecture dependent
functions
● CPU specific information
– <core>/cpu.c
– <core>/interrupt.c
– <core>/start.S
driver
api
arch
board
common
configs
post
scripts
dts
examples
fs
include
lib
test
tools
Makefile
disk net
doc
u-boot-<version>
U-Boot
Source Tree
● Platform, board level files.
Eg, atmel, icecube, oxc etc.,
● Contains all board specific
initialization
– <boardname>/flash.c
– <boardname>/<boardname>_emac.c
– <boardname>/<boardname>.c
– <boardname>/soc.h
– <boardname>/platform.S
driver
api
arch
board
common
configs
post
scripts
dts
examples
fs
include
lib
test
tools
Makefile
disk net
doc
u-boot-<version>
U-Boot
Source Tree
● All architecture independent
functions
● All the commands
driver
api
arch
board
common
configs
post
scripts
dts
examples
fs
include
lib
test
tools
Makefile
disk net
doc
u-boot-<version>
U-Boot
Source Tree
● Default configuration files for
boards
driver
api
arch
board
common
configs
post
scripts
dts
examples
fs
include
lib
test
tools
Makefile
disk net
doc
u-boot-<version>
U-Boot
Source Tree
● Partition and device
information for disks
driver
api
arch
board
common
configs
post
scripts
dts
examples
fs
include
lib
test
tools
Makefile
disk net
doc
u-boot-<version>
U-Boot
Source Tree
● You can find all the README
files here
driver
api
arch
board
common
configs
post
scripts
dts
examples
fs
include
lib
test
tools
Makefile
disk net
doc
u-boot-<version>
U-Boot
Source Tree
● Various device drivers files
driver
api
arch
board
common
configs
post
scripts
dts
examples
fs
include
lib
test
tools
Makefile
disk net
doc
u-boot-<version>
U-Boot
Source Tree
● Contains Makefile for building
internal U-Boot fdt
driver
api
arch
board
common
configs
post
scripts
dts
examples
fs
include
lib
test
tools
Makefile
disk net
doc
u-boot-<version>
U-Boot
Source Tree
● Example code for standalone
application
driver
api
arch
board
common
configs
post
scripts
dts
examples
fs
include
lib
test
tools
Makefile
disk net
doc
u-boot-<version>
U-Boot
Source Tree
● File system directories and
codes
driver
api
arch
board
common
configs
post
scripts
dts
examples
fs
include
lib
test
tools
Makefile
disk net
doc
u-boot-<version>
U-Boot
Source Tree
● Various header files
– configs/<boardname>.h
– <core>.h
driver
api
arch
board
common
configs
post
scripts
dts
examples
fs
include
lib
test
tools
Makefile
disk net
doc
u-boot-<version>
U-Boot
Source Tree
● Processor specific libraries
– board.c
– <arch>linux.c
– div0.c
driver
api
arch
board
common
configs
post
scripts
dts
examples
fs
include
lib
test
tools
Makefile
disk net
doc
u-boot-<version>
U-Boot
Source Tree
● Networking related files.
driver
api
arch
board
common
configs
post
scripts
dts
examples
fs
include
lib
test
tools
Makefile
disk net
doc
u-boot-<version>
U-Boot
Source Tree
● Power On Self Test
driver
api
arch
board
common
configs
post
scripts
dts
examples
fs
include
lib
test
tools
Makefile
disk net
doc
u-boot-<version>
U-Boot
Source Tree
● Contains the sources for
various helper programs
driver
api
arch
board
common
configs
post
scripts
dts
examples
fs
include
lib
test
tools
Makefile
disk net
doc
u-boot-<version>
U-Boot
Source Tree
driver
api
arch
board
common
configs
post
scripts
dts
examples
fs
include
lib
test
tools
Makefile
disk net
doc
u-boot-<version>
U-Boot
Source Tree
● Various tools directories and
files
driver
api
arch
board
common
configs
post
scripts
dts
examples
fs
include
lib
test
tools
Makefile
disk net
doc
u-boot-<version>
U-Boot
Source Tree
● Top level make file for Uboot
build and configuration
driver
api
arch
board
common
configs
post
scripts
dts
examples
fs
include
lib
test
tools
Makefile
disk net
doc
u-boot-<version>
U-Boot Building
U-Boot
Building
● The include/configs/ directory contains one configuration
file for each supported board
– It defines the CPU type, the peripherals and their
configuration, the memory mapping, the Uboot features
that should be compiled in, etc.
– It is a simple .h file that sets preprocessor constants. See
the README file for the documentation of these constants.
● Assuming that your board is already supported by Uboot,
there should be a config corresponding to your board, for
example include/configs/at91rm9200ek.h
U-Boot
Building
● We need to configure U-Boot for the required board
which is generally done as
make <board_name>_config
● The board_name can be found in include/configs/
directory
● The newer version supports kernel like configuration
options like make menuconfig
● Compile Uboot, by specifying the cross compiler prefix.
make CROSS_COMPILE=<cross_compile_path>
U-Boot
Building
● cross_compile_path could be the command itself if
already exported in PATH variable, else you can specify
the installation path of command
● For example for arm platform it would look like
make CROSS_COMPILE=arm-linux-
● The result would be u-boot.bin which has to be stored in
flash memory (in most of the cases)
● The invocation of the stored image depends on the target
architecture. The memory used to store would play the
role here
U-Boot Introduction
U-Boot
Responsibility
Execute from flash (If configured). Do POST
Relocate to RAM
Setup console for user interaction
Setup device driver for kernel (& RFS) image
Choose the kernel (& RFS) image
Download the kernel (& RFS) image
Choose the kernel (& RFS) imageChoose the kernel (& RFS) image
Setup kernel command line arguments
Jump to kernel start address
Codeflow
U-Boot Important Commands
U-Boot
Utilities
● Environment Variables
● Commands
– Information
– Environment
– Network
– Boot
– Data Transfer
– Memory
U-Boot
Environment Variables
● bootcmd : Contains the command that U-Boot will
automatically execute at boot time after
a configurable delay, if the process is not
interrupted
● bootargs : contains the arguments passed to the
Linux kernel
● serverip : Server (Host) ip address for network
related commands
● ipaddr : Local ip address of the target
● ethaddr : MAC address. Will be set once
U-Boot
Important Environment Variables
● netmask : The network mask to communicate with
the server
● bootdelay : Time in seconds to delay the boot process
so that the u-boot can be interrupted
before executing bootcmd
● autostart : If set the loaded image in memory will be
executed automatically
U-Boot
Important Commands – Information
● help : Help command. Can be used to list all
supported built commands
● flinfo : Display flash informations (NOR and SPI
Flash)
● nand info : Display NAND flash informations
U-Boot
Important Commands – Environment
● printenv : Print all set environment variables
● setenv : Set the environment variable
● saveenv : Save environment variable to configured
memory
U-Boot
Important Commands – Network
● ping : Checks for network connectivity
U-Boot
Important Commands – Boot
● boot : Runs the default boot command, stored in
bootcmd variable
● bootm : Boot memory. Starts a kernel image
loaded at the specified address in RAM
Example: bootm <address>
U-Boot
Important Commands – Data Transfer
● loadb
● loads
● loady
: Load a file from the serial line to RAM
● tftpboot : Loads a file from the network to RAM
Example: tftpboot <address>
U-Boot
Important Commands – Memory
● erase : Erase the content of NOR flash
● protect : Protect the content of NOR flash
● cp : Write to NOR flash
● nand : Erase, read, write to NAND flash
Thank You
Ad

More Related Content

What's hot (20)

Uboot startup sequence
Uboot startup sequenceUboot startup sequence
Uboot startup sequence
Houcheng Lin
 
Introduction to Modern U-Boot
Introduction to Modern U-BootIntroduction to Modern U-Boot
Introduction to Modern U-Boot
GlobalLogic Ukraine
 
U Boot or Universal Bootloader
U Boot or Universal BootloaderU Boot or Universal Bootloader
U Boot or Universal Bootloader
Satpal Parmar
 
Embedded_Linux_Booting
Embedded_Linux_BootingEmbedded_Linux_Booting
Embedded_Linux_Booting
Rashila Rr
 
Jagan Teki - U-boot from scratch
Jagan Teki - U-boot from scratchJagan Teki - U-boot from scratch
Jagan Teki - U-boot from scratch
linuxlab_conf
 
U-Boot presentation 2013
U-Boot presentation  2013U-Boot presentation  2013
U-Boot presentation 2013
Wave Digitech
 
Embedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernelEmbedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernel
Emertxe Information Technologies Pvt Ltd
 
Arm device tree and linux device drivers
Arm device tree and linux device driversArm device tree and linux device drivers
Arm device tree and linux device drivers
Houcheng Lin
 
Run Qt on Linux embedded systems using Yocto
Run Qt on Linux embedded systems using YoctoRun Qt on Linux embedded systems using Yocto
Run Qt on Linux embedded systems using Yocto
Marco Cavallini
 
Embedded Linux BSP Training (Intro)
Embedded Linux BSP Training (Intro)Embedded Linux BSP Training (Intro)
Embedded Linux BSP Training (Intro)
RuggedBoardGroup
 
U boot-boot-flow
U boot-boot-flowU boot-boot-flow
U boot-boot-flow
BabuSubashChandar Chandra Mohan
 
Linux Kernel Booting Process (1) - For NLKB
Linux Kernel Booting Process (1) - For NLKBLinux Kernel Booting Process (1) - For NLKB
Linux Kernel Booting Process (1) - For NLKB
shimosawa
 
Qemu Introduction
Qemu IntroductionQemu Introduction
Qemu Introduction
Chiawei Wang
 
Embedded Operating System - Linux
Embedded Operating System - LinuxEmbedded Operating System - Linux
Embedded Operating System - Linux
Emertxe Information Technologies Pvt Ltd
 
I2c drivers
I2c driversI2c drivers
I2c drivers
Pradeep Tewani
 
Embedded Android : System Development - Part II (Linux device drivers)
Embedded Android : System Development - Part II (Linux device drivers)Embedded Android : System Development - Part II (Linux device drivers)
Embedded Android : System Development - Part II (Linux device drivers)
Emertxe Information Technologies Pvt Ltd
 
Build your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectBuild your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto project
Yen-Chin Lee
 
Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...
Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...
Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...
Linaro
 
Linux Kernel MMC Storage driver Overview
Linux Kernel MMC Storage driver OverviewLinux Kernel MMC Storage driver Overview
Linux Kernel MMC Storage driver Overview
RajKumar Rampelli
 
Bootloaders
BootloadersBootloaders
Bootloaders
Anil Kumar Pugalia
 
Uboot startup sequence
Uboot startup sequenceUboot startup sequence
Uboot startup sequence
Houcheng Lin
 
U Boot or Universal Bootloader
U Boot or Universal BootloaderU Boot or Universal Bootloader
U Boot or Universal Bootloader
Satpal Parmar
 
Embedded_Linux_Booting
Embedded_Linux_BootingEmbedded_Linux_Booting
Embedded_Linux_Booting
Rashila Rr
 
Jagan Teki - U-boot from scratch
Jagan Teki - U-boot from scratchJagan Teki - U-boot from scratch
Jagan Teki - U-boot from scratch
linuxlab_conf
 
U-Boot presentation 2013
U-Boot presentation  2013U-Boot presentation  2013
U-Boot presentation 2013
Wave Digitech
 
Arm device tree and linux device drivers
Arm device tree and linux device driversArm device tree and linux device drivers
Arm device tree and linux device drivers
Houcheng Lin
 
Run Qt on Linux embedded systems using Yocto
Run Qt on Linux embedded systems using YoctoRun Qt on Linux embedded systems using Yocto
Run Qt on Linux embedded systems using Yocto
Marco Cavallini
 
Embedded Linux BSP Training (Intro)
Embedded Linux BSP Training (Intro)Embedded Linux BSP Training (Intro)
Embedded Linux BSP Training (Intro)
RuggedBoardGroup
 
Linux Kernel Booting Process (1) - For NLKB
Linux Kernel Booting Process (1) - For NLKBLinux Kernel Booting Process (1) - For NLKB
Linux Kernel Booting Process (1) - For NLKB
shimosawa
 
Build your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectBuild your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto project
Yen-Chin Lee
 
Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...
Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...
Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...
Linaro
 
Linux Kernel MMC Storage driver Overview
Linux Kernel MMC Storage driver OverviewLinux Kernel MMC Storage driver Overview
Linux Kernel MMC Storage driver Overview
RajKumar Rampelli
 

Viewers also liked (20)

A practical guide to buildroot
A practical guide to buildrootA practical guide to buildroot
A practical guide to buildroot
Emertxe Information Technologies Pvt Ltd
 
Emertxe : Linux training portfolio
Emertxe : Linux training portfolioEmertxe : Linux training portfolio
Emertxe : Linux training portfolio
Emertxe Information Technologies Pvt Ltd
 
Emertxe : Training portfolio
Emertxe : Training portfolioEmertxe : Training portfolio
Emertxe : Training portfolio
Emertxe Information Technologies Pvt Ltd
 
Interview preparation workshop
Interview preparation workshopInterview preparation workshop
Interview preparation workshop
Emertxe Information Technologies Pvt Ltd
 
Resume Preparation - Workshop
Resume Preparation - WorkshopResume Preparation - Workshop
Resume Preparation - Workshop
Emertxe Information Technologies Pvt Ltd
 
Introduction to Embedded Systems
Introduction to Embedded Systems Introduction to Embedded Systems
Introduction to Embedded Systems
Emertxe Information Technologies Pvt Ltd
 
Embedded Android : System Development - Part III
Embedded Android : System Development - Part IIIEmbedded Android : System Development - Part III
Embedded Android : System Development - Part III
Emertxe Information Technologies Pvt Ltd
 
Embedded Android : System Development - Part IV
Embedded Android : System Development - Part IVEmbedded Android : System Development - Part IV
Embedded Android : System Development - Part IV
Emertxe Information Technologies Pvt Ltd
 
Getting started with BeagleBone Black - Embedded Linux
Getting started with BeagleBone Black - Embedded LinuxGetting started with BeagleBone Black - Embedded Linux
Getting started with BeagleBone Black - Embedded Linux
Emertxe Information Technologies Pvt Ltd
 
BusyBox for Embedded Linux
BusyBox for Embedded LinuxBusyBox for Embedded Linux
BusyBox for Embedded Linux
Emertxe Information Technologies Pvt Ltd
 
File systems for Embedded Linux
File systems for Embedded LinuxFile systems for Embedded Linux
File systems for Embedded Linux
Emertxe Information Technologies Pvt Ltd
 
Embedded Linux - Building toolchain
Embedded Linux - Building toolchainEmbedded Linux - Building toolchain
Embedded Linux - Building toolchain
Emertxe Information Technologies Pvt Ltd
 
Linux systems - Getting started with setting up and embedded platform
Linux systems - Getting started with setting up and embedded platformLinux systems - Getting started with setting up and embedded platform
Linux systems - Getting started with setting up and embedded platform
Emertxe Information Technologies Pvt Ltd
 
Embedded Android : System Development - Part I
Embedded Android : System Development - Part IEmbedded Android : System Development - Part I
Embedded Android : System Development - Part I
Emertxe Information Technologies Pvt Ltd
 
Communication Protocols (UART, SPI,I2C)
Communication Protocols (UART, SPI,I2C)Communication Protocols (UART, SPI,I2C)
Communication Protocols (UART, SPI,I2C)
Emertxe Information Technologies Pvt Ltd
 
x86 & PE
x86 & PEx86 & PE
x86 & PE
Ange Albertini
 
LCA 2013 - Baremetal Provisioning with Openstack
LCA 2013 - Baremetal Provisioning with OpenstackLCA 2013 - Baremetal Provisioning with Openstack
LCA 2013 - Baremetal Provisioning with Openstack
Devananda Van Der Veen
 
ONIE LinuxCon 2015
ONIE LinuxCon 2015ONIE LinuxCon 2015
ONIE LinuxCon 2015
Curt Brune
 
U Boot Presentation Final
U Boot Presentation FinalU Boot Presentation Final
U Boot Presentation Final
ktrefz
 
Bootstrap process of u boot (NDS32 RISC CPU)
Bootstrap process of u boot (NDS32 RISC CPU)Bootstrap process of u boot (NDS32 RISC CPU)
Bootstrap process of u boot (NDS32 RISC CPU)
Macpaul Lin
 
LCA 2013 - Baremetal Provisioning with Openstack
LCA 2013 - Baremetal Provisioning with OpenstackLCA 2013 - Baremetal Provisioning with Openstack
LCA 2013 - Baremetal Provisioning with Openstack
Devananda Van Der Veen
 
ONIE LinuxCon 2015
ONIE LinuxCon 2015ONIE LinuxCon 2015
ONIE LinuxCon 2015
Curt Brune
 
U Boot Presentation Final
U Boot Presentation FinalU Boot Presentation Final
U Boot Presentation Final
ktrefz
 
Bootstrap process of u boot (NDS32 RISC CPU)
Bootstrap process of u boot (NDS32 RISC CPU)Bootstrap process of u boot (NDS32 RISC CPU)
Bootstrap process of u boot (NDS32 RISC CPU)
Macpaul Lin
 
Ad

Similar to U-Boot - An universal bootloader (20)

Linux
LinuxLinux
Linux
Kavi Bharathi R
 
An Introduction To Linux
An Introduction To LinuxAn Introduction To Linux
An Introduction To Linux
Ishan A B Ambanwela
 
01 linux-quick-start
01 linux-quick-start01 linux-quick-start
01 linux-quick-start
Nguyen Vinh
 
HKG15-311: OP-TEE for Beginners and Porting Review
HKG15-311: OP-TEE for Beginners and Porting ReviewHKG15-311: OP-TEE for Beginners and Porting Review
HKG15-311: OP-TEE for Beginners and Porting Review
Linaro
 
How to build and load linux to embedded system
How to build and load linux to embedded systemHow to build and load linux to embedded system
How to build and load linux to embedded system
Игорь Медведев
 
Linux Commands - Cheat Sheet
Linux Commands - Cheat Sheet Linux Commands - Cheat Sheet
Linux Commands - Cheat Sheet
Isham Rashik
 
LCU14 302- How to port OP-TEE to another platform
LCU14 302- How to port OP-TEE to another platformLCU14 302- How to port OP-TEE to another platform
LCU14 302- How to port OP-TEE to another platform
Linaro
 
The Deck by Phil Polstra GrrCON2012
The Deck by Phil Polstra GrrCON2012The Deck by Phil Polstra GrrCON2012
The Deck by Phil Polstra GrrCON2012
Philip Polstra
 
Grub and dracut ii
Grub and dracut iiGrub and dracut ii
Grub and dracut ii
plarsen67
 
UCL All of the Things (MeetBSD California 2014 Lightning Talk)
UCL All of the Things (MeetBSD California 2014 Lightning Talk)UCL All of the Things (MeetBSD California 2014 Lightning Talk)
UCL All of the Things (MeetBSD California 2014 Lightning Talk)
iXsystems
 
A million ways to provision embedded linux devices
A million ways to provision embedded linux devicesA million ways to provision embedded linux devices
A million ways to provision embedded linux devices
Mender.io
 
Dev ops
Dev opsDev ops
Dev ops
Tom Hall
 
Masters porting linux
Masters porting linuxMasters porting linux
Masters porting linux
Shashank Asthana
 
Android on Intel Architecture: ROM Cooking Tutorial
Android on Intel Architecture: ROM Cooking TutorialAndroid on Intel Architecture: ROM Cooking Tutorial
Android on Intel Architecture: ROM Cooking Tutorial
Ron Munitz
 
Embedded Fest 2019. Игорь Опанюк. Das U-boot v2019: a look under the hood
Embedded Fest 2019. Игорь Опанюк. Das U-boot v2019: a look under the hoodEmbedded Fest 2019. Игорь Опанюк. Das U-boot v2019: a look under the hood
Embedded Fest 2019. Игорь Опанюк. Das U-boot v2019: a look under the hood
EmbeddedFest
 
Basis Linux (aan de hand van LPIC-1)
Basis Linux (aan de hand van LPIC-1)Basis Linux (aan de hand van LPIC-1)
Basis Linux (aan de hand van LPIC-1)
Peter Martin
 
Study on Android Emulator
Study on Android EmulatorStudy on Android Emulator
Study on Android Emulator
Samael Wang
 
Basic Linux Internals
Basic Linux InternalsBasic Linux Internals
Basic Linux Internals
mukul bhardwaj
 
Linux
LinuxLinux
Linux
Giridaran Manivannan
 
Strategies for developing and deploying your embedded applications and images
Strategies for developing and deploying your embedded applications and imagesStrategies for developing and deploying your embedded applications and images
Strategies for developing and deploying your embedded applications and images
Mender.io
 
01 linux-quick-start
01 linux-quick-start01 linux-quick-start
01 linux-quick-start
Nguyen Vinh
 
HKG15-311: OP-TEE for Beginners and Porting Review
HKG15-311: OP-TEE for Beginners and Porting ReviewHKG15-311: OP-TEE for Beginners and Porting Review
HKG15-311: OP-TEE for Beginners and Porting Review
Linaro
 
Linux Commands - Cheat Sheet
Linux Commands - Cheat Sheet Linux Commands - Cheat Sheet
Linux Commands - Cheat Sheet
Isham Rashik
 
LCU14 302- How to port OP-TEE to another platform
LCU14 302- How to port OP-TEE to another platformLCU14 302- How to port OP-TEE to another platform
LCU14 302- How to port OP-TEE to another platform
Linaro
 
The Deck by Phil Polstra GrrCON2012
The Deck by Phil Polstra GrrCON2012The Deck by Phil Polstra GrrCON2012
The Deck by Phil Polstra GrrCON2012
Philip Polstra
 
Grub and dracut ii
Grub and dracut iiGrub and dracut ii
Grub and dracut ii
plarsen67
 
UCL All of the Things (MeetBSD California 2014 Lightning Talk)
UCL All of the Things (MeetBSD California 2014 Lightning Talk)UCL All of the Things (MeetBSD California 2014 Lightning Talk)
UCL All of the Things (MeetBSD California 2014 Lightning Talk)
iXsystems
 
A million ways to provision embedded linux devices
A million ways to provision embedded linux devicesA million ways to provision embedded linux devices
A million ways to provision embedded linux devices
Mender.io
 
Android on Intel Architecture: ROM Cooking Tutorial
Android on Intel Architecture: ROM Cooking TutorialAndroid on Intel Architecture: ROM Cooking Tutorial
Android on Intel Architecture: ROM Cooking Tutorial
Ron Munitz
 
Embedded Fest 2019. Игорь Опанюк. Das U-boot v2019: a look under the hood
Embedded Fest 2019. Игорь Опанюк. Das U-boot v2019: a look under the hoodEmbedded Fest 2019. Игорь Опанюк. Das U-boot v2019: a look under the hood
Embedded Fest 2019. Игорь Опанюк. Das U-boot v2019: a look under the hood
EmbeddedFest
 
Basis Linux (aan de hand van LPIC-1)
Basis Linux (aan de hand van LPIC-1)Basis Linux (aan de hand van LPIC-1)
Basis Linux (aan de hand van LPIC-1)
Peter Martin
 
Study on Android Emulator
Study on Android EmulatorStudy on Android Emulator
Study on Android Emulator
Samael Wang
 
Strategies for developing and deploying your embedded applications and images
Strategies for developing and deploying your embedded applications and imagesStrategies for developing and deploying your embedded applications and images
Strategies for developing and deploying your embedded applications and images
Mender.io
 
Ad

More from Emertxe Information Technologies Pvt Ltd (20)

Career Transition (1).pdf
Career Transition (1).pdfCareer Transition (1).pdf
Career Transition (1).pdf
Emertxe Information Technologies Pvt Ltd
 
10_isxdigit.pdf
10_isxdigit.pdf10_isxdigit.pdf
10_isxdigit.pdf
Emertxe Information Technologies Pvt Ltd
 
01_student_record.pdf
01_student_record.pdf01_student_record.pdf
01_student_record.pdf
Emertxe Information Technologies Pvt Ltd
 
02_swap.pdf
02_swap.pdf02_swap.pdf
02_swap.pdf
Emertxe Information Technologies Pvt Ltd
 
01_sizeof.pdf
01_sizeof.pdf01_sizeof.pdf
01_sizeof.pdf
Emertxe Information Technologies Pvt Ltd
 
07_product_matrix.pdf
07_product_matrix.pdf07_product_matrix.pdf
07_product_matrix.pdf
Emertxe Information Technologies Pvt Ltd
 
06_sort_names.pdf
06_sort_names.pdf06_sort_names.pdf
06_sort_names.pdf
Emertxe Information Technologies Pvt Ltd
 
05_fragments.pdf
05_fragments.pdf05_fragments.pdf
05_fragments.pdf
Emertxe Information Technologies Pvt Ltd
 
04_magic_square.pdf
04_magic_square.pdf04_magic_square.pdf
04_magic_square.pdf
Emertxe Information Technologies Pvt Ltd
 
03_endianess.pdf
03_endianess.pdf03_endianess.pdf
03_endianess.pdf
Emertxe Information Technologies Pvt Ltd
 
02_variance.pdf
02_variance.pdf02_variance.pdf
02_variance.pdf
Emertxe Information Technologies Pvt Ltd
 
01_memory_manager.pdf
01_memory_manager.pdf01_memory_manager.pdf
01_memory_manager.pdf
Emertxe Information Technologies Pvt Ltd
 
09_nrps.pdf
09_nrps.pdf09_nrps.pdf
09_nrps.pdf
Emertxe Information Technologies Pvt Ltd
 
11_pangram.pdf
11_pangram.pdf11_pangram.pdf
11_pangram.pdf
Emertxe Information Technologies Pvt Ltd
 
10_combinations.pdf
10_combinations.pdf10_combinations.pdf
10_combinations.pdf
Emertxe Information Technologies Pvt Ltd
 
08_squeeze.pdf
08_squeeze.pdf08_squeeze.pdf
08_squeeze.pdf
Emertxe Information Technologies Pvt Ltd
 
07_strtok.pdf
07_strtok.pdf07_strtok.pdf
07_strtok.pdf
Emertxe Information Technologies Pvt Ltd
 
06_reverserec.pdf
06_reverserec.pdf06_reverserec.pdf
06_reverserec.pdf
Emertxe Information Technologies Pvt Ltd
 
05_reverseiter.pdf
05_reverseiter.pdf05_reverseiter.pdf
05_reverseiter.pdf
Emertxe Information Technologies Pvt Ltd
 

Recently uploaded (20)

Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 

U-Boot - An universal bootloader

  • 1. Team Emertxe Embedded Boot Loaders U-Boot
  • 3. U-Boot Contents ● Introduction ● Source Tree ● Building ● Responsibility ● Important Commands
  • 5. U-Boot Introduction - General ● The "Universal Bootloader" ("Das U-Boot") is a monitor program ● Free Software: full source code under GPL ● Can get at: //www.denx.de/wiki/U-Boot ● Production quality: used as default boot loader by several board vendors ● Portable and easy to port and to debug ● Many supported architectures: PPC, ARM, MIPS, x86, m68k, NIOS, Microblaze
  • 6. U-Boot Introduction - General ● More than 216 boards supported by public source tree ● Simple user interface: CLI or Hush shell ● Environment variable storing option on different media like EEPROM, Flash etc ● Advanced command supports
  • 7. U-Boot Introduction – Design Principles ● Easy to port to new architectures, new processors, and new boards ● Easy to debug: serial console output as soon as possible ● Features and commands configurable ● As small as possible ● As reliable as possible
  • 9. U-Boot Source Code Browsing ● Untar the U-Boot code – tar xvf u-boot-<version>.tar.bz2 ● Enter the U-Boot directory – cd u-boot-<version> ● The following slide discuss the contents of the U-Boot directory
  • 10. U-Boot Source Tree ● The left side of the slide shows the source content of the U-Boot ● The directory structure might vary depending on the picked version. ● The considered version is u-boot-2015-01 ● Lets us discuss some important directories and files driver api arch board common configs post scripts dts examples fs include lib test tools Makefile disk net doc u-boot-<version>
  • 11. U-Boot Source Tree ● Machine/arch independent API for external apps driver api arch board common configs post scripts dts examples fs include lib test tools Makefile disk net doc u-boot-<version>
  • 12. U-Boot Source Tree ● All architecture dependent functions ● CPU specific information – <core>/cpu.c – <core>/interrupt.c – <core>/start.S driver api arch board common configs post scripts dts examples fs include lib test tools Makefile disk net doc u-boot-<version>
  • 13. U-Boot Source Tree ● Platform, board level files. Eg, atmel, icecube, oxc etc., ● Contains all board specific initialization – <boardname>/flash.c – <boardname>/<boardname>_emac.c – <boardname>/<boardname>.c – <boardname>/soc.h – <boardname>/platform.S driver api arch board common configs post scripts dts examples fs include lib test tools Makefile disk net doc u-boot-<version>
  • 14. U-Boot Source Tree ● All architecture independent functions ● All the commands driver api arch board common configs post scripts dts examples fs include lib test tools Makefile disk net doc u-boot-<version>
  • 15. U-Boot Source Tree ● Default configuration files for boards driver api arch board common configs post scripts dts examples fs include lib test tools Makefile disk net doc u-boot-<version>
  • 16. U-Boot Source Tree ● Partition and device information for disks driver api arch board common configs post scripts dts examples fs include lib test tools Makefile disk net doc u-boot-<version>
  • 17. U-Boot Source Tree ● You can find all the README files here driver api arch board common configs post scripts dts examples fs include lib test tools Makefile disk net doc u-boot-<version>
  • 18. U-Boot Source Tree ● Various device drivers files driver api arch board common configs post scripts dts examples fs include lib test tools Makefile disk net doc u-boot-<version>
  • 19. U-Boot Source Tree ● Contains Makefile for building internal U-Boot fdt driver api arch board common configs post scripts dts examples fs include lib test tools Makefile disk net doc u-boot-<version>
  • 20. U-Boot Source Tree ● Example code for standalone application driver api arch board common configs post scripts dts examples fs include lib test tools Makefile disk net doc u-boot-<version>
  • 21. U-Boot Source Tree ● File system directories and codes driver api arch board common configs post scripts dts examples fs include lib test tools Makefile disk net doc u-boot-<version>
  • 22. U-Boot Source Tree ● Various header files – configs/<boardname>.h – <core>.h driver api arch board common configs post scripts dts examples fs include lib test tools Makefile disk net doc u-boot-<version>
  • 23. U-Boot Source Tree ● Processor specific libraries – board.c – <arch>linux.c – div0.c driver api arch board common configs post scripts dts examples fs include lib test tools Makefile disk net doc u-boot-<version>
  • 24. U-Boot Source Tree ● Networking related files. driver api arch board common configs post scripts dts examples fs include lib test tools Makefile disk net doc u-boot-<version>
  • 25. U-Boot Source Tree ● Power On Self Test driver api arch board common configs post scripts dts examples fs include lib test tools Makefile disk net doc u-boot-<version>
  • 26. U-Boot Source Tree ● Contains the sources for various helper programs driver api arch board common configs post scripts dts examples fs include lib test tools Makefile disk net doc u-boot-<version>
  • 28. U-Boot Source Tree ● Various tools directories and files driver api arch board common configs post scripts dts examples fs include lib test tools Makefile disk net doc u-boot-<version>
  • 29. U-Boot Source Tree ● Top level make file for Uboot build and configuration driver api arch board common configs post scripts dts examples fs include lib test tools Makefile disk net doc u-boot-<version>
  • 31. U-Boot Building ● The include/configs/ directory contains one configuration file for each supported board – It defines the CPU type, the peripherals and their configuration, the memory mapping, the Uboot features that should be compiled in, etc. – It is a simple .h file that sets preprocessor constants. See the README file for the documentation of these constants. ● Assuming that your board is already supported by Uboot, there should be a config corresponding to your board, for example include/configs/at91rm9200ek.h
  • 32. U-Boot Building ● We need to configure U-Boot for the required board which is generally done as make <board_name>_config ● The board_name can be found in include/configs/ directory ● The newer version supports kernel like configuration options like make menuconfig ● Compile Uboot, by specifying the cross compiler prefix. make CROSS_COMPILE=<cross_compile_path>
  • 33. U-Boot Building ● cross_compile_path could be the command itself if already exported in PATH variable, else you can specify the installation path of command ● For example for arm platform it would look like make CROSS_COMPILE=arm-linux- ● The result would be u-boot.bin which has to be stored in flash memory (in most of the cases) ● The invocation of the stored image depends on the target architecture. The memory used to store would play the role here
  • 35. U-Boot Responsibility Execute from flash (If configured). Do POST Relocate to RAM Setup console for user interaction Setup device driver for kernel (& RFS) image Choose the kernel (& RFS) image Download the kernel (& RFS) image Choose the kernel (& RFS) imageChoose the kernel (& RFS) image Setup kernel command line arguments Jump to kernel start address Codeflow
  • 37. U-Boot Utilities ● Environment Variables ● Commands – Information – Environment – Network – Boot – Data Transfer – Memory
  • 38. U-Boot Environment Variables ● bootcmd : Contains the command that U-Boot will automatically execute at boot time after a configurable delay, if the process is not interrupted ● bootargs : contains the arguments passed to the Linux kernel ● serverip : Server (Host) ip address for network related commands ● ipaddr : Local ip address of the target ● ethaddr : MAC address. Will be set once
  • 39. U-Boot Important Environment Variables ● netmask : The network mask to communicate with the server ● bootdelay : Time in seconds to delay the boot process so that the u-boot can be interrupted before executing bootcmd ● autostart : If set the loaded image in memory will be executed automatically
  • 40. U-Boot Important Commands – Information ● help : Help command. Can be used to list all supported built commands ● flinfo : Display flash informations (NOR and SPI Flash) ● nand info : Display NAND flash informations
  • 41. U-Boot Important Commands – Environment ● printenv : Print all set environment variables ● setenv : Set the environment variable ● saveenv : Save environment variable to configured memory
  • 42. U-Boot Important Commands – Network ● ping : Checks for network connectivity
  • 43. U-Boot Important Commands – Boot ● boot : Runs the default boot command, stored in bootcmd variable ● bootm : Boot memory. Starts a kernel image loaded at the specified address in RAM Example: bootm <address>
  • 44. U-Boot Important Commands – Data Transfer ● loadb ● loads ● loady : Load a file from the serial line to RAM ● tftpboot : Loads a file from the network to RAM Example: tftpboot <address>
  • 45. U-Boot Important Commands – Memory ● erase : Erase the content of NOR flash ● protect : Protect the content of NOR flash ● cp : Write to NOR flash ● nand : Erase, read, write to NAND flash