2.4 Organization
The architecture makes use of four primary classifications of code that are generally instantiated in different EDK II packages.
- Common (EDK II) is code that does not have any direct HW requirements other
than the basics required to execute machine code on the processor (stack,
memory, IA registers, etc).
- Producer(s): TianoCore.org
- Silicon, also often called hardware code, has some tie to a specific class
of physical hardware. Sometimes governed by industry standards, sometimes
proprietary. Silicon or hardware code is usually not intended to have
multiple implementations for the same hardware.
- Producer(s): Silicon vendor
- Platform defines the actions needed to enable a specific platform's
capabilities. In this architecture, capabilities are divided into mandatory
and advanced features. Mandatory features are enabled in stages prior to
Stage VI. Advanced features are enabled in Stage VI and later.
- Minimum Platform Producer(s): TianoCore.org
- Advance Feature Producer(s): TianoCore.org, OEM, BIOS vendor
- Board packages contains board specific code for one or more motherboards.
- Producer(s): Device manufacturer, BIOS vendor, Board user
The architecture is designed to support a maintainer ownership model. For example, board developers should not directly modify (fork) the platform, silicon, or common code. More details on conventional usage of the package classifications can be found in supplemental literature from UEFI Forum, TianoCore.org, and others.
For the purposes of this document, the board package is considered an integration point of the firmware image in addition to providing board-specific functionality. The silicon package provides supported silicon initialization support for one or more silicon products. The minimum platform package represents common elements of this architecture that may depend upon board and silicon interfaces. In order to meet the security objectives of this specification, the minimum platform package must not depend upon deprecated EDK II packages. Other packages composed within the firmware solution described in this specification should consist of widely known elements of the EDKII ecosystem from TianoCore.org.
An example of a firmware stack compliant with this specification for three classes of computer systems is shown in the below figure.