ROM Firmware Patch Infrastructure via Indirection Table
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Firmware stored in read-only memory (ROM) cannot be modified after hardware design and commercialization, limiting the ability to fix bugs or add configurability, and current solutions like programmable ROM (PROM) are cumbersome and increase manufacturing overhead.
Innovation Solution
Implementing a patch infrastructure that allows firmware updates by generating a patchable firmware source code image with an indirection table, enabling calls to patchable objects in ROM to redirect execution to either original or patched code in ROM or random access memory, facilitating over-the-air updates.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If firmware is stored in ROM, then cost is reduced and security is improved, but firmware cannot be modified after deployment
Solution Approach 1:
The firmware is segmented into multiple sections: read-only sections stored in ROM and patchable sections that can be updated. The indirection table divides the firmware namespace into original firmware entries and patch firmware entries, allowing selective updating of specific firmware components while preserving the immutable ROM portion.
Solution Approach 2:
An indirection table is introduced as an intermediary layer between the ROM firmware and the execution environment. This table contains entries that map firmware symbols to their actual locations, enabling dynamic redirection of patchable objects to updated code in RAM or other writable memory without modifying the ROM contents.
2Adaptability or versatility
If PROM is used to enable firmware patching, then firmware updatability is improved, but manufacturing overhead increases
Solution Approach 1:
Instead of using expensive PROM hardware, the invention creates software-based copies of firmware sections in writable memory (RAM). The patch firmware is copied to RAM and executed from there, while the original ROM firmware remains unchanged. This software-based approach eliminates the need for costly PROM manufacturing processes.
Solution Approach 2:
The system changes the state parameter of firmware from permanently fixed (ROM) to dynamically changeable (RAM). By loading firmware sections into volatile memory and using the indirection table to redirect execution, the system transitions from a static firmware model to a dynamic one without requiring programmable ROM hardware.
3Adaptability or versatility
If firmware is made patchable, then post-deployment flexibility is improved, but system complexity increases
Solution Approach 1:
The complexity of firmware patching is extracted and isolated into a dedicated indirection table data structure and associated resolution logic. This separates the patching mechanism from the core firmware execution path, allowing the majority of firmware to execute normally while only patchable objects go through the indirection table lookup process.
Solution Approach 2:
The indirection table serves multiple functions: it acts as a symbol resolution table, a patch redirection mechanism, and an initialization coordinator. By consolidating these functions into a single data structure, the system reduces overall complexity compared to having separate mechanisms for each function.
Data Source
AI summary
Various aspects include methods for implementing a firmware patch infrastructure. Various aspects may include identifying a patchable object from a firmware source code image based on a symbol in the patchable object's name, generating a patchable firmware source code file by injecting a first call to the patchable object configured to call to an indirection table and a second call to the patchable object configure to execute the patchable object, building a patchable firmware source code image from a plurality of patchable firmware source code files including the patchable firmware source code file having the first call to the patchable object and the second call to the patchable object, and creating the indirection table including an entry for the first call from the patchable firmware source code image having an indication to implement the second call in the patchable firmware source code image.


