2013-ELCE-U-Boot-Falcon-Boobsgshshsjt.pdf

NguynVnDng579982 0 views 16 slides Oct 08, 2025
Slide 1
Slide 1 of 16
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16

About This Presentation

uboot


Slide Content

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
BOOTROM
1
BOOTROM
1
BOOTROM
1
SPL
2
BOOTROM
1
U-BOOT
3
BOOTROM
1
KERNEL
4

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

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
BOOTROM
1
SPL
1
BOOTROM
1
U-BOOT
2
BOOTROM
1
RUN
SPL
EXPORT
3
BOOTROM
1
SAVE
RESULT
4
Prepare for legacy kernels

DT kernels
BOOTROM
1
SPL
1
BOOTROM
1
U-BOOT
2
BOOTROM
1
RUN
“fdt”
“spl export”
3
BOOTROM
1
SAVE
RESULT
4
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
SPL
NAND

Just a few boards: why ?
●Falcon is part of SPL Framework
●~30 boards support SPL
●It is maybe unknown

Extending to other arch
●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)
void __noreturn jump_to_image_linux(arg)

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