0% found this document useful (0 votes)
96 views16 pages

2013 ELCE U Boot Falcon Boot

U-Boot "Falcon" mode provides a faster boot process by having the SPL (secondary program loader) load and initialize the kernel instead of U-Boot. With Falcon mode, SPL loads the kernel image and device tree or boot parameters directly instead of loading U-Boot first. This saves time by eliminating the need to load and execute U-Boot. Currently Falcon mode is supported on several PowerPC and TI boards with NAND storage. The mode can be extended to more architectures and storage types by implementing callbacks in SPL. Widespread adoption of Falcon mode could further accelerate the U-Boot boot process.

Uploaded by

mrme44
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
96 views16 pages

2013 ELCE U Boot Falcon Boot

U-Boot "Falcon" mode provides a faster boot process by having the SPL (secondary program loader) load and initialize the kernel instead of U-Boot. With Falcon mode, SPL loads the kernel image and device tree or boot parameters directly instead of loading U-Boot first. This saves time by eliminating the need to load and execute U-Boot. Currently Falcon mode is supported on several PowerPC and TI boards with NAND storage. The mode can be extended to more architectures and storage types by implementing callbacks in SPL. Widespread adoption of Falcon mode could further accelerate the U-Boot boot process.

Uploaded by

mrme44
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 16

U-Boot „Falcon“ Mode

U-Boot "Falcon" mode


Stefano Babic

October 2013
Overview

● What is “Falcon Boot” ?


● How does it work ?
● Which is the current status ?
● How to extend for missing platforms ?
● Questions...
Usual boot

1 1
2 1
3 4
1

BOOTROM BOOTROM
SPL U-BOOT
BOOTROM BOOTROM
KERNEL
Falcon Boot
1
3

BOOTROM
KERNEL
1 1
2

BOOTROM BOOTROM
SPL

3
1

BOOTROM
U-BOOT
Faster
● Saves time to load U-BOOT
● Saves U-BOOT execution time
● Save time to prepare Boot Parameter Area (legacy
kernel) or FDT

Code is fastest if not executed at all!


SPL export: dry run boot

1 1
2 3
1 4
1

BOOTROM
SPL U-BOOT
BOOTROM RUN
BOOTROM BOOTROM
SAVE
SPL
RESULT
EXPORT

Prepare for legacy kernels


DT kernels

1 1
2 1
3 4
1

SPL
BOOTROM BOOTROM
U-BOOT RUN
BOOTROM BOOTROM
SAVE
“fdt”
RESULT
“spl export”

Prepare for “DT” kernels


Falcon Boot
● SPL is executed
● Check which image must be loaded
– Call spl_start_uboot()
● Load Image
● Load parameter area or DT for kernel
● Pass control to image

U-BOOT as fallback in case uImage is corrupted


Supported boards
● A3m071 (PowerPC MPC 5200)
● Lwmon5 (PowerPC 440 EPX)
● Ipam390 (TI davinci)
● TI OMAP5 boards (dra7xx, uevm) NAND only
● Twister, devkit8000 (TI AM3517)
● Am335_evm (TI AM335x)
Supported Storages

NOR

NAND
SPL
Just a few boards: why ?

● Falcon is part of SPL Framework


● ~30 boards support SPL
● It is maybe unknown
Extending to other arch

void __noreturn jump_to_image_linux(arg)

● Arg is the address of boot parameters (ATAGS) or FDT


● load address, entry point) ==> SPL global spl_image
● Each architecture could set own things before starting
kernel (example: machid for ARM)
Extending to other storages
● SPL storages in common/spl
● Check spl_start_uboot()
● Load image and call spl_parse_image_header()
Support in own board
● Usual CONFIG_ set for SPL_FRAMEWORK
● Add CONFIG_SPL_OS_BOOT
● Option to define where kernel is store
– CONFIG_SYS_NAND_KERNEL_OFFS, etc.
● Add own callbacks
– spl_start_uboot()
– spl_board_prepare_for_linux()
Things to do
● Convert more boards to use SPL
● Spread the word about the new capabilities
● Use it !
Questions ...
● It's your turn now...

You might also like