US20100318961A1 - Parametric Build of UEFI Firmware - Google Patents

Parametric Build of UEFI Firmware Download PDF

Info

Publication number
US20100318961A1
US20100318961A1 US12/756,437 US75643710A US2010318961A1 US 20100318961 A1 US20100318961 A1 US 20100318961A1 US 75643710 A US75643710 A US 75643710A US 2010318961 A1 US2010318961 A1 US 2010318961A1
Authority
US
United States
Prior art keywords
build
file
computer
instructions
implement
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US12/756,437
Inventor
Eugene Khoruzhenko
Stephen E. Jones
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kinglite Holdings Inc
Original Assignee
Phoenix Technologies Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Phoenix Technologies Ltd filed Critical Phoenix Technologies Ltd
Priority to US12/756,437 priority Critical patent/US20100318961A1/en
Assigned to PHOENIX TECHNOLOGIES LTD reassignment PHOENIX TECHNOLOGIES LTD ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: JONES, STEPHEN E, KHORUZHENKO, EUGENE
Assigned to HIGHBRIDGE PRINCIPAL STRATEGIES, LLC, AS COLLATERAL AGENT reassignment HIGHBRIDGE PRINCIPAL STRATEGIES, LLC, AS COLLATERAL AGENT GRANT OF SECURITY INTEREST - PATENTS Assignors: PHOENIX TECHNOLOGIES LTD.
Publication of US20100318961A1 publication Critical patent/US20100318961A1/en
Assigned to MEP PLP, LLC reassignment MEP PLP, LLC SECURITY AGREEMENT Assignors: HIGHBRIDGE PRINCIPAL STRATEGIES, LLC
Assigned to PHOENIX TECHNOLOGIES LTD. reassignment PHOENIX TECHNOLOGIES LTD. RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: MEP PLP, LLC
Assigned to KINGLITE HOLDINGS INC. reassignment KINGLITE HOLDINGS INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: PHOENIX TECHNOLOGIES LTD.
Assigned to AMERICAN MEGATRENDS, INC. reassignment AMERICAN MEGATRENDS, INC. LIEN AND SECURITY INTEREST Assignors: KINGLITE HOLDINGS INC.
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers

