In-Vehicle Flash Reprogramming Using Cross-Block Differential Updates

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In-vehicle control devices with microcomputers having built-in flash memory composed of large blocks and limited RAM capacity face challenges in differential reprogramming due to large differential data sizes, leading to prolonged update times, especially when major changes are made to the program.

Innovation Solution

The solution involves using a temporary block in the flash memory to recreate and write the updated program, utilizing differential data and old programs from multiple blocks to reduce data size, and employing compressed data that doesn't require the original program for restoration, thus minimizing RAM usage and speeding up the update process.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Device complexity

If differential data is generated using only the old program from the same block, then the update process is simple, but the differential data size becomes large when major changes are made, leading to long transfer and update times

Engineering Contradiction:
Improveupdate process complexityVSAvoidupdate time
Core Design Contradiction:
Device complexityVSLoss of time

Solution Approach 1:

The patent segments the flash memory into multiple blocks and divides the program update process into stages. When updating a block, the system uses old programs from other blocks that have already been updated to generate differential data, rather than relying solely on the old program from the same block. This segmentation allows the system to maintain simple differential generation logic while significantly reducing differential data size by finding more similar code patterns across different blocks.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs preliminary updates on certain blocks first, so that their new programs are already in place and can be used as reference for generating differential data for subsequent blocks. This preliminary action creates a cascade effect where each updated block contributes to reducing the differential data size of remaining blocks, thereby reducing overall update time without increasing process complexity.

Inventive Principle:
Principle #10Preliminary action

2Ease of operation

If the entire new program is transferred via CAN and written to flash memory, then the update process is straightforward, but the writing time becomes very long even when only a small part of the program needs updating

Engineering Contradiction:
Improveupdate operation simplicityVSAvoidupdate speed
Core Design Contradiction:
Ease of operationVSProductivity

Solution Approach 1:

The patent extracts and uses only the necessary differential portions of the program for updating, rather than transferring and writing the entire new program. By calculating differential data between the new program and relevant old programs from other blocks, the system extracts only the changed portions that need to be transferred via CAN and written to flash memory, dramatically improving update speed while maintaining operational simplicity.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent changes the parameter being transferred from the complete new program to differential data representing only the changes. This parameter change reduces the data volume to be transferred and written, directly improving update speed. The system dynamically determines which blocks need updating and generates differential data only for those blocks, optimizing the update process without complicating the operation.

Inventive Principle:
Principle #35Parameter changes

3Quantity of substance

If another block is erased and used to store old program for differential restoration, then RAM usage is reduced, but the old program cannot be used for subsequent differential updates after erasure

Engineering Contradiction:
ImproveRAM usageVSAvoidupdate efficiency
Core Design Contradiction:
Quantity of substanceVSProductivity

Solution Approach 1:

The patent segments the flash memory into multiple blocks and implements a selective update strategy where not all blocks are erased and reused. Instead, certain blocks are preserved with their old programs intact to serve as reference for generating differential data for other blocks. This segmentation allows the system to maintain low RAM usage while preserving old program data where needed, avoiding the trade-off between RAM consumption and update efficiency.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent copies old program data from blocks that are not being updated to serve as reference for differential generation. Rather than erasing and reusing blocks, the system makes use of existing old program copies in other blocks, eliminating the need to erase blocks for storage purposes and maintaining their availability for differential update operations.

Inventive Principle:
Principle #26Copying

Data Source

PatentEP3358465B1In-vehicle control device, program update system, and program update software
Publication Date: 2024.04.17 ASTEMO LTD
  • EP3358465B1 patent drawingFigure 1
  • EP3358465B1 patent drawingFigure 2
  • EP3358465B1 patent drawingFigure 3

AI summary

Provided is an in-vehicle control device which makes it possible to achieve restoration processing of differential reprogramming even in an in-vehicle control device using a microcomputer with a built-in flash memory using a small amount of RAM and composed of large blocks, and is capable of restoring a new program in a short time by decreasing the size of differential data even for a new program to which major changes have been made. Provided is an in-vehicle control device capable of updating a program on the basis of update content provided from an update tool, the in-vehicle control device being provided with a first memory provided with a plurality of blocks for storing programs, and a second memory. When updating a program, differential data of the program and an update program are stored in the second memory, an update program for a block to be updated among the plurality of blocks is recreated in another block which is different from the block to be updated using the differential data and an old program, and the update program which has been recreated in the other block is written in the block to be updated.