OS-Friendly Bootloader for Multi-Processor Memory Visibility

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In multi-processor systems, integrating a bootloader with the operating system is challenging, especially when some slave processor memory is not visible to the host, requiring efficient code loading and synchronization without conflicting with the OS, and determining memory visibility for bootloader operation.

Innovation Solution

An OS-friendly bootloader with a host and client part, where the host part resets and loads the slave processor, and the client part initiates the OS, reserving an intermediate storage area for loading code and data from inaccessible memory, using OS communication mechanisms to manage the transfer process.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If a traditional bootloader is used to load code into slave processors, then code can be loaded into slave memory, but the bootloader conflicts with the operating system which wants control over the entire system and all memory

Engineering Contradiction:
Improvebootloading reliabilityVSAvoidsystem integration complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The bootloader functionality is segmented into two distinct parts: a host part that resides in the host processor and a client part that resides in the slave processor. This segmentation allows the bootloader operations to be distributed, with the host part managing the loading process and the client part managing the slave processor initialization, thereby reducing conflicts with the operating system while maintaining reliable bootloading functionality

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

A communication framework acting as an intermediary is established between the host and slave processors. This framework uses message passing and shared memory mechanisms that are already integrated with the operating system, allowing the bootloader to operate through OS-friendly communication channels rather than direct memory manipulation, thus reducing conflicts with OS memory management

Inventive Principle:
Principle #24Intermediary (Mediator)

2Ease of manufacture

If the push method is used to load code into slave processors, then loading is simple and requires no slave code execution, but it only works when slave memory is visible to the host

Engineering Contradiction:
Improveloading simplicityVSAvoidmemory visibility adaptability
Core Design Contradiction:
Ease of manufactureVSAdaptability or versatility

Solution Approach 1:

The memory system is segmented into visible memory (accessible by both host and slave) and invisible memory (accessible only by slave). The loading process is divided into two phases: first loading the bootloader client part into visible memory using the simple push method, then using the bootloader framework to load additional code into invisible memory through coordinated communication between host and slave processors

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The slave processor is held in a reset state as a preliminary action before loading begins. This allows the host to push the bootloader client part into visible memory without concern for slave processor activity. Once the client part is loaded, the reset is released and the slave processor begins execution to participate in the subsequent loading of invisible memory

Inventive Principle:
Principle #10Preliminary action

3Reliability

If slave memory is made invisible to the host for security or architecture reasons, then memory protection is improved, but the traditional push method cannot be used and bootloading becomes necessary

Engineering Contradiction:
Improvememory protectionVSAvoidloading mechanism complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The bootloader framework is designed with multi-functionality to handle both visible and invisible memory loading through a unified interface. The host part can load code into visible memory directly, while the client part coordinates loading into invisible memory using OS communication mechanisms. This universal approach maintains memory protection while providing a consistent loading interface for both memory types

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

Solution Approach 2:

A feedback mechanism is implemented where the client part in the slave processor monitors the loading process and communicates status back to the host part through the OS communication framework. This feedback allows the host to know when loading is complete and when the slave processor is ready to execute, maintaining system control while respecting memory visibility boundaries

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS7356680B2Method of loading information into a slave processor in a multi-processor system using an operating-system-friendly boot loader
Publication Date: 2008.04.08 TELEFONAKTIEBOLAGET LM ERICSSON (PUBL)
  • US7356680B2 patent drawing
  • US7356680B2 patent drawing
  • US7356680B2 patent drawing

AI summary

A conventional bootloader can conflict with the operating system (OS) of a multi-processor system. An OS-friendly bootloader and methods are described that integrate an OS with a bootloader in any system in which a host processor and a client processor have a communication mechanism that requires the OS for the mechanism to work and the client has two memory systems: one visible to both host and client and one visible only to the client.