47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
************************
 | 
						|
Using U-Boot as Firmware
 | 
						|
************************
 | 
						|
 | 
						|
U-boot can be configured to support the EBBR specification. This can be
 | 
						|
enabled by enabling both `CONFIG_EFI_LOADER` and
 | 
						|
`CONFIG_EFI_EBBR_2_0_CONFORMANCE`.
 | 
						|
 | 
						|
As UEFI Secure Boot is optional in EBBR, that has to be activated seperatly with
 | 
						|
`CONFIG_EFI_SECURE_BOOT`
 | 
						|
 | 
						|
.. graphviz:: bootflow-uboot.dot
 | 
						|
 | 
						|
UEFI Secure Boot
 | 
						|
================
 | 
						|
 | 
						|
CoreOS build system bundle all the needed public key for secure boot inside the
 | 
						|
u-boot binary at buildtime. UEFI variables needed by secure boot are not allowed
 | 
						|
to be changed at runtime.
 | 
						|
 | 
						|
Device tree handling
 | 
						|
====================
 | 
						|
 | 
						|
As per the EBBR specification, the firmware is responsible to provide a
 | 
						|
device tree to the kernel. Not that it's OK to export the device tree used by
 | 
						|
U-Boot internally as it will be replaced by a propper device tree at a later
 | 
						|
stage. This avoid the need to load the device tree from a boot partition.
 | 
						|
 | 
						|
Features to implement per machine
 | 
						|
=================================
 | 
						|
 | 
						|
The u-boot provided by CoreOS should implement the following features for each
 | 
						|
supported machine:
 | 
						|
 | 
						|
extension_board_scan
 | 
						|
--------------------
 | 
						|
 | 
						|
The extension_board_scan function has to be implemented. This function should
 | 
						|
return the list of add-ons board detected.
 | 
						|
 | 
						|
DT Fixup
 | 
						|
--------
 | 
						|
 | 
						|
U-Boot can create, modify and remove node from the device tree dynamically
 | 
						|
before starting the kernel. This can be used to pass dynamic information stored
 | 
						|
inside a "board descriptor" eeprom or CPLD to the Kernel.
 |