IP Library Granted Patent US 10,606,606
Granted Patent B1
US 10,606,606 · App. 15/496,744 · Granted Mar 31, 2020

Multi-platform firmware support

Inventors: Madhan B. Santharam (Duluth, GA); Presanna Raman (Suwanee, GA); Paul Anthony Rhea (Lawrenceville, GA); Stefano Righi (Lawrenceville, GA)
Assignee: AMERICAN MEGATRENDS INTERNATIONAL, LLC
G06F9/441
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,606,606
App. No.
15/496,744
Granted
Mar 31, 2020
Kind
B1
Abstract

A firmware development tool generates platform-specific firmware images for a multitude of different computing platforms. A multi-platform firmware image creation tool receives the platform-specific firmware images and generates a multi-platform firmware image therefrom. A portion of the multi-platform firmware image includes firmware files that are common across all of the platform-specific firmware images. Other portions of the multi-platform firmware image include firmware files that are specific to each of the platform-specific firmware images. At boot time of a computer system utilizing the multi-platform firmware image, the platform that the computer system uses is detected. The firmware files that are common across the platform-specific firmware images are then loaded into memory. The firmware files that are specific to the detected platform are also loaded into memory. Once the firmware files have been loaded into memory, they can be executed to boot the computer system and provide other types of functionality.

Claims (88)

1. A computer-implemented method for creating a single firmware image that supports multiple hardware platforms, comprising:

receiving a first platform-specific firmware image containing executable code, the first platform-specific firmware image comprising a plurality of executable files for implementing a firmware for a first computing platform;

receiving a second platform-specific firmware image containing executable code, the second platform-specific firmware image comprising a plurality of executable files for implementing a firmware for a second computing platform;

identifying executable files that are the same in the plurality of executable files for implementing the firmware for the first computing platform and in the plurality of executable files for implementing the firmware for the second computing platform;

identifying executable files contained in the plurality of executable files for implementing the firmware for the first computing platform that are not contained in the plurality of executable files for implementing the firmware for the second computing platform;

identifying executable files contained in the plurality of executable files for implementing the firmware for the second computing platform that are not contained in the plurality of executable files for implementing the firmware for the first computing platform; and

creating a single multi-platform firmware image by:

storing the executable files that are the same in the first platform-specific firmware image containing executable code and the second platform-specific firmware image in a first volume of the single multi-platform firmware image;

storing the executable files contained in the plurality of executable files for implementing the firmware for the first computing platform that are not contained in the plurality of executable files for implementing the firmware for the second computing platform in a second volume of the single multi-platform firmware image that is nested inside the first volume; and

storing the executable files contained in the plurality of executable files for implementing the firmware for the second computing platform that are not contained in the plurality of executable files for implementing the firmware for the first computing platform in a third volume of the single multi-platform firmware image that is nested inside the first volume.

2. The computer-implemented method of claim 1 , wherein the first platform-specific firmware image and the second platform-specific firmware image comprise firmware file system (FFS) images.

3. The computer-implemented method of claim 2 , wherein the single multi-platform firmware image comprises a firmware file system (FFS) image.

4. The computer-implemented method of claim 1 wherein the single multi-platform firmware image further comprises a multiplatform driver configured to:

identify a platform of a computing system by examining hardware of the computing system;

determine that the platform of the computing system corresponds to the first computing platform;

load the executable files from the first volume of the multi-platform firmware image into a random access memory of the computing system for execution; and

load the executable files from the second volume of the multi-platform firmware image into the random access memory of the computing system for execution.

5. The computer-implemented method of claim 1 , wherein the single multi-platform firmware image further comprises a multiplatform driver configured to:

identify a platform of a computing system by examining hardware of the computing system;

determine that the platform of the computing system corresponds to the second computing platform;

load the executable files from the first volume of the multi-platform firmware image into a random access memory of the computing system for execution; and

load the executable files from the third volume of the multi-platform firmware image into the random access memory of the computing system for execution.

6. The computer-implemented method of claim 1 , wherein the single multi-platform firmware image further comprises a multiplatform driver configured to:

identify a platform of a computing system by examining hardware of the computing system, wherein examining the hardware of the computing system comprises examining a configuration of general-purpose I/O (“GPIO”) pins in the computing system.

7. The computer-implemented method of claim 1 , further comprising:

generating a report listing:

the executable files that are the same in the plurality of executable files for implementing the firmware for the first computing platform and in the plurality of executable files for implementing the firmware for the second computing platform,

identifying executable files contained in the plurality of executable files for implementing the firmware for the first computing platform that are not contained in the plurality of executable files for implementing the firmware for the second computing platform, and

identifying executable files contained in the plurality of executable files for implementing the firmware for the second computing platform that are not contained in the plurality of executable files for implementing the firmware for the first computing platform; and

wherein the single multi-platform firmware image is created based on the report.

8. A non-transitory computer-readable storage medium having computer-executable instructions stored thereupon which, when executed by a computer, cause the computer to:

identify executable files that are the same among executable files for implementing a firmware for a first computing platform and executable files for implementing a firmware for a second computing platform;

identify executable files contained in the executable files for implementing the firmware for the first computing platform that are not contained among the executable files for implementing the firmware for the second computing platform;

identify executable files contained in the executable files for implementing the firmware for the second computing platform that are not contained among the executable files for implementing the firmware for the first computing platform;

store the executable files that are the same among the executable files for implementing the firmware for the first computing platform and the executable files for implementing the firmware for the second computing platform in a first volume of a single multi-platform firmware image;

store the executable files contained in the executable files for implementing the firmware for the first computing platform that are not contained in the executable files for implementing the firmware for the second computing platform in a second volume of the single multi-platform firmware image that is nested inside the first volume; and

store the executable files contained in the executable files for implementing the firmware for the second computing platform that are not contained in the executable files for implementing the firmware for the first computing platform in a third volume of the single multi-platform firmware image that is nested inside the first volume.

9. The non-transitory computer-readable storage medium of claim 8 , wherein the executable files for implementing the firmware for the first computing platform and the executable files for implementing the firmware for the second computing platform comprise firmware file system (FFS) images, and the single multi-platform firmware image comprises a firmware file system (FFS) image.

10. The non-transitory computer-readable storage medium of claim 8 , wherein the single multi-platform firmware image further comprises a multiplatform driver configured to:

identify a platform of a computing system by examining hardware of the computing system;

determine that the platform of the computing system corresponds to the first computing platform;

load files stored in the first volume of the single multi-platform firmware image into a random access memory of the computing system for execution; and

load files stored in the second volume of the single multi-platform firmware image into the random access memory of the computing system for execution.

11. The non-transitory computer-readable storage medium of claim 8 , wherein the single multi-platform firmware image further comprises a multiplatform driver configured to:

identify a platform of a computing system by examining hardware of the computing system;

determine that the platform of the computing system corresponds to the second computing platform;

load files stored in the first volume of the single multi-platform firmware image into a random access memory of the computing system for execution; and

load files stored in the third volume of the single multi-platform firmware image into the random access memory of the computing system for execution.

12. The non-transitory computer-readable storage medium of claim 8 , wherein:

the first computing platform comprises a first motherboard having a first hardware component,

the second computing platform comprises a second motherboard having a second hardware component,

the executable files that are the same among the executable files for implementing the firmware for the first computing platform and the executable files for implement in the firmware for the second computing platform comprise executable files associated with a chip set that is common to the first motherboard and the second motherboard,

the executable files for implementing the firmware for the first computing platform that are not contained in the executable files for implementing the firmware for the second computing platform comprise executable files associated with the first hardware component, and

the executable files for implementing the firmware for the second computing platform that are not contained in the executable files for implementing the firmware for the first computing platform comprise executable files associated with the second hardware component.

13. The non-transitory computer-readable storage medium of claim 8 , wherein the computer-executable instructions further cause the computer to:

generate a report listing:

executable files that are the same among executable files for implementing the firmware for a first computing platform and executable files for implementing the firmware for a second computing platform,

executable files contained in the executable files for implementing the firmware for the first computing platform that are not contained among the executable files for implementing the firmware for the second computing platform, and

executable files contained in the executable files for implementing the firmware for the second computing platform that are not contained among the executable files for implementing the firmware for the first computing platform; and

use the report to generate the single multi-platform firmware image.

14. A non-transitory computer-readable storage medium having computer-executable instructions stored thereupon which, when executed by a computer, cause the computer to:

identify a platform of the computer by examining hardware of the computer; and

responsive to a determination that the platform of the computer corresponds to a first computing platform:

load executable files that are the same among executable files for the first computing platform and a second computing platform and are stored in a first volume of a single multi-platform firmware image into a random access memory of the computer for execution;

load executable files specific to the first computing platform that are stored in a second volume of the single multi-platform firmware image into the random access memory of the computer for execution, wherein the second volume is nested inside the first volume; and

cause the files loaded into the random access memory to be executed.

15. The non-transitory computer-readable storage medium of claim 14 , having further instructions stored thereupon to:

responsive to a determination that the platform of the computer corresponds to a second computing platform;

load executable files that are the same among executable files for the first computing platform and the second computing platform and are stored in the first volume of a single multi-platform firmware image into the random access memory of the computer for execution;

load executable files specific to the second computing platform that are stored in a third volume of the single multi-platform firmware image into the random access memory of the computer for execution, wherein the third volume is nested inside the first volume; and

cause the files loaded into the random access memory to be executed.

16. The non-transitory computer-readable storage medium of claim 15 , wherein the single multi-platform firmware image is created by:

identifying executable files that are the same among executable files for implementing a firmware for the first computing platform and executable files for implementing a firmware for the second computing platform;

identifying executable files from the executable files for implementing the firmware for the first computing platform that are not contained among the executable files for implementing the firmware for the second computing platform;

identifying executable files from the executable files for implementing the firmware for the second computing platform that are not contained among the executable files for implementing the firmware for the first computing platform;

creating the single multi-platform firmware image by:

storing the executable files that are the same among the executable files for implement in the firmware for the first computing platform and the executable files for implementing the firmware for the second computing platform in the first volume of the single multi-platform firmware image;

storing the executable files from the executable files for implementing the firmware for the first computing platform that are not contained in the executable files for implementing the firmware for the second computing platform in the second volume of the single multi-platform firmware image; and

storing the executable files from the executable files for implementing the firmware for the second computing platform that are not contained in the executable files for implementing the firmware for the first computing platform in the third volume of the single multi-platform firmware image.

17. The non-transitory computer-readable storage medium of claim 16 , wherein the executable files implementing the firmware for the first computing platform and executable files for implementing the firmware for the second computing platform comprise firmware file system (FFS) images.

18. The non-transitory computer-readable storage medium of claim 17 , wherein the single multi-platform firmware image comprises a firmware file system (FFS) image.

19. The non-transitory computer-readable storage medium of claim 14 , wherein examining the hardware of the computer comprises examining a configuration of general-purpose I/O (“GPIO”) pins in the computer.

20. The non-transitory computer-readable storage medium of claim 16 , wherein the computer-executable instructions further cause the computer to:

generate a report listing:

executable files that are the same among executable files for implementing the firmware for the first computing platform and executable files for implementing the firmware for the second computing platform,

executable files contained in the executable files for implementing the firmware for the first computing platform that are not contained among the executable files for implementing the firmware for the second computing platform; and

executable files contained in the executable files for implementing the firmware for the second computing platform that are not contained among the executable files for implementing the firmware for the first computing platform; and

use the report to generate the single multi-platform firmware image.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Oct 17, 2024
From: MIDCAP FINANCIAL TRUST
To: AMERICAN MEGATRENDS INTERNATIONAL, LLC
Reel/Frame 069205/0795 →
SECURITY INTEREST Recorded May 6, 2019
From: AMERICAN MEGATRENDS INTERNATIONAL, LLC
To: MIDCAP FINANCIAL TRUST, AS COLLATERAL AGENT
Reel/Frame 049087/0266 →
ENTITY CONVERSION Recorded Apr 15, 2019
From: AMERICAN MEGATRENDS, INC.
To: AMERICAN MEGATRENDS INTERNATIONAL, LLC
Reel/Frame 049091/0973 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 25, 2017
From: SANTHARAM, MADHAN B.; RAMAN, PRESANNA; RHEA, PAUL ANTHONY; RIGHI, STEFANO
To: AMERICAN MEGATRENDS, INC.
Reel/Frame 042140/0680 →