Friday, December 4, 2020

Resources for starting with host firmware

 u-root general slack channel question on 'Does anybody have any recommended books or learning resources for getting into firmware development? I have a background in embedded systems and systems software, but am looking to learn more about end-host / server firmware (e.g UEFI, Coreboot and friends). https://osfw.slack.com/archives/C0RAR7JRM/p1606927939015000



This reminds me of curating firmware blogs a few years back http://vzimmer.blogspot.com/2015/06/firmware-related-blogs.html,

To that end, here's a list.  

LinuxBoot book https://github.com/linuxboot/book 

LinuxBoot can be a payload for either coreboot or Slim Bootloader. Some details on the latter 2 can be found at


coreboot https://doc.coreboot.org/ 

coreboot book https://www.apress.com/gp/book/9781484200711 

and


Slim Bootloader https://slimbootloader.github.io/ 


Slim Bootloader and coreboot provide 'platform initialization' (PI) and depend upon a payload.


U-boot is interesting since it can be either a payload or the full PI implementation.


U-boot https://www.denx.de/wiki/U-Boot/Documentation 

U-boot porting example http://ptgmedia.pearsoncmg.com/images/9780134030005/samplepages/9780134030005.pdf 


The same holds for EDKII. EDKII can be a platform implementation or act as a payload for Slim Bootloader and coreboot.


EDKII training https://github.com/tianocore-docs/Training https://github.com/tianocore-training 

EDKII white papers https://github.com/tianocore/tianocore.github.io/wiki/EDK-II-white-papers 


For the ARM ecosystem, ARM Trusted Firmware (ATF) acts as a substrate to compose different PI implementations


ARM Trusted Firmware https://trustedfirmware-a.readthedocs.io/en/latest/


Some firmware security training that covers many of the firmware frameworks can be found in below.


Firmware security training https://github.com/enascimento/firmware-security-training  https://opensecuritytraining.info/

Firmware security book https://link.springer.com/book/10.1007/978-1-4842-6106-4 


UEFI and ACPI are industry standards described at https://www.uefi.org/, and an overview of UEFI and its shell can be found in the below.


UEFI book https://www.amazon.com/Beyond-BIOS-Developing-Extensible-Interface/dp/1501514784/ (older version at https://www.microbe.cz/docs/Beyond_BIOS_Second_Edition_Digital_Edition_(15-12-10)%20.pdf

UEFI Shell book https://www.amazon.com/gp/product/B06XK19DW3/ 


In addition, there is nice collection of talks on open source firmware and UEFI, respectively, at


OSFC talks https://osfc.io/archive 

UEFI talks https://uefi.org/learning_center/presentationsandvideos 


ACPI overviews are a little lite IMHO, but there is a recently added introduction in the ACPI in chapter 1


ACPI Specification https://uefi.org/sites/default/files/resources/ACPI_6_3_May16.pdf

ACPI + UEFI Support https://www.intel.com/content/www/us/en/content-details/671067/a-tour-beyond-bios-implementing-the-acpi-platform-error-interface-with-the-uefi.html?wapkw=zimmer%20acpi 


11.30.2022 - new books

security

https://link.springer.com/book/10.1007/978-1-4842-6106-4

overall fw

https://link.springer.com/book/10.1007/978-1-4842-7939-7

https://link.springer.com/book/10.1007/978-1-4842-7974-8


No comments: