1The EFI application of GBL requires certain EFI protocols in order to boot, 2and can require other protocols for certain targets or to enable optional features. 3 4### Required Protocols 5 6#### BlockIoProtocol 7 8The BlockIo protocol is required for loading system images from disk. 9If a target supports Fastboot mode, it is also used for writing images to disk. 10 11#### SimpleTextOutputProtocol 12 13The SimpleTextOutput protocol is used for logging 14and the text-based interface of Fastboot. 15On systems where there is no output functionality, 16this can be implemented as a series of no-op functions. 17 18### Conditionally Required Protocols 19 20#### RiscvBootProtocol 21 22Determines the boot hart ID which is then passed to the kernel. 23Only required for RISC-V targets. 24 25### Optional Protocols 26 27#### AndroidBootProtocol 28 29This is a custom protocol intended to provide 30specific functionality needed to boot Android. 31A full description is available [here](./EFI_ANDROID_BOOT_PROTOCOL.md). 32 33#### DevicePathProtocol 34 35The DevicePath protocol is a variable length binary structure 36made of variable length Device Path nodes. 37A handle representing a hardware resource is mapped 38to the protocol and provides specific data about that resource. 39 40If all three of DevicePath protocol, DevicePathToText protocol, 41and LoadedImage protocol are present, the GBL image path is logged 42to the console on load. 43 44This is a useful proof of concept for development to demonstrate 45that GBL is running and can interact with the UEFI environment. 46 47#### DevicePathToTextProtocol 48 49The DevicePathToText protocol converts device paths and nodes to text. 50 51#### LoadedImageProtocol 52 53The LoadedImage protocol can be used on the handle of an image to provide 54information about the image, including its device handle and device path. 55 56#### SimpleNetworkProtocol 57 58If present, the SimpleNetwork protocol is used to provide Fastboot over TCP. 59No other EFI protocols are required: GBL wraps SimpleNetwork to provide TCP. 60 61Note: for security reasons, Fastboot over TCP is only available in dev builds. 62 63#### SimpleTextInputProtocol 64 65TODO: remove this protocol 66