Definitions

  • the present invention generally relates to personal computers and devices sharing similar architectures and, more particularly relates to a system and corresponding or related method for parametric driven build of Unified Extensible Firmware Interface based Personal Computer firmware. Similar processes and entities within comparable computing apparatuses also fall within the general scope of the invention.
  • PCs personal computers
  • laptop and notebook computers are increasingly common and the computers themselves are ever more powerful and complex.
  • Hardware development continues at great rates resulting in families of PCs that share parts and partial configurations yet have evolving capabilities and legion configurations.
  • a persistent problem is the management of needed changes and enhancements to firmwares as new versions of hardware and entirely new hardware subsystems are phased in—while simultaneously avoiding excessive duplication of effort across families of related, but different, computer products. This leads to a need for capabilities above and beyond those found in previously developed source and build management systems.
  • EFI Extensible Firmware Interface
  • O/S operating system
  • former comparable firmwares were not sufficiently portable nor scalable to Intel's CPU (Central Processor Unit) IA64 (Intel Architecture for 64 bit widths) architecture.
  • a first implementation of the EFI interface became known as Tiano, which Intel Corporation offered under license via a web site.
  • the UEFI (Unified EFI) Forum a trade group, secured architectural control over derivatives of EFI under a new name—UEFI, with a right to support and extend.
  • the UEFI Forum specifies and documents the UEFI interface.
  • the PIWG (Platform Initialization Working Group) of the UEFI Forum provides a common internal framework for Silicon and platform drivers, so that a common understanding of the roles and methods used by Silicon and platform drivers is developed by implementers of UEFI firmware stacks together with the providers of the Silicon and platform drivers. Silicon and platform drivers are each well-known in the PC firmware arts.
  • the UEFI and related standards provide richness, but fail to sufficiently address significant specific areas of concern including at least:
  • BIOS Basic Input-Output System
  • BIOS Basic Input-Output System
  • Level of reliability Level of compatibility with Intel's Foundation Core also known as Foundation for short and a discrete part of Tiano
  • Scope for platform innovation by BIOS vendors and partners and customers thereof.
  • the standard packaging for the source codes of the Tiano firmware includes relevant source code and facilitates methods for compiling, linking and for merging the firmware programs together so that the resulting binary codes may be used to produce firmware comprising run-time instruction codes for a ROM (read-only memory) or its functional equivalent.
  • the standard packaging and methods have proven insufficiently capable and flexible. These are improved upon as described below.
  • a significant advantage of embodiments of the invention over previously developed solutions is that it becomes possible to provide for multiple types of chipsets (also Silicon), platforms (also product families), hardware levels (especially improved, significantly revised and novel subsystems), and firmware revision levels (especially levels of deficiency and fault remedies) without forcing a hierarchical approach to be used and without the significant downside of that alternative.
  • chipsets also Silicon
  • platforms also product families
  • hardware levels especially improved, significantly revised and novel subsystems
  • firmware revision levels especially levels of deficiency and fault remedies
  • the present invention provides a method for packaging, compiling, linking, and merging programs that embodies the invention.
  • program products and other means for exploiting the invention are presented.
  • an embodiment of the invention may provide a method for building firmware components with the use of a build utility program that scans parent directories to locate a build file with multiple module version specifications; creating an EFI (extensible firmware interface) configurator file specific to those specification and performing a build responsive thereto.
  • a build utility program that scans parent directories to locate a build file with multiple module version specifications; creating an EFI (extensible firmware interface) configurator file specific to those specification and performing a build responsive thereto.
  • DXE.DSC drive execution environment description
  • the EFI (extensible firmware interface) configurator file is created responsive to contents of module definition files for a plurality of versions of subdirectories comprising Kernel, Executive and System files
  • FIG. 1 is a schematic block diagram of an electronic device configured as a target device into which firmware generated using the present invention may be loaded and utilized;
  • FIG. 2 shows an organization of a EDK1 source tree with corresponding Directory Organization.
  • FIG. 3 shows an SCT2 directory tree organization according to an embodiment of the invention.
  • FIG. 4 depicts an exemplary Project Definition File illustrating use of MODULE statements according to an embodiment of the invention.
  • FIG. 5 is a flowchart that shows a method according to an embodiment of the invention that implements the exemplary features of FIGS. 3 and 4
  • FIG. 6 shows a sample output Project.env file.
  • FIG. 7 shows an excerpt of a System Dxe.DSC file.
  • FIG. 8 shows how an exemplary embodiment of the invention may be encoded onto a computer medium or media
  • FIG. 9 shows how an exemplary embodiment of the invention may be encoded, transmitted, received and decoded using electro-magnetic waves.
  • Embodiments of the disclosure presented herein provide methods, systems, and computer-readable media for providing and utilizing a means for packaging, compiling, linking, and merging programs that embodies the invention.
  • program products and other means for exploiting the invention are presented.
  • FIG. 1 is a schematic block diagram of an electronic device configured to implement the firmware target system operational functionality according to the present invention.
  • FIG. 1 shows a computer 10 that is operative to provide an EFI/UEFI firmware environment to provide a DXE (Driver Execution Environment) phase and/or a BDS (Boot Device Selection) phase.
  • DXE and BDS are well known in the UEFI arts.
  • the computer 10 typically includes a baseboard (not shown in FIG. 1 ), or motherboard form of printed circuit board to which a multitude of components or devices are connected by way of a system bus or other electrical communication path.
  • a CPU (central processing unit) 12 operates in conjunction with a chipset 50 .
  • the CPU 12 is a standard central processor that performs, inter alia, arithmetic and logical operations necessary for the operation of the computer.
  • Chipset 50 may include a Northbridge 14 and a Southbridge 32 .
  • the Northbridge 14 may be attached to CPU 12 by a FSB (Front Side Bus) 13 and typically provides an interface between the CPU 12 and the remainder of the computer 10 .
  • the Northbridge 14 may also provide an interface to a RAM (random access memory) 16 the main memory for the computer 10 and, possibly, to other devices such as an on-board graphics adapter (not shown in FIG. 1 ).
  • RAM random access memory
  • the Northbridge 14 is connected to a Southbridge 32 by a DMI (direct media interface) 18 .
  • the Southbridge 32 may be responsible for controlling many of the input/output functions of the computer 10 such as USB (universal serial bus), sound adapters, Ethernet controllers and one or more GPIO (general purpose input/output) port (None shown in FIG. 1 ).
  • a bus comprises a PCI (peripheral component interconnect) bus circuit 22 to which a disk storage subsystem 66 (often abbreviated to “disk”) or other storage devices for storing an operating system and application programs may be attached.
  • PCI peripheral component interconnect
  • the Southbridge 32 may also provide SMM (system management mode) circuits and power management circuitry.
  • a peripheral interface 30 may also be provided by the Southbridge 32 for connecting a SuperI/O (Super input-output) device 60 .
  • Southbridge 32 may also incorporate a timer circuit for generating timer circuit interrupts typically at periodic intervals.
  • an O/S operating system
  • an application program is software that runs on top of (is loaded and directed by) the O/S software and uses computer resources made available through the O/S to perform application specific tasks desired by a user of the computer 10 .
  • Disk 66 may also provide non-volatile storage for the computer 10 .
  • computer-readable media refers to a mass storage device, such as a hard disk or CD-ROM (Compact-Disc-ROM) drive, it should be appreciated by those skilled in the art that computer-readable media can be any available media that can be accessed by the computer 10 .
  • computer-readable media may comprise computer storage media and communication media.
  • Computer storage media includes volatile and non-volatile, removable and non-removable media implemented in a method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data.
  • Computer storage media includes, but is not limited to, RAM, ROM, EPROM (Erasable, programmable ROM), EEPROM (Electrically EPROM), serial EEPROM, Flash memory or other solid state memory technology, CD-ROM, DVD (Digital Versatile Disk), or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices well-known in the art, or any other medium which can be used to store the desired information and which can be accessed by the computer.
  • the peripheral interface 30 may also connect a computer storage media such as a ROM (not shown) or, more typically, a flash memory such as a NVRAM (non-volatile random access semiconductor memory) 33 for storing UEFI platform firmware 34 that includes program code containing the basic routines that help to start up the computer 10 and to transfer information between elements within the computer 10 .
  • UEFI firmware 34 is compatible with the UEFI Specification.
  • the computer 10 may comprise other types of computing devices, including hand-held computers, embedded computer systems, personal digital assistants, and other types of computing devices known to those skilled in the art. It is also contemplated that the computer 10 may not include all of the components shown in FIG. 1 , may include other components that are not explicitly shown in FIG. 1 , or may utilize an architecture different from that shown in FIG. 1 .
  • Phoenix's SCT2 (SECURECORE Tiano version 2) uses build time paradigms derived in large part from the previously developed EDK1 (EFI Development Kit version 1), which is the previously developed and heretofore standardized form of packaging for the firmware of type TianoCore.org, discussed above.
  • EDK1 includes respective source code and methods for compiling, linking, and merging the relevant software and firmware instruction codes together so that the resulting binary information entities may be used to program a ROM such as may typically be used in a targeted hardware configuration at run time.
  • Such innovations may typically include means for componentizing pieces of the software and firmware instruction codes so that a large structure is presented with elements or packages that are simplified for the product consumer or user.
  • the way that, for example, a product user may define what is produced by the source code is also different in SCT2 as contrasted with EDK1, and notably so through an innovation of project files with a parametric build capability.
  • Each driver program (mostly DXE device drivers) represented therein may have compile-time parameters that may be specified in the build, thus facilitating and promoting product user control over various discrete policies (typically fine-grained discrete policies) that may be embodied in each driver. Additionally, overall system policies involving multiple drivers are facilitated.
  • SCT2 simplifies EFI Platform module concepts, as expressed in hundreds (or even thousands) of source files, by introducing a Board-level module that may be used by a product user for customization.
  • Platform modules are typically relegated to platform class definitions that support multiple Board modules.
  • SDK software development kit, but relating also to firmware
  • innovations facilitate significant improvement as to productivity (both during board bring-up and during customization processes), and enable third parties to develop solutions that may be used by Phoenix customers and/or other product users.
  • FIG. 2 shows a prior art organization of an Intel-architected EDK1 source tree as embodied as to a corresponding Directory Organization.
  • the Foundation consisting of code necessary to locate and load drivers into memory in the run time environment, is located entirely within its own directory, which is simply named “Foundation”.
  • Intel Corporation maintains this code as creators and owners of the basic fundamental part of the EFI architecture. Accordingly, Intel supplies patches thereto from time to time. Whenever patches are applied, they are (must be) applied in situ, that is over the top of any and all existing Foundation folder files. Although such patches primarily correct defects in the Foundation itself, they might not always be entirely backwards compatible. Consequently, patches are supplied on a per-tree basis, and all projects within the tree must entirely accept (or, rarely, entirely reject) all of the subject patches.
  • the EDK1 Universal directory contains the system's standard components that have general applicability to all, or almost all, projects. Examples include the disk component, which typically contains multiple drivers supporting disk I/O (block input-output and related file systems) and a feature commonly known as DxeIpl (for Driver execution environment initial program loader), which launches the DXE (Driver execution environment) runtime component.
  • the disk component typically contains multiple drivers supporting disk I/O (block input-output and related file systems) and a feature commonly known as DxeIpl (for Driver execution environment initial program loader), which launches the DXE (Driver execution environment) runtime component.
  • DxeIpl for Driver execution environment initial program loader
  • FIG. 3 represents a typical SCT2 directory tree organization according to an embodiment of the invention and which provides an exemplary illustration of innovative SCT2 Code Organization.
  • a plurality of logical components such as Foundation, Kernel, Exec(executive), System, Platform, Board, Project
  • each contains a further layer of subdirectories herein enumerated 000, 001, 002, et seq) each supporting versioning of the respective component.
  • each component may be assigned a new version number in local sequence. This thereby allows more than one version (or logical revision) of a component to be available in the selected tree.
  • This innovation makes it possible for a project file (shown as Projects ⁇ ProjectName ⁇ 000 ⁇ Project.def in FIG. 3 ) to specify the modules and their respective versions to be included on a project basis.
  • Projects ⁇ ProjectName ⁇ 000 ⁇ Project.def shown as Projects ⁇ ProjectName ⁇ 000 ⁇ Project.def in FIG. 3
  • the customer or product user has a development tree that matures, so earlier projects that may be using correspondingly earlier versions of the Foundation, Kernel, Executive, System, or Silicon drivers may continued to be maintained through revision. This may occur all while newer projects may refer to more recent releases of those same (or equivalent or corresponding) components.
  • the exemplary SCT 2.0 source tree consists of the versioned modules. Any directory that has the 3-digit numeric subdirectories is a module. The numeric subdirectories store different revisions of the module's source code; they should start from 000 and increment as the new module revisions are created. Also, because even the build itself is versioned, it is possible for the SCT framework to support dissimilar builds, including those not based on EDK I, on a project-by-project basis.
  • this new top-level directory is herein called “Projects”, and whereat each project to be defined is assigned its own respective subdirectory.
  • Projects Within a given project's subdirectory hierarchy, further versioning (and version naming) subdirectories are created, thus providing a means for supporting multiple releases of a particular project within one single directory tree.
  • the selected versioned directory (for example 000—a directory mapped to a first version) is known as the project directory. It contains the necessary files to define a given project that is to produce a binary target image.
  • the Project.def file within this directory may be a text file that contains the project definition statements that drive the build, such as that shown in FIG. 4 .
  • FIG. 4 is an exemplary Project Definition File illustrating use of MODULE statements.
  • MODULE statements are depicted that may be used to declare the components within an exemplary SCT2 build tree. It is intended that these are to be included in the exemplary build, and also specify locations of pertinent EDK1 build automation files.
  • the build process is controlled by the project file (named PROJECT.DEF), which configures the build with the Definition Language statements.
  • the nature and purpose of the Definition Language is to define configuration objects used by a utility program to create the output files used in other phases of the build.
  • Such output files may include: a Project.h file for #define statements included for C language source program; a Project.inc file for symbol definitions included in Assembly language source program; a Project.env file for symbol definitions, as may be used in INF and DSC files and/or a Cmdb.bin file for a kernel CM (Configuration Manager) database used for BIOS runtime configuration and/or reconfiguration.
  • CM Configuration Manager
  • the project file may be processed by an SCTPROJ utility from a top level downwards, so that statements placed towards the end of the file will typically override definitions placed further from the end of the file.
  • the first module to include is the module named “Build”; it may contains some overarching definitions, such as a version number of the recommended and tested development suite used.
  • One such development suite is the popular Visual Studio product.
  • the order of the modules specified in the project file may typically follow their respective architectural position. For example in the sequence: Foundation, Kernel, Executive, and System. Thus subsequent modules may augment or override objects created in preceding modules.
  • Core modules are typically followed by the Silicon, Platform, Board, and other modules in that particular order.
  • an exemplary MODULE statement in a .DEF might be of the form: MODULE ModuleName, ModuleVersion, [Parameter]
  • MODULE is a keyword.
  • the second lexeme is the Module name, followed by the required version number and an optional special parameter.
  • MODULE declarations enable the SCTPROJ tool to find the specified versioned modules in the current source tree and create the necessary path symbols used by ProcessDSC for processing INF and DSC files.
  • SCTPROJ may also look for a Build folder and MODULE.DEF file in the module's own root directory. The content of the MODULE.DEF file may thus be included in processing of the PROJECT.DEF file, thereby facilitating overrides as described above.
  • the Module's Build folder contains the standard Pei.dsc, Dxe.dsc, and Library.dsc files that have INF file entries for the components included in the module.
  • FIG. 5 is a flowchart that shows a method according to an embodiment of the invention that implements the exemplary features prescribed in FIGS. 3 and 4 above.
  • entry is made to a function for building a firmware (or firmware and software) image according to an embodiment of the invention.
  • a build utility program with an exemplary name of PHMAKE is invoked such as via a DOS (Disk Operating System) prompt or through an integrated environment, with the project directory being the current working directory.
  • Build utility programs are well-known in the firmware or software build arts; some types of build utility programs are colloquially (or sometimes formally) known as “Make programs”.
  • To invoke a build utility program in a particular directory is a term of art for initiating and running a build utility program that has specific knowledge of how to locate a most-significant, or current project, directory upon which many or most aspects of the build particulars are derived.
  • the current working directory is an exemplary embodiment of the current project directory concept.
  • a current project directory may be a focal point of a multiplicity of versions of build versions derived from an instance of build-time parameterization. Such terminologies are well-known in the firmware or software build arts, as appropriate.
  • a PHMAKE.EXE program to implement the PHMAKE function scans its own parent directories for a configurator file herein called PHMAKE.CFG.
  • PHMAKE.CFG This PHMAKE.CFG file provides directives to PHMAKE that allow it to identify name and version of the build files to be used in the present build.
  • the PHMAKE.EXE program runs a MAKEFILE located in the Build directory, passing it symbols specifying (1) the project's name and version, (2) the location of the build files, and (3) the build tree's root directory name (in the example this is C: ⁇ SCT.) MAKEFILE is well-known in the art.
  • the MAKEFILE in turn invokes, supervises and runs the top-level build, including running a utility program, SCTPROJ.EXE, to process the respective Project.def file.
  • the SCTPROJ.EXE program attempts to access MODULE.DEF files, located in each of the component directories specified by the MODULE statements in the project file. Whenever and wherever relevant MODULE.DEF files are found, their statements, consisting of Option and Config definitions are processed by SCTPROJ.EXE. These Option and Config definitions act to specify default values for the build options later each used by their respective component.
  • the SCTPROJ.EXE program parses the Project.def file to produce a Project.h file in a temporary (temp ⁇ ) directory within the project directory that typically contains #define statements associated with each Option declaration (for example Parametric Build uses this build product.)
  • a Project.inc file is also created for input into build of Assembly Language programs.
  • FIG. 6 shows a sample output Project.env file, illustrating how the MODULE and Option statements are transformed into declarations in the Project.env file.
  • the PHMAKE.EXE program continues to read the MAKEFILE after SCTPROJ.EXE completes its processing, causing the EDK1 compatible MAKEFILE to receive control in substantially the same manner as with previously developed build systems and with the information needed to parameterize the build and to locate the needed build components.
  • FIG. 6 shows a sample output Project.env file that has been methodically produced by the exemplary SCTPROJ.EXE build utility.
  • FIG. 7 shows an excerpt of a System Dxe.DSC (driver execution environment description) file, showing use of a BUILD_CONDITION parameter.
  • System Dxe.DSC driver execution environment description
  • Build parameters such as OPTION_DEBUG_SERIAL_DXE, are used to render conditional the inclusion of drivers in the build, using the EDK's DSC file system.
  • OPTION_DEBUG_SERIAL_DXE OPTION_DEBUG_SERIAL_DXE
  • a BUILD.DSC file in the platform tip directory containing a list of drivers to be included in the build is read by the EDK1 build tool PROCESSDSC.EXE.
  • FIG. 7 shows an excerpt of the System's Dxe.DSC file, illustrating how certain drivers may be conditionally included in the build in the context of the present exemplary description.
  • computer instructions to be incorporated into an electronic device 10 may be distributed as manufactured firmware and/or software computer products 510 using a variety of possible media 530 having the instructions recorded thereon such as by using a storage recorder 520 .
  • more than one medium may be used, both in distribution and in manufacturing relevant product. Only one medium is shown in FIG. 8 for clarity but more than one medium may be used and a single computer product may be divided among a plurality of media.
  • FIG. 9 shows how an exemplary embodiment of the invention may be encoded, transmitted, received and decoded using electro-magnetic waves.
  • computer products 610 may be distributed by encoding them into signals modulated as a wave.
  • the resulting waveforms may then be transmitted by a transmitter 640 , propagated as tangible modulated electro-magnetic carrier waves 650 and received by a receiver 660 .
  • Upon reception they may be demodulated and the signal decoded into a further version or copy of the computer product 611 in a memory or other storage device that is part of a second electronic device 11 and typically similar in nature to electronic device 10 .

Abstract

Methods, systems, apparatuses and program products are disclosed for providing parametric driven build of Unified Extensible Firmware Interface based Personal Computer firmware, typically but not essentially as BIOS.
Provision is made for source databases providing for multiple configurations, variants, revisions and levels of capabilities including on non-hierarchical bases.

Description

    RELATED APPLICATIONS
  • This application claims priority to U.S. Provisional application for a patent No. 61/268,562 entitled INNOVATIONS IN SECURECORE TIANO 2.0 filed Jun. 13, 2009 inventor Stephen E. Jones and which is incorporated in its entirety by this reference.
  • FIELD OF THE INVENTION
  • The present invention generally relates to personal computers and devices sharing similar architectures and, more particularly relates to a system and corresponding or related method for parametric driven build of Unified Extensible Firmware Interface based Personal Computer firmware. Similar processes and entities within comparable computing apparatuses also fall within the general scope of the invention.
  • BACKGROUND OF THE INVENTION
  • Modernly, the use of PCs (personal computers), including so-called laptop and notebook computers, is increasingly common and the computers themselves are ever more powerful and complex. Hardware development continues at great rates resulting in families of PCs that share parts and partial configurations yet have evolving capabilities and legion configurations. A persistent problem is the management of needed changes and enhancements to firmwares as new versions of hardware and entirely new hardware subsystems are phased in—while simultaneously avoiding excessive duplication of effort across families of related, but different, computer products. This leads to a need for capabilities above and beyond those found in previously developed source and build management systems.
  • Firmware development for PCs presents substantially different problems (requiring substantially different solutions) from software development. Previously developed software development solutions either have systems programs to handle routine programming minutiae and/or comprise systems program(s) that can rely on firmware features to largely hide hardware dependencies. Different again is development for embedded firmware—that firmware typically supports only a very few hardware configurations and/or versions, as contrasted with the very many of each found in PC firmware.
  • Intel Corporation first defined EFI (Extensible Firmware Interface) as the programming interface exposed by firmware to O/S (operating system); former comparable firmwares were not sufficiently portable nor scalable to Intel's CPU (Central Processor Unit) IA64 (Intel Architecture for 64 bit widths) architecture. A first implementation of the EFI interface became known as Tiano, which Intel Corporation offered under license via a web site. The UEFI (Unified EFI) Forum, a trade group, secured architectural control over derivatives of EFI under a new name—UEFI, with a right to support and extend. The UEFI Forum specifies and documents the UEFI interface.
  • The PIWG (Platform Initialization Working Group) of the UEFI Forum provides a common internal framework for Silicon and platform drivers, so that a common understanding of the roles and methods used by Silicon and platform drivers is developed by implementers of UEFI firmware stacks together with the providers of the Silicon and platform drivers. Silicon and platform drivers are each well-known in the PC firmware arts.
  • The UEFI and related standards provide richness, but fail to sufficiently address significant specific areas of concern including at least:
  • Quality of board bring-up user experience
    Quality of BIOS (Basic Input-Output System) customization experience
    Duration of system bootloading and platform initialization time
    Level of reliability
    Level of compatibility with Intel's Foundation Core (also known as Foundation for short and a discrete part of Tiano)
    Scope for platform innovation by BIOS vendors and partners and customers thereof.
  • These attributes are described in a version of SCT (SECURECORE Tiano™) System Overview document published by Phoenix® Technologies Ltd. (herein “Phoenix”). Adequately addressing all of these areas of concern requires innovation above and beyond what is described in UEFI and PIWG standards and related documents. However, innovation needs to be at least substantially backwards compatible with those same standards so as not to lose benefits arising out of compliance therewith.
  • However, mere compliance is insufficient. One of the things needed is a way of supporting the UEFI and PIWG standards (and their future versions) while at the same time providing an infrastructure for firmware that can be used for proprietary innovation, going beyond the standards. Ultimately, these innovations may themselves become official or de facto standards in the industry, as Phoenix's channel is broad.
  • The standard packaging for the source codes of the Tiano firmware (released under a TianoCore.org label), includes relevant source code and facilitates methods for compiling, linking and for merging the firmware programs together so that the resulting binary codes may be used to produce firmware comprising run-time instruction codes for a ROM (read-only memory) or its functional equivalent. The standard packaging and methods have proven insufficiently capable and flexible. These are improved upon as described below.
  • A significant advantage of embodiments of the invention over previously developed solutions is that it becomes possible to provide for multiple types of chipsets (also Silicon), platforms (also product families), hardware levels (especially improved, significantly revised and novel subsystems), and firmware revision levels (especially levels of deficiency and fault remedies) without forcing a hierarchical approach to be used and without the significant downside of that alternative.
  • SUMMARY OF THE INVENTION
  • The present invention provides a method for packaging, compiling, linking, and merging programs that embodies the invention. In addition program products and other means for exploiting the invention are presented.
  • According to an aspect of the present invention an embodiment of the invention may provide a method for building firmware components with the use of a build utility program that scans parent directories to locate a build file with multiple module version specifications; creating an EFI (extensible firmware interface) configurator file specific to those specification and performing a build responsive thereto.
  • According to a further aspect of the invention a DXE.DSC (driver execution environment description) capability is provided.
  • According to a still further aspect of the invention the EFI (extensible firmware interface) configurator file is created responsive to contents of module definition files for a plurality of versions of subdirectories comprising Kernel, Executive and System files
  • Program products and programs transmitted by Internet and similar means that provide for the method are also disclosed.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The aforementioned and related advantages and features of the present invention will become better understood and appreciated upon review of the following detailed description of the invention, taken in conjunction with the following drawings, which are incorporated in and constitute a part of the specification, illustrate an embodiment of the invention and wherein like numerals represent like elements, and in which:
  • FIG. 1 is a schematic block diagram of an electronic device configured as a target device into which firmware generated using the present invention may be loaded and utilized;
  • FIG. 2 shows an organization of a EDK1 source tree with corresponding Directory Organization.
  • FIG. 3 shows an SCT2 directory tree organization according to an embodiment of the invention.
  • FIG. 4 depicts an exemplary Project Definition File illustrating use of MODULE statements according to an embodiment of the invention.
  • FIG. 5 is a flowchart that shows a method according to an embodiment of the invention that implements the exemplary features of FIGS. 3 and 4
  • FIG. 6 shows a sample output Project.env file.
  • FIG. 7 shows an excerpt of a System Dxe.DSC file.
  • FIG. 8 shows how an exemplary embodiment of the invention may be encoded onto a computer medium or media; and
  • FIG. 9 shows how an exemplary embodiment of the invention may be encoded, transmitted, received and decoded using electro-magnetic waves.
  • DETAILED DESCRIPTION OF THE INVENTION
  • The numerous components shown in the drawings are presented to provide a person of ordinary skill in the art a thorough, enabling disclosure of the present invention. The description of well-known components is not included within this description so as not to obscure the disclosure or take away or otherwise reduce the novelty of the present invention and the main benefits provided thereby.
  • Embodiments of the disclosure presented herein provide methods, systems, and computer-readable media for providing and utilizing a means for packaging, compiling, linking, and merging programs that embodies the invention. In addition program products and other means for exploiting the invention are presented.
  • Referring now to the drawings, in which like numerals represent like elements throughout the several figures, aspects of an exemplary operating environment and the implementations provided herein will be described. FIG. 1 is a schematic block diagram of an electronic device configured to implement the firmware target system operational functionality according to the present invention.
  • FIG. 1 shows a computer 10 that is operative to provide an EFI/UEFI firmware environment to provide a DXE (Driver Execution Environment) phase and/or a BDS (Boot Device Selection) phase. DXE and BDS are well known in the UEFI arts. The computer 10 typically includes a baseboard (not shown in FIG. 1), or motherboard form of printed circuit board to which a multitude of components or devices are connected by way of a system bus or other electrical communication path. In one illustrative embodiment, a CPU (central processing unit) 12 operates in conjunction with a chipset 50. The CPU 12 is a standard central processor that performs, inter alia, arithmetic and logical operations necessary for the operation of the computer.
  • Chipset 50 may include a Northbridge 14 and a Southbridge 32. The Northbridge 14 may be attached to CPU 12 by a FSB (Front Side Bus) 13 and typically provides an interface between the CPU 12 and the remainder of the computer 10. The Northbridge 14 may also provide an interface to a RAM (random access memory) 16 the main memory for the computer 10 and, possibly, to other devices such as an on-board graphics adapter (not shown in FIG. 1).
  • The Northbridge 14 is connected to a Southbridge 32 by a DMI (direct media interface) 18. The Southbridge 32 may be responsible for controlling many of the input/output functions of the computer 10 such as USB (universal serial bus), sound adapters, Ethernet controllers and one or more GPIO (general purpose input/output) port (None shown in FIG. 1). In one embodiment, a bus comprises a PCI (peripheral component interconnect) bus circuit 22 to which a disk storage subsystem 66 (often abbreviated to “disk”) or other storage devices for storing an operating system and application programs may be attached.
  • The Southbridge 32 may also provide SMM (system management mode) circuits and power management circuitry. A peripheral interface 30 may also be provided by the Southbridge 32 for connecting a SuperI/O (Super input-output) device 60. Southbridge 32 may also incorporate a timer circuit for generating timer circuit interrupts typically at periodic intervals.
  • As known to those skilled in the art, an O/S (operating system) such as may be stored on disk 66 comprises a set of programs that control operations of a computer and allocation of resources. An application program is software that runs on top of (is loaded and directed by) the O/S software and uses computer resources made available through the O/S to perform application specific tasks desired by a user of the computer 10.
  • Disk 66 may also provide non-volatile storage for the computer 10. Although the description of computer-readable media contained herein refers to a mass storage device, such as a hard disk or CD-ROM (Compact-Disc-ROM) drive, it should be appreciated by those skilled in the art that computer-readable media can be any available media that can be accessed by the computer 10. By way of example, and not limitation, computer-readable media may comprise computer storage media and communication media. Computer storage media includes volatile and non-volatile, removable and non-removable media implemented in a method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EPROM (Erasable, programmable ROM), EEPROM (Electrically EPROM), serial EEPROM, Flash memory or other solid state memory technology, CD-ROM, DVD (Digital Versatile Disk), or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices well-known in the art, or any other medium which can be used to store the desired information and which can be accessed by the computer.
  • The peripheral interface 30 may also connect a computer storage media such as a ROM (not shown) or, more typically, a flash memory such as a NVRAM (non-volatile random access semiconductor memory) 33 for storing UEFI platform firmware 34 that includes program code containing the basic routines that help to start up the computer 10 and to transfer information between elements within the computer 10. The UEFI firmware 34 is compatible with the UEFI Specification.
  • It should be appreciated that the computer 10 may comprise other types of computing devices, including hand-held computers, embedded computer systems, personal digital assistants, and other types of computing devices known to those skilled in the art. It is also contemplated that the computer 10 may not include all of the components shown in FIG. 1, may include other components that are not explicitly shown in FIG. 1, or may utilize an architecture different from that shown in FIG. 1.
  • In an exemplary embodiment of the invention, Phoenix's SCT2 (SECURECORE Tiano version 2) uses build time paradigms derived in large part from the previously developed EDK1 (EFI Development Kit version 1), which is the previously developed and heretofore standardized form of packaging for the firmware of type TianoCore.org, discussed above. EDK1 includes respective source code and methods for compiling, linking, and merging the relevant software and firmware instruction codes together so that the resulting binary information entities may be used to program a ROM such as may typically be used in a targeted hardware configuration at run time.
  • Such innovations may typically include means for componentizing pieces of the software and firmware instruction codes so that a large structure is presented with elements or packages that are simplified for the product consumer or user. The way that, for example, a product user may define what is produced by the source code is also different in SCT2 as contrasted with EDK1, and notably so through an innovation of project files with a parametric build capability. Each driver program (mostly DXE device drivers) represented therein may have compile-time parameters that may be specified in the build, thus facilitating and promoting product user control over various discrete policies (typically fine-grained discrete policies) that may be embodied in each driver. Additionally, overall system policies involving multiple drivers are facilitated.
  • Moreover, as contrasted with EDK1, SCT2 simplifies EFI Platform module concepts, as expressed in hundreds (or even thousands) of source files, by introducing a Board-level module that may be used by a product user for customization. In such an embodiment, Platform modules are typically relegated to platform class definitions that support multiple Board modules. These SDK (so-called software development kit, but relating also to firmware) innovations facilitate significant improvement as to productivity (both during board bring-up and during customization processes), and enable third parties to develop solutions that may be used by Phoenix customers and/or other product users.
  • The ways in which Tiano-based EFI is augmented with these innovations is new and historically unparalleled thus providing significant new advantages.
  • FIG. 2 shows a prior art organization of an Intel-architected EDK1 source tree as embodied as to a corresponding Directory Organization.
  • In FIG. 2, the Foundation, consisting of code necessary to locate and load drivers into memory in the run time environment, is located entirely within its own directory, which is simply named “Foundation”. Intel Corporation maintains this code as creators and owners of the basic fundamental part of the EFI architecture. Accordingly, Intel supplies patches thereto from time to time. Whenever patches are applied, they are (must be) applied in situ, that is over the top of any and all existing Foundation folder files. Although such patches primarily correct defects in the Foundation itself, they might not always be entirely backwards compatible. Consequently, patches are supplied on a per-tree basis, and all projects within the tree must entirely accept (or, rarely, entirely reject) all of the subject patches.
  • In the EDK1 Sample directory there are subdirectories supporting potential or realizable product user (so-called customer) adaptation, this is especially the case within the Platform directory, and within which subdirectories are typically created for each project to be supported by the build tree.
  • Moreover, the EDK1 Universal directory contains the system's standard components that have general applicability to all, or almost all, projects. Examples include the disk component, which typically contains multiple drivers supporting disk I/O (block input-output and related file systems) and a feature commonly known as DxeIpl (for Driver execution environment initial program loader), which launches the DXE (Driver execution environment) runtime component.
  • In contrast, FIG. 3 represents a typical SCT2 directory tree organization according to an embodiment of the invention and which provides an exemplary illustration of innovative SCT2 Code Organization. As depicted, in such a tree of build files a plurality of logical components (such as Foundation, Kernel, Exec(executive), System, Platform, Board, Project) is presented and each contains a further layer of subdirectories (herein enumerated 000, 001, 002, et seq) each supporting versioning of the respective component.
  • Thus, as a newer version of each component is created, it may be assigned a new version number in local sequence. This thereby allows more than one version (or logical revision) of a component to be available in the selected tree. This innovation makes it possible for a project file (shown as Projects\ProjectName\000\Project.def in FIG. 3) to specify the modules and their respective versions to be included on a project basis. As the customer or product user has a development tree that matures, so earlier projects that may be using correspondingly earlier versions of the Foundation, Kernel, Executive, System, or Silicon drivers may continued to be maintained through revision. This may occur all while newer projects may refer to more recent releases of those same (or equivalent or corresponding) components.
  • The exemplary SCT 2.0 source tree consists of the versioned modules. Any directory that has the 3-digit numeric subdirectories is a module. The numeric subdirectories store different revisions of the module's source code; they should start from 000 and increment as the new module revisions are created. Also, because even the build itself is versioned, it is possible for the SCT framework to support dissimilar builds, including those not based on EDK I, on a project-by-project basis.
  • In order that project-based build may be achieved without modification to the EDK1 source itself (which is prohibited if compatibility and conformity is required) a novel top-level directory is created. In the exemplary embodiment of the invention, this new top-level directory is herein called “Projects”, and whereat each project to be defined is assigned its own respective subdirectory. Within a given project's subdirectory hierarchy, further versioning (and version naming) subdirectories are created, thus providing a means for supporting multiple releases of a particular project within one single directory tree.
  • The selected versioned directory (for example 000—a directory mapped to a first version) is known as the project directory. It contains the necessary files to define a given project that is to produce a binary target image. In the exemplary embodiment of the invention, the Project.def file within this directory may be a text file that contains the project definition statements that drive the build, such as that shown in FIG. 4.
  • FIG. 4 is an exemplary Project Definition File illustrating use of MODULE statements. In FIG. 4, MODULE statements are depicted that may be used to declare the components within an exemplary SCT2 build tree. It is intended that these are to be included in the exemplary build, and also specify locations of pertinent EDK1 build automation files.
  • In an exemplary embodiment of the invention the build process is controlled by the project file (named PROJECT.DEF), which configures the build with the Definition Language statements. The nature and purpose of the Definition Language is to define configuration objects used by a utility program to create the output files used in other phases of the build. Such output files may include: a Project.h file for #define statements included for C language source program; a Project.inc file for symbol definitions included in Assembly language source program; a Project.env file for symbol definitions, as may be used in INF and DSC files and/or a Cmdb.bin file for a kernel CM (Configuration Manager) database used for BIOS runtime configuration and/or reconfiguration.
  • The project file may be processed by an SCTPROJ utility from a top level downwards, so that statements placed towards the end of the file will typically override definitions placed further from the end of the file. Within the project file the first module to include is the module named “Build”; it may contains some overarching definitions, such as a version number of the recommended and tested development suite used. One such development suite is the popular Visual Studio product. The order of the modules specified in the project file may typically follow their respective architectural position. For example in the sequence: Foundation, Kernel, Executive, and System. Thus subsequent modules may augment or override objects created in preceding modules. In a similar manner, Core modules are typically followed by the Silicon, Platform, Board, and other modules in that particular order.
  • Still referring to FIG. 4, an exemplary MODULE statement in a .DEF might be of the form: MODULE ModuleName, ModuleVersion, [Parameter]
  • Here, MODULE is a keyword. The second lexeme is the Module name, followed by the required version number and an optional special parameter.
  • In an embodiment of the invention, the special parameter is interpreted as according whether the parameter contains underscores. If there are underscores then SCTPROJ creates an equate: Parameter=ModulePath. This may be done so as to create the additional symbols for the module path, which may be required, for example, by third-party code.
  • Conversely, if underscores are absent from the parameter, then SCTPROJ creates a additional path equate similar to the above described path, but with an “SCT_PATH_” prefix: SCT_PATH_Parameter=ModulePath.
  • MODULE declarations enable the SCTPROJ tool to find the specified versioned modules in the current source tree and create the necessary path symbols used by ProcessDSC for processing INF and DSC files. SCTPROJ may also look for a Build folder and MODULE.DEF file in the module's own root directory. The content of the MODULE.DEF file may thus be included in processing of the PROJECT.DEF file, thereby facilitating overrides as described above. The Module's Build folder contains the standard Pei.dsc, Dxe.dsc, and Library.dsc files that have INF file entries for the components included in the module. When SCTPROJ processes a MODULE statement, it may add these DSC files as “!include” entries into the corresponding temporary files: ProjectPei.dsc, ProjectDxe.dsc, and ProjectLib.dsc. In this way, these project level DSC files are auto-generated in the project's Temp folder and are included by the main Build.dsc located in the core Build folder. The main Build.dsc file is pointed to by the project's MAKEFILE to be passed to a ProcessDSC utility.
  • FIG. 5 is a flowchart that shows a method according to an embodiment of the invention that implements the exemplary features prescribed in FIGS. 3 and 4 above. At Ref. 5100 entry is made to a function for building a firmware (or firmware and software) image according to an embodiment of the invention.
  • At Ref. 5110, a build utility program with an exemplary name of PHMAKE is invoked such as via a DOS (Disk Operating System) prompt or through an integrated environment, with the project directory being the current working directory. Build utility programs are well-known in the firmware or software build arts; some types of build utility programs are colloquially (or sometimes formally) known as “Make programs”. To invoke a build utility program in a particular directory is a term of art for initiating and running a build utility program that has specific knowledge of how to locate a most-significant, or current project, directory upon which many or most aspects of the build particulars are derived. The current working directory is an exemplary embodiment of the current project directory concept. A current project directory may be a focal point of a multiplicity of versions of build versions derived from an instance of build-time parameterization. Such terminologies are well-known in the firmware or software build arts, as appropriate.
  • At Ref. 5120, a PHMAKE.EXE program to implement the PHMAKE function scans its own parent directories for a configurator file herein called PHMAKE.CFG. This PHMAKE.CFG file provides directives to PHMAKE that allow it to identify name and version of the build files to be used in the present build.
  • At Ref. 5130, the PHMAKE.EXE program runs a MAKEFILE located in the Build directory, passing it symbols specifying (1) the project's name and version, (2) the location of the build files, and (3) the build tree's root directory name (in the example this is C:\SCT.) MAKEFILE is well-known in the art. The MAKEFILE in turn invokes, supervises and runs the top-level build, including running a utility program, SCTPROJ.EXE, to process the respective Project.def file.
  • At Ref. 5140, the SCTPROJ.EXE program attempts to access MODULE.DEF files, located in each of the component directories specified by the MODULE statements in the project file. Whenever and wherever relevant MODULE.DEF files are found, their statements, consisting of Option and Config definitions are processed by SCTPROJ.EXE. These Option and Config definitions act to specify default values for the build options later each used by their respective component.
  • At Ref. 5150, the SCTPROJ.EXE program parses the Project.def file to produce a Project.h file in a temporary (temp\) directory within the project directory that typically contains #define statements associated with each Option declaration (for example Parametric Build uses this build product.) A Project.inc file is also created for input into build of Assembly Language programs.
  • Next, at Ref. 5160, a Project.env file is created; this is necessarily compatible with the EDK1 Config.env file. FIG. 6 (below) shows a sample output Project.env file, illustrating how the MODULE and Option statements are transformed into declarations in the Project.env file.
  • Still referring to FIG. 5, at Ref. 5170, the PHMAKE.EXE program continues to read the MAKEFILE after SCTPROJ.EXE completes its processing, causing the EDK1 compatible MAKEFILE to receive control in substantially the same manner as with previously developed build systems and with the information needed to parameterize the build and to locate the needed build components.
  • At Ref. 5180, the remainder of the build proceeds using EDK1 build tools. This may include DSC (description files) as described below in connection with FIG. 8. At Ref. 5190 the method ends.
  • FIG. 6 shows a sample output Project.env file that has been methodically produced by the exemplary SCTPROJ.EXE build utility.
  • FIG. 7 shows an excerpt of a System Dxe.DSC (driver execution environment description) file, showing use of a BUILD_CONDITION parameter.
  • Build parameters, such as OPTION_DEBUG_SERIAL_DXE, are used to render conditional the inclusion of drivers in the build, using the EDK's DSC file system. In previously developed (non-enhanced) EDK1 style builds, a BUILD.DSC file in the platform tip directory containing a list of drivers to be included in the build, is read by the EDK1 build tool PROCESSDSC.EXE.
  • In contrast, in an enhanced build according to an embodiment of the invention, individual statements are replaced with !INCLUDE statements that refer to standardized DSC files in the respective module directories and which have corresponding BUILD_CONDITION parameters. This causes PROCESS.DSC to include only those files wherein the respective parameters in the manufactured Config.env file evaluate to TRUE. FIG. 7 shows an excerpt of the System's Dxe.DSC file, illustrating how certain drivers may be conditionally included in the build in the context of the present exemplary description.
  • With regards to FIG. 8, computer instructions to be incorporated into an electronic device 10 may be distributed as manufactured firmware and/or software computer products 510 using a variety of possible media 530 having the instructions recorded thereon such as by using a storage recorder 520. Often in products as complex as those that deploy the invention, more than one medium may be used, both in distribution and in manufacturing relevant product. Only one medium is shown in FIG. 8 for clarity but more than one medium may be used and a single computer product may be divided among a plurality of media.
  • FIG. 9 shows how an exemplary embodiment of the invention may be encoded, transmitted, received and decoded using electro-magnetic waves.
  • With regard to FIG. 9, additionally, and especially since the rise in Internet usage, computer products 610 may be distributed by encoding them into signals modulated as a wave. The resulting waveforms may then be transmitted by a transmitter 640, propagated as tangible modulated electro-magnetic carrier waves 650 and received by a receiver 660. Upon reception they may be demodulated and the signal decoded into a further version or copy of the computer product 611 in a memory or other storage device that is part of a second electronic device 11 and typically similar in nature to electronic device 10.
  • Other topologies and/or devices could also be used to construct alternative embodiments of the invention. The embodiments described above are exemplary rather than limiting and the bounds of the invention should be determined from the claims. Although preferred embodiments of the present invention have been described in detail hereinabove, it should be clearly understood that many variations and/or modifications of the basic inventive concepts herein taught which may appear to those skilled in the present art will still fall within the spirit and scope of the present invention, as defined in the appended claims.

Claims (10)

1. A method for building a plurality of firmware components to execute a sequence of instructions in a device comprising a computer, the method comprising:
through the use of a build utility program invoked in a build directory, scanning parent directories of the build directory to locate a build file having a plurality of module version specifications;
creating an EFI (extensible firmware interface) configurator file that provides information for identifying a plurality of selected modules for building from a plurality of versions of modules specified by the plurality of module version specifications; and
performing a build responsive to a reading of the EFI configurator file.
2. The method of claim 1 wherein:
the EFI (extensible firmware interface) configurator provides for UEFI (unified extensible firmware interface) capabilities.
3. The method of claim 1 wherein:
the EFI (extensible firmware interface) configurator file is created responsive to contents of module definition files for a plurality of versions of subdirectories comprising Kernel, Executive and System files.
4. The method of claim 1 further comprising:
conditionally including drivers in the firmware components responsive to build condition parameter in a DXE.DSC (driver execution environment description).
5. A computer program product comprising:
at least one computer-readable medium having instructions encoded therein, the instructions when executed by a device comprising a computer cause the device to operate to implement the method of claim 1.
6. The computer program product of claim 5 wherein:
the device further operates to implement the method of claim 2.
7. A method comprising:
an act of modulating a signal onto an electro-magnetic carrier wave impressed into a tangible medium, or of demodulating the signal from the electro-magnetic carrier wave, the signal having instructions encoded therein, the instructions when executed by a device comprising a computer cause the device to operate to implement the method of claim 1.
8. The method of claim 7 wherein:
the device further operates to implement the method of claim 2.
9. An electronic device comprising:
a controller; and
a memory having instructions encoded therein, the instructions when executed by the controller cause said electronic device to operate for running an sequence of instructions by steps that implement the method of claim 1.
10. The electronic device of claim 9 wherein:
the electronic device further operates to implement the method of claim 2.
US12/756,437 2009-06-13 2010-04-08 Parametric Build of UEFI Firmware Abandoned US20100318961A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/756,437 US20100318961A1 (en) 2009-06-13 2010-04-08 Parametric Build of UEFI Firmware

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US26856209P 2009-06-13 2009-06-13
US12/756,437 US20100318961A1 (en) 2009-06-13 2010-04-08 Parametric Build of UEFI Firmware

Publications (1)

Publication Number Publication Date
US20100318961A1 true US20100318961A1 (en) 2010-12-16

Family

ID=43307414

Family Applications (8)

Application Number Title Priority Date Filing Date
US12/566,611 Expired - Fee Related US8321656B2 (en) 2009-06-13 2009-09-24 Timer use in extensible firmware interface compliant systems
US12/566,624 Expired - Fee Related US8468332B2 (en) 2009-06-13 2009-09-24 Dynamic link loading in extensible firmware interface compliant systems
US12/566,584 Expired - Fee Related US8321655B2 (en) 2009-06-13 2009-09-24 Execution parallelism in extensible firmware interface compliant systems
US12/610,224 Expired - Fee Related US8533735B2 (en) 2009-06-13 2009-10-30 System for execution context isolation in response to invoking a BIOS kernel function during a driver execution environment (DXE) phase of boot-up of a computer
US12/631,961 Expired - Fee Related US8544021B2 (en) 2009-06-13 2009-12-07 Execution context isolation in a driver execution environment (DXE) with marshaling arguments to a common location in response to an LPC
US12/756,461 Expired - Fee Related US8527744B2 (en) 2009-06-13 2010-04-08 Board module for providing alternative board functions which are not called by UEFI compatible programs for driving platform service in silicon components
US12/756,437 Abandoned US20100318961A1 (en) 2009-06-13 2010-04-08 Parametric Build of UEFI Firmware
US12/756,446 Expired - Fee Related US8589902B2 (en) 2009-06-13 2010-04-08 Policy description technique in UEFI firmware

Family Applications Before (6)

Application Number Title Priority Date Filing Date
US12/566,611 Expired - Fee Related US8321656B2 (en) 2009-06-13 2009-09-24 Timer use in extensible firmware interface compliant systems
US12/566,624 Expired - Fee Related US8468332B2 (en) 2009-06-13 2009-09-24 Dynamic link loading in extensible firmware interface compliant systems
US12/566,584 Expired - Fee Related US8321655B2 (en) 2009-06-13 2009-09-24 Execution parallelism in extensible firmware interface compliant systems
US12/610,224 Expired - Fee Related US8533735B2 (en) 2009-06-13 2009-10-30 System for execution context isolation in response to invoking a BIOS kernel function during a driver execution environment (DXE) phase of boot-up of a computer
US12/631,961 Expired - Fee Related US8544021B2 (en) 2009-06-13 2009-12-07 Execution context isolation in a driver execution environment (DXE) with marshaling arguments to a common location in response to an LPC
US12/756,461 Expired - Fee Related US8527744B2 (en) 2009-06-13 2010-04-08 Board module for providing alternative board functions which are not called by UEFI compatible programs for driving platform service in silicon components

Family Applications After (1)

Application Number Title Priority Date Filing Date
US12/756,446 Expired - Fee Related US8589902B2 (en) 2009-06-13 2010-04-08 Policy description technique in UEFI firmware

Country Status (1)

Country Link
US (8) US8321656B2 (en)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100229154A1 (en) * 2004-11-30 2010-09-09 Avanade Holdings Llc Declarative aspects and aspect containers for application development
US20100318779A1 (en) * 2009-06-13 2010-12-16 Jones Stephen E Platform and board customization technique in uefi firmware
US20120254831A1 (en) * 2011-03-30 2012-10-04 Mortensen James L Supporting hardware configuration changes in a uefi firmware component
US20120266148A1 (en) * 2011-04-14 2012-10-18 Mortensen James L Supporting multiple hardware components in uefi
US20120304120A1 (en) * 2011-05-25 2012-11-29 Amx Llc Data-driven menuing system for providing a flexible user interface on an electronic device
US20160154657A1 (en) * 2013-03-25 2016-06-02 Hewlett-Packard Development Company, L.P. Extensible Firmware Abstraction
US11507387B2 (en) * 2020-05-26 2022-11-22 Dell Products L.P. Method to optimize system boot time of modules/driver's execution in UEFI pre-boot environment

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8566565B2 (en) * 2008-07-10 2013-10-22 Via Technologies, Inc. Microprocessor with multiple operating modes dynamically configurable by a device driver based on currently running applications
US8464281B2 (en) * 2010-08-18 2013-06-11 Sas Institute, Inc. Techniques to remotely access object events
JP4929407B1 (en) * 2011-03-09 2012-05-09 株式会社東芝 Information processing apparatus and display control method
EP2761441A4 (en) * 2011-09-30 2015-04-01 Hewlett Packard Development Co Virtualized device control in computer systems
US9442732B2 (en) 2012-03-19 2016-09-13 Via Technologies, Inc. Running state power saving via reduced instructions per clock operation
CN102662749B (en) * 2012-03-23 2018-02-13 天津中兴智联科技有限公司 A kind of implementation method and device of double Boot switchings
US9235404B2 (en) 2012-06-27 2016-01-12 Microsoft Technology Licensing, Llc Firmware update system
US8972973B2 (en) 2012-06-27 2015-03-03 Microsoft Technology Licensing, Llc Firmware update discovery and distribution
US10129607B2 (en) 2012-12-19 2018-11-13 Arris Enterprises Llc Using analytical models to inform policy decisions
KR20140117932A (en) * 2013-03-27 2014-10-08 삼성전자주식회사 Method for controlling ACPI information and computer readable media storing program implementing the method
US9424138B2 (en) * 2013-06-14 2016-08-23 Nvidia Corporation Checkpointing a computer hardware architecture state using a stack or queue
US9678767B2 (en) 2013-06-14 2017-06-13 Hewlett-Packard Development Company, L.P. Unified extensible firmware interface (UEFI) driver and protocol
US9411605B2 (en) 2013-08-29 2016-08-09 Samsung Electronics Co., Ltd. Device-less and system agnostic unified extensible firmware interface (UEFI) driver
US10019260B2 (en) 2013-09-20 2018-07-10 Via Alliance Semiconductor Co., Ltd Fingerprint units comparing stored static fingerprints with dynamically generated fingerprints and reconfiguring processor settings upon a fingerprint match
US9330011B2 (en) 2013-09-20 2016-05-03 Via Alliance Semiconductor Co., Ltd. Microprocessor with integrated NOP slide detector
US9483341B2 (en) * 2014-01-02 2016-11-01 Red Hat, Inc. Applying security label on kernel core crash file
US10338933B2 (en) 2014-03-25 2019-07-02 Dell Products, Lp Method for generating custom BIOS setup interface and system therefor
US9575778B2 (en) 2014-05-20 2017-02-21 Via Alliance Semiconductor Co., Ltd. Dynamically configurable system based on cloud-collaborative experimentation
US9755902B2 (en) 2014-05-20 2017-09-05 Via Alliance Semiconductor Co., Ltd. Dynamic system configuration based on cloud-collaborative experimentation
US9582393B2 (en) * 2014-06-20 2017-02-28 Dell Products, Lp Method to facilitate rapid deployment and rapid redeployment of an information handling system
US9569297B2 (en) * 2014-07-16 2017-02-14 Dell Products, Lp Seamless method for booting from a degraded software raid volume on a UEFI system
US9524390B2 (en) 2014-09-09 2016-12-20 Dell Products, Lp Method for authenticating firmware volume and system therefor
US9767118B2 (en) 2014-12-01 2017-09-19 Dell Products, Lp Optimized UEFI file system with network file system compound statements
US9519503B2 (en) * 2014-12-01 2016-12-13 Dell Products, L.P. Systems and methods for virtual machine attribution with fault resilient memory tag
US10754967B1 (en) * 2014-12-15 2020-08-25 Marvell Asia Pte, Ltd. Secure interrupt handling between security zones
CN107534647B (en) 2015-05-06 2020-11-03 慧与发展有限责任合伙企业 System, computing device, and storage medium for transmitting startup script
KR102336663B1 (en) 2015-05-13 2021-12-07 삼성전자 주식회사 Server system and management method thereof
CN106293898A (en) * 2015-05-20 2017-01-04 张远虎 Multi-thread design method
US9904543B2 (en) 2015-10-26 2018-02-27 Hewlett-Packard Development Company, L.P. Setting a build indicator to enable or disable a feature
US10311217B2 (en) * 2016-12-09 2019-06-04 Microsoft Technology Licensing, Llc Application piracy prevention with secure enclave protection of automatically modularized functions
US10521216B2 (en) 2017-01-17 2019-12-31 Oracle International Corporation Unified extensible firmware interface updates
US11036408B2 (en) 2017-03-26 2021-06-15 Oracle International Corporation Rule-based modifications in a data storage appliance monitor
US10489594B2 (en) 2017-07-19 2019-11-26 Dell Products, Lp System and method for secure migration of virtual machines between host servers
CN110348252B (en) * 2018-04-02 2021-09-03 华为技术有限公司 Trust zone based operating system and method
CN111596962B (en) * 2019-02-20 2023-05-30 中标软件有限公司 Real-time microkernel system based on high-speed protocol channel and initialization method thereof
US11669618B2 (en) * 2021-04-21 2023-06-06 Dell Products L.P. Systems and methods for securing and loading bios drivers and dependencies in a predefined and measured load order
WO2022232313A1 (en) * 2021-04-27 2022-11-03 Synerio Technologies, Inc. System and method of electronic health record data qualification
CN113268275B (en) * 2021-07-19 2021-09-28 成都菁蓉联创科技有限公司 Hardware equipment driving system based on microkernel and driving method thereof
US11836500B2 (en) * 2022-05-06 2023-12-05 Dell Products L.P. Systems and methods for basic input/output system driver offline protocol

Citations (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4809170A (en) * 1987-04-22 1989-02-28 Apollo Computer, Inc. Computer device for aiding in the development of software system
US5872987A (en) * 1992-08-07 1999-02-16 Thinking Machines Corporation Massively parallel computer including auxiliary vector processor
US5890008A (en) * 1997-06-25 1999-03-30 Sun Microsystems, Inc. Method for dynamically reconfiguring a processor
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
US5956513A (en) * 1997-08-07 1999-09-21 Mci Communications Corporation System and method for automated software build control
US6195795B1 (en) * 1997-12-19 2001-02-27 Alcatel Usa Sourcing, L.P. Apparatus and method for automatic software release notification
US6711667B1 (en) * 1996-06-28 2004-03-23 Legerity, Inc. Microprocessor configured to translate instructions from one instruction set to another, and to store the translated instructions
US20040268295A1 (en) * 2003-06-30 2004-12-30 Culter Bradley G. System and method for development of firmware
US20050015762A1 (en) * 2003-06-09 2005-01-20 Steckler Steven James Methods and systems for deploying computer source code
US20050268283A1 (en) * 2004-05-27 2005-12-01 International Business Machines Corporation Audited builds based upon separate class dependency records
US20060080638A1 (en) * 2004-08-25 2006-04-13 International Business Machines Corporation Automated multi-platform build and test environment for software application development
US20060174240A1 (en) * 2005-02-02 2006-08-03 Insyde Software Corporation System and method for updating firmware in a secure manner
US20060225052A1 (en) * 2005-03-30 2006-10-05 Lucent Technologies Inc. Method for handling preprocessing in source code transformation
US20060282815A1 (en) * 2005-06-09 2006-12-14 Finite State Machine Labs, Inc. System, method and computer program product for developing, configuring, installing and testing software
US20070061702A1 (en) * 2005-08-25 2007-03-15 International Business Machines Corporation Floating merge selection viewer
US20070094655A1 (en) * 2005-10-26 2007-04-26 Arad Rostampour Firmware filters and patches
US20070234315A1 (en) * 2006-02-09 2007-10-04 International Business Machines Corporation Compiling an application by cluster members
US20080034346A1 (en) * 2002-05-14 2008-02-07 Microsoft Corporation Preparation for Software on Demand System
US20080072211A1 (en) * 2006-09-20 2008-03-20 Rothman Michael A Method and system for firmware image size reduction
US20080178143A1 (en) * 2006-10-05 2008-07-24 Cort Dougan System, Method and Computer Program Product for Developing, Configuring, Installing and Testing Software
US20090063835A1 (en) * 2007-08-30 2009-03-05 Jiewen Yao Method for firmware isolation
US7584460B2 (en) * 2003-07-22 2009-09-01 Lsi Corporation Process and apparatus for abstracting IC design files
US20090222805A1 (en) * 2008-02-29 2009-09-03 Norman Lee Faus Methods and systems for dynamically building a software appliance
US20090271600A1 (en) * 2008-04-24 2009-10-29 Dell Products, Lp Method of using an information handling system having a boot file, and an information handling system and machine-executable code for carrying out the method
US20090319552A1 (en) * 2007-04-02 2009-12-24 Juniper Networks, Inc. Software merging utility
US20100011197A1 (en) * 2008-07-08 2010-01-14 Dell Products L.P. Enhanced uefi framework layer
US20100083211A1 (en) * 2008-09-30 2010-04-01 Accurev, Inc. Integration of external software analysis processes with software configuration management applications
US7694291B2 (en) * 2004-04-06 2010-04-06 Hewlett-Packard Development Company, L.P. Build optimizer tool for efficient management of software builds for mobile devices
US20100205599A1 (en) * 2007-09-19 2010-08-12 Kpit Cummins Infosystems Ltd. Mechanism to enable plug-and-play hardware components for semi-automatic software migration
US20110271268A1 (en) * 2010-04-28 2011-11-03 Hon Hai Precision Industry Co., Ltd. System and method for updating unified extensible firmware interface setting information

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6167562A (en) * 1996-05-08 2000-12-26 Kaneko Co., Ltd. Apparatus for creating an animation program and method for creating the same
US6751737B1 (en) * 1999-10-07 2004-06-15 Advanced Micro Devices Multiple protected mode execution environments using multiple register sets and meta-protected instructions
US6732264B1 (en) * 1999-12-14 2004-05-04 Intel Corporation Multi-tasking boot firmware
US7130701B1 (en) * 2000-05-24 2006-10-31 Schneider Automation Inc. System for remote configuration monitoring of an industrial control system
WO2002079987A1 (en) * 2001-03-28 2002-10-10 British Telecommunications Public Limited Company Component-based software distribution and deployment
US7299462B2 (en) * 2001-05-07 2007-11-20 Stmicroelectronics Limited Relocation format for linking
US7003759B2 (en) * 2001-06-21 2006-02-21 Codefast, Inc. Collection makefile generator
US7237102B2 (en) 2002-10-30 2007-06-26 Intel Corporation Methods and apparatus for configuring hardware resources in a pre-boot environment without requiring a system reset
CA2422255C (en) * 2003-03-14 2010-08-17 Ibm Canada Limited - Ibm Canada Limitee Computer program product, data processing system, and method for installing or configuring computer software
US7676788B1 (en) * 2003-03-25 2010-03-09 Electric Cloud, Inc. Architecture and method for executing program builds
US7464367B2 (en) * 2003-07-14 2008-12-09 Microsoft Corporation Method and system for designing customizable applications and user-interfaces based on user-defined policies and metadata
US7392527B2 (en) * 2003-12-10 2008-06-24 Microsoft Corporation Driver-specific context for kernel-mode shimming
US7234054B2 (en) * 2004-02-09 2007-06-19 Intel Corporation Method and apparatus for enabling platform configuration
US7448030B2 (en) * 2004-03-18 2008-11-04 Intel Corporation Optimized ordering of firmware modules in pre-boot environment
US7203808B2 (en) * 2004-03-19 2007-04-10 Intel Corporation Isolation and protection of disk areas controlled and for use by virtual machine manager in firmware
US7240190B2 (en) * 2004-08-24 2007-07-03 Insyde Software Corporation Resource compatible system for computer system reads compressed filed stored in legacy BIOS and decompresses file using legacy support operating system driver
US7584465B1 (en) * 2004-09-20 2009-09-01 The Mathworks, Inc. Memory mapping for single and multi-processing implementations of code generated from a block diagram model
US7730472B2 (en) * 2004-09-24 2010-06-01 Hewlett-Packard Development Company, L.P. Dynamic linking of modules in a pre-operating system environment
US7571090B2 (en) * 2004-09-30 2009-08-04 Intel Corporation Emulating a host architecture in guest firmware
US20080256522A1 (en) * 2004-12-07 2008-10-16 Hitachi, Ltd Automobile Controller, Software Generation Method and Software Generation System Thereof
US7647589B1 (en) * 2005-02-07 2010-01-12 Parallels Software International, Inc. Methods and systems for safe execution of guest code in virtual machine context
US8237951B2 (en) * 2005-05-11 2012-08-07 Sharp Laboratories Of America, Inc. Intermediate stage emulation of firmware on connected host
JP4828271B2 (en) * 2006-03-20 2011-11-30 富士通株式会社 Software generation apparatus for multiple OS versions and software generation support program for multiple OS versions
US7721148B2 (en) * 2006-06-29 2010-05-18 Intel Corporation Method and apparatus for redirection of machine check interrupts in multithreaded systems
US7873807B1 (en) * 2006-07-28 2011-01-18 American Megatrends, Inc. Relocating a program module from NVRAM to RAM during the PEI phase of an EFI-compatible firmware
US7743072B2 (en) * 2006-07-28 2010-06-22 American Megatrends, Inc. Database for storing device handle data in an extensible firmware interface environment
US7698547B1 (en) * 2006-07-28 2010-04-13 American Megatrends, Inc. Execution of a program module within both a PEI phase and a DXE phase of an EFI firmware
US8078637B1 (en) * 2006-07-28 2011-12-13 Amencan Megatrends, Inc. Memory efficient peim-to-peim interface database
US7822960B2 (en) * 2006-12-22 2010-10-26 Intel Corporation Platform management processor assisted resume
US7788475B2 (en) * 2006-12-28 2010-08-31 Intel Corporation Booting utilizing electronic mail
US9280659B2 (en) 2006-12-29 2016-03-08 Intel Corporation Methods and apparatus for remeasuring a virtual machine monitor
US9378108B2 (en) * 2007-03-22 2016-06-28 Invention Science Fund I, Llc Implementing performance-dependent transfer or execution decisions from service emulation indications
US8984265B2 (en) * 2007-03-30 2015-03-17 Intel Corporation Server active management technology (AMT) assisted secure boot
US7890925B1 (en) * 2007-04-05 2011-02-15 Nvidia Corporation Automatic generation of custom driver packages
WO2009021208A1 (en) * 2007-08-08 2009-02-12 Innopath Software, Inc. Workflow-based user interface system for mobile devices management
US20090119748A1 (en) * 2007-08-30 2009-05-07 Jiewen Yao System management mode isolation in firmware
US8250521B2 (en) * 2007-12-14 2012-08-21 International Business Machines Corporation Method and apparatus for the design and development of service-oriented architecture (SOA) solutions
US8321931B2 (en) * 2008-03-31 2012-11-27 Intel Corporation Method and apparatus for sequential hypervisor invocation
US8234626B2 (en) * 2008-06-04 2012-07-31 Dell Products L.P. Modular ASL component
US8356168B2 (en) * 2008-06-19 2013-01-15 Intel Corporation Non-blocking UEFI I/O channel enhancements
US8201239B2 (en) 2008-06-23 2012-06-12 Intel Corporation Extensible pre-boot authentication
US20090327741A1 (en) * 2008-06-30 2009-12-31 Zimmer Vincent J System and method to secure boot uefi firmware and uefi-aware operating systems on a mobile internet device (mid)
US8201163B2 (en) * 2008-07-16 2012-06-12 Dell Products, Lp Input/output transaction management during platform initiation
US8086838B2 (en) 2008-08-13 2011-12-27 Dell Products L.P. Methods and systems for providing manufacturing mode detection and functionality in a UEFI BIOS
US8041794B2 (en) * 2008-09-29 2011-10-18 Intel Corporation Platform discovery, asset inventory, configuration, and provisioning in a pre-boot environment using web services
US8086839B2 (en) * 2008-12-30 2011-12-27 Intel Corporation Authentication for resume boot path
US8561138B2 (en) * 2008-12-31 2013-10-15 Intel Corporation System and method to provide added security to a platform using locality-based data
US8694761B2 (en) * 2008-12-31 2014-04-08 Vincent Zimmer System and method to secure boot both UEFI and legacy option ROM's with common policy engine
US8713209B2 (en) * 2009-01-13 2014-04-29 Qualcomm Incorporated System, apparatus, and method for fast startup of USB devices
US20100306774A1 (en) * 2009-05-28 2010-12-02 Subash Kalbarga Instant-On Computing System
US8321656B2 (en) * 2009-06-13 2012-11-27 Phoenix Technologies Ltd. Timer use in extensible firmware interface compliant systems
US8484631B2 (en) * 2011-03-30 2013-07-09 Phoenix Technologies Ltd. Supporting hardware configuration changes in a UEFI firmware component
US8726258B2 (en) * 2011-04-14 2014-05-13 Phoenix Technologies Ltd. Supporting multiple hardware components in UEFI

Patent Citations (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4809170A (en) * 1987-04-22 1989-02-28 Apollo Computer, Inc. Computer device for aiding in the development of software system
US5872987A (en) * 1992-08-07 1999-02-16 Thinking Machines Corporation Massively parallel computer including auxiliary vector processor
US6711667B1 (en) * 1996-06-28 2004-03-23 Legerity, Inc. Microprocessor configured to translate instructions from one instruction set to another, and to store the translated instructions
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
US5890008A (en) * 1997-06-25 1999-03-30 Sun Microsystems, Inc. Method for dynamically reconfiguring a processor
US5956513A (en) * 1997-08-07 1999-09-21 Mci Communications Corporation System and method for automated software build control
US6195795B1 (en) * 1997-12-19 2001-02-27 Alcatel Usa Sourcing, L.P. Apparatus and method for automatic software release notification
US20080034346A1 (en) * 2002-05-14 2008-02-07 Microsoft Corporation Preparation for Software on Demand System
US20050015762A1 (en) * 2003-06-09 2005-01-20 Steckler Steven James Methods and systems for deploying computer source code
US20040268295A1 (en) * 2003-06-30 2004-12-30 Culter Bradley G. System and method for development of firmware
US7584460B2 (en) * 2003-07-22 2009-09-01 Lsi Corporation Process and apparatus for abstracting IC design files
US7694291B2 (en) * 2004-04-06 2010-04-06 Hewlett-Packard Development Company, L.P. Build optimizer tool for efficient management of software builds for mobile devices
US20050268283A1 (en) * 2004-05-27 2005-12-01 International Business Machines Corporation Audited builds based upon separate class dependency records
US20060080638A1 (en) * 2004-08-25 2006-04-13 International Business Machines Corporation Automated multi-platform build and test environment for software application development
US8091066B2 (en) * 2004-08-25 2012-01-03 International Business Machines Corporation Automated multi-platform build and test environment for software application development
US20060174240A1 (en) * 2005-02-02 2006-08-03 Insyde Software Corporation System and method for updating firmware in a secure manner
US20060225052A1 (en) * 2005-03-30 2006-10-05 Lucent Technologies Inc. Method for handling preprocessing in source code transformation
US20060282815A1 (en) * 2005-06-09 2006-12-14 Finite State Machine Labs, Inc. System, method and computer program product for developing, configuring, installing and testing software
US20070061702A1 (en) * 2005-08-25 2007-03-15 International Business Machines Corporation Floating merge selection viewer
US20070094655A1 (en) * 2005-10-26 2007-04-26 Arad Rostampour Firmware filters and patches
US20070234315A1 (en) * 2006-02-09 2007-10-04 International Business Machines Corporation Compiling an application by cluster members
US20080072211A1 (en) * 2006-09-20 2008-03-20 Rothman Michael A Method and system for firmware image size reduction
US20080178143A1 (en) * 2006-10-05 2008-07-24 Cort Dougan System, Method and Computer Program Product for Developing, Configuring, Installing and Testing Software
US20090319552A1 (en) * 2007-04-02 2009-12-24 Juniper Networks, Inc. Software merging utility
US20090063835A1 (en) * 2007-08-30 2009-03-05 Jiewen Yao Method for firmware isolation
US20100205599A1 (en) * 2007-09-19 2010-08-12 Kpit Cummins Infosystems Ltd. Mechanism to enable plug-and-play hardware components for semi-automatic software migration
US20090222805A1 (en) * 2008-02-29 2009-09-03 Norman Lee Faus Methods and systems for dynamically building a software appliance
US20090271600A1 (en) * 2008-04-24 2009-10-29 Dell Products, Lp Method of using an information handling system having a boot file, and an information handling system and machine-executable code for carrying out the method
US20100011197A1 (en) * 2008-07-08 2010-01-14 Dell Products L.P. Enhanced uefi framework layer
US20100083211A1 (en) * 2008-09-30 2010-04-01 Accurev, Inc. Integration of external software analysis processes with software configuration management applications
US8473893B2 (en) * 2008-09-30 2013-06-25 Accurev, Inc. Integration of external software analysis processes with software configuration management applications
US20110271268A1 (en) * 2010-04-28 2011-11-03 Hon Hai Precision Industry Co., Ltd. System and method for updating unified extensible firmware interface setting information

Non-Patent Citations (8)

* Cited by examiner, † Cited by third party
Title
Lewis et al., Phoenix PSI SDK/DDK Overview, published by UEFI Plugfest presentation 2007, pages 1-24 *
Paul Dubois, Software Portability with imake, published by O'Reilly & Assoicates, Inc, 1993, isbn: 1-56592-055-4, pages 8-12, 22-23, 33-35 *
Paul Dubois, Software Portability with imake, published by O'Reilly & Assoicates, Inc., 1993, ISBN: 1-56592-055-4, pages 33-59 and 131-143 *
Paul DuBois, Software Portability with imake, published by O'Reilly & Assoicates, Inc., 1993, ISBN: 1-56592-055-4, pages 33-59, 64-68, and 131-143 *
Ruth Li, UEFI Driver Development Training Using EDK I LAB, published by UEFI Plugfest presentation 2007, pages 1-40 *
Tim Lewis, UEFI Overview, published by UEFI Plugfest presentation 2007, pages 1-21 *
Tim Lewis, What They Never Taught You In UEFI 101, published by UEFI Plugfest presentation 2007, pages 1-21 *
Vaughan et al., Autoconf, Automake, Libtool, edition 1.4.4., published 8/22/2005, pages 1-344 *

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8504982B2 (en) * 2004-11-30 2013-08-06 Avanade Holdings Llc Declarative aspects and aspect containers for application development
US20100229154A1 (en) * 2004-11-30 2010-09-09 Avanade Holdings Llc Declarative aspects and aspect containers for application development
US20100318779A1 (en) * 2009-06-13 2010-12-16 Jones Stephen E Platform and board customization technique in uefi firmware
US8527744B2 (en) * 2009-06-13 2013-09-03 Kinglite Holdings Inc. Board module for providing alternative board functions which are not called by UEFI compatible programs for driving platform service in silicon components
US20120254831A1 (en) * 2011-03-30 2012-10-04 Mortensen James L Supporting hardware configuration changes in a uefi firmware component
US8484631B2 (en) * 2011-03-30 2013-07-09 Phoenix Technologies Ltd. Supporting hardware configuration changes in a UEFI firmware component
US20120266148A1 (en) * 2011-04-14 2012-10-18 Mortensen James L Supporting multiple hardware components in uefi
US8726258B2 (en) * 2011-04-14 2014-05-13 Phoenix Technologies Ltd. Supporting multiple hardware components in UEFI
US20120304120A1 (en) * 2011-05-25 2012-11-29 Amx Llc Data-driven menuing system for providing a flexible user interface on an electronic device
US9563410B2 (en) * 2011-05-25 2017-02-07 Amx Llc Data-driven menuing system for providing a flexible user interface on an electronic device
US20170097813A1 (en) * 2011-05-25 2017-04-06 Amx Llc Data-driven menuing system for providing a flexible user interface on an electronic device
US10048950B2 (en) * 2011-05-25 2018-08-14 Amx Llc Data-driven menuing system for providing a flexible user interface on an electronic device
US20160154657A1 (en) * 2013-03-25 2016-06-02 Hewlett-Packard Development Company, L.P. Extensible Firmware Abstraction
US9910684B2 (en) * 2013-03-25 2018-03-06 Hewlett Packard Enterprise Development Lp Extensible firmware abstraction
US11507387B2 (en) * 2020-05-26 2022-11-22 Dell Products L.P. Method to optimize system boot time of modules/driver's execution in UEFI pre-boot environment

Also Published As

Publication number Publication date
US20100318778A1 (en) 2010-12-16
US8589902B2 (en) 2013-11-19
US20100318779A1 (en) 2010-12-16
US20100318776A1 (en) 2010-12-16
US8468332B2 (en) 2013-06-18
US8321656B2 (en) 2012-11-27
US20100318777A1 (en) 2010-12-16
US8533735B2 (en) 2013-09-10
US20100319000A1 (en) 2010-12-16
US8527744B2 (en) 2013-09-03
US8544021B2 (en) 2013-09-24
US20100319001A1 (en) 2010-12-16
US8321655B2 (en) 2012-11-27
US20100318962A1 (en) 2010-12-16

Similar Documents

Publication Publication Date Title
US20100318961A1 (en) Parametric Build of UEFI Firmware
US8484631B2 (en) Supporting hardware configuration changes in a UEFI firmware component
JP5362974B2 (en) How to use virtualization software for shipping software products
KR101343148B1 (en) Automated device driver management
US7934209B2 (en) Method for firmware variable storage with eager compression, fail-safe extraction and restart time compression scan
US20040230963A1 (en) Method for updating firmware in an operating system agnostic manner
US20170286136A1 (en) External feature provision for a cloud application registry
US20030167354A1 (en) Method and apparatus for automated operating systems upgrade
EP3189426A1 (en) External feature provision for cloud applications
US8082436B2 (en) Enhanced UEFI framework layer
US20060161898A1 (en) Method and system for project library dependency management
US20030177129A1 (en) Extensible loader
US11669334B2 (en) Just-in-time containers
US8539214B1 (en) Execution of a program module within both a PEI phase and a DXE phase of an EFI firmware
CN107766084B (en) Boot loading and installation method and computing system thereof
WO2006023274A2 (en) System and method for configuring computer for operation
US20060230397A1 (en) Method for third-party registration of software components
EP3207453B1 (en) Api versioning independent of product releases
US20030110370A1 (en) Supporting legacy operating system booting in a legacy-free system
US8726258B2 (en) Supporting multiple hardware components in UEFI
JP2004070952A (en) Firmware for multiplatform for retrieving system description auxiliary table
Pavlov et al. Windows embedded CE 6.0 fundamentals
Rothman et al. Harnessing the UEFI Shell: Moving the platform beyond DOS
CN113778388A (en) Program development method and device
Al-Bokhaiti et al. Customization and Optimization of Android Operating System for Custom Board with the Implementation of an Administrative Tool

Legal Events

Date Code Title Description
AS Assignment

Owner name: PHOENIX TECHNOLOGIES LTD, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KHORUZHENKO, EUGENE;JONES, STEPHEN E;SIGNING DATES FROM 20100430 TO 20100502;REEL/FRAME:024674/0538

AS Assignment

Owner name: HIGHBRIDGE PRINCIPAL STRATEGIES, LLC, AS COLLATERA

Free format text: GRANT OF SECURITY INTEREST - PATENTS;ASSIGNOR:PHOENIX TECHNOLOGIES LTD.;REEL/FRAME:025406/0604

Effective date: 20101123

AS Assignment

Owner name: MEP PLP, LLC, CALIFORNIA

Free format text: SECURITY AGREEMENT;ASSIGNOR:HIGHBRIDGE PRINCIPAL STRATEGIES, LLC;REEL/FRAME:029291/0354

Effective date: 20121109

AS Assignment

Owner name: PHOENIX TECHNOLOGIES LTD., CALIFORNIA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:MEP PLP, LLC;REEL/FRAME:029307/0590

Effective date: 20121112

AS Assignment

Owner name: KINGLITE HOLDINGS INC., SINGAPORE

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:PHOENIX TECHNOLOGIES LTD.;REEL/FRAME:029339/0716

Effective date: 20121115

AS Assignment

Owner name: AMERICAN MEGATRENDS, INC., GEORGIA

Free format text: LIEN AND SECURITY INTEREST;ASSIGNOR:KINGLITE HOLDINGS INC.;REEL/FRAME:041366/0255

Effective date: 20161121

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION