Annotated Code Classification for Link-Time RAM Placement

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing methods for creating software images for diverse hardware platforms with varying RAM capabilities require multiple versions of compiled software modules, leading to high maintenance effort and error likelihood.

Innovation Solution

A system and method for determining code placement at link time using special annotations in software modules, which include code classification components, allowing functions to be stored in RAM or ROM based on performance, power consumption, and real-time requirements, using a linker script to select functions for RAM storage.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If multiple versions of compiled software modules are provided for each hardware platform, then code placement can be optimized for each platform, but maintenance effort and error likelihood increase unreasonably

Engineering Contradiction:
Improvecode placement optimizationVSAvoidmaintenance effort
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent creates a single universal compiled software module that can be used across multiple hardware platforms. The linker script acts as a configuration file that adapts the universal module to different platforms by specifying which functions should be placed in RAM versus ROM, eliminating the need to maintain multiple platform-specific versions while still achieving optimized code placement for each platform

Inventive Principle:
Principle #6Universality (Multi-functionality)

Solution Approach 2:

The linker script serves as an intermediary between the universal compiled software module and the final executable. It contains platform-specific configuration information that guides the linker in placing appropriate functions in RAM or ROM, allowing a single module to be adapted to different hardware platforms without modification

Inventive Principle:
Principle #24Intermediary (Mediator)

2Speed

If code is stored in RAM for faster execution, then execution speed improves, but power consumption increases

Engineering Contradiction:
Improveexecution speedVSAvoidpower consumption
Core Design Contradiction:
SpeedVSUse of energy by moving object

Solution Approach 1:

The patent applies local quality by selectively placing only specific functions that require high execution speed into RAM, while keeping other functions in ROM. The linker script identifies time-critical functions and places them in RAM, while non-critical functions remain in ROM, creating a hybrid storage strategy that optimizes both speed and power consumption on a function-by-function basis

Inventive Principle:
Principle #3Local quality

3Device complexity

If a single compiled software module is used across multiple hardware platforms, then maintenance effort decreases, but code placement optimization for specific platforms is lost

Engineering Contradiction:
Improvemaintenance effortVSAvoidplatform-specific optimization
Core Design Contradiction:
Device complexityVSAdaptability or versatility

Solution Approach 1:

The patent introduces dynamics by making the code placement configuration flexible and adaptable through the linker script. The linker script can be dynamically adjusted for different hardware platforms without requiring recompilation of the software module, allowing the system to adapt to platform-specific requirements while maintaining a single universal module

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS20250335166A1Code Classification for Link-Time Code Placement
Publication Date: 2025.10.30 SILICON LABORATORIES INC
  • US20250335166A1 patent drawing
  • US20250335166A1 patent drawing

AI summary

A system and method for determining the placement of software functions at link time is disclosed. The system utilizes special annotations that are included in software modules of the source code, which defines certain parameters associated with each function. These parameters may be referred to as code classification components, wherein each code classification component may include one or more code classes associated with that code classification component. These software modules are then compiled. A linker script is created based on the desired configuration. The linker then uses the linker script to determine which software modules should be placed in RAM for improved execution speed.