# US 11,029,946 B2 · Hot updates to controller software using tool chain

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,029,946 B2
- Document ID: US11029946B2
- Status: Granted
- Kind: B2
- Application number: 16/833,805
- Filed: 2020-03-30
- Published: 2020-07-16
- Granted: 2021-06-08
- Earliest claimed: 2017-07-25
- Assignees: Aurora Labs Ltd.
- Applicants: Aurora Labs Ltd.
- Inventors: Zohar Fox
- Web page: https://patentgrep.com/patent/US11029946B2

## CPC

- G06F 8/658: Incremental updates; Differential updates
- B60W 50/02: Ensuring safety in case of control system failures, e.g. by diagnosing, circumventing or fixing failures
- B60W 50/0205: {Diagnosing or detecting failures; Failure detection models}
- B60W 50/0225: {Failure correction strategy}
- B60W 50/04: Monitoring the functioning of the control system
- B60W 50/045: {Monitoring control system parameters}
- G06F 8/60: Software deployment
- G06F 8/65: Updates (security arrangements therefor G06F21/57)
- G06F 8/654: using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
- G06F 8/656: while running
- G06F 8/71: Version control (security arrangements therefor G06F21/57); Configuration management
- G06F 9/4401: Bootstrapping (security arrangements therefor G06F21/57)
- G06F 9/445: Program loading or initiating (bootstrapping G06F9/4401; security arrangements for program loading or initiating G06F21/57)
- G06F 9/44521: {Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading}
- G06F 11/0721: {within a central processing unit [CPU]}
- G06F 11/0751: {Error or fault detection not based on redundancy (power supply failures G06F1/30; network fault management H04L41/06)}
- G06F 11/079: {Root cause analysis, i.e. error or fault diagnosis (in a hardware test environment G06F11/22; in a software test environment G06F11/36)}
- G06F 11/0793: {Remedial or corrective actions (recovery from an exception in an instruction pipeline G06F9/3861; by retry G06F11/1402; for recovering from a failure of a protocol instance or entity H04L69/40)}
- G06F 11/1433: {during software upgrading}
- G06F 11/1629: {Error detection by comparing the output of redundant processing systems}
- G06F 11/3612: {by runtime analysis (performance monitoring G06F11/3466)}
- G06F 12/0284: {Multiple user address space allocation, e.g. using different base addresses (interprocessor communication G06F15/163)}
- G06F 12/0646: {Configuration or reconfiguration}
- G06F 16/188: Virtual file systems
- G06F 21/57: Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F 21/572: {Secure firmware programming, e.g. of basic input output system [BIOS]}
- G06F 21/577: {Assessing vulnerabilities and evaluating computer system security}
- B60W 2050/021: {Means for detecting failure or malfunction}
- G06F 8/66: {of program code stored in read-only memory [ROM]}
- G06F 2212/1008: Correctness of operation, e.g. memory ordering
- G06F 2212/1044: Space efficiency improvement
- G06F 2212/1056: Simplification
- G06F 2221/033: Test or assess software
- G06N 20/00: Machine learning
- Y02D 10/00: Energy efficient computing, e.g. low power processors, power management or thermal management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- B60W: CONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
- G06N: COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- Y02D: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE

## Abstract

Disclosed embodiments relate to performing updates to Electronic Control Unit (ECU) software while an ECU of a vehicle is operating. Operations may include receiving, at the vehicle while the ECU of the vehicle is operating, a software update file for the ECU software; writing, while the ECU is operating, the software update file into a first memory location in a memory of the ECU while simultaneously executing a code segment of existing code in a second memory location in the memory of the ECU; and updating a plurality of memory addresses associated with the memory of the ECU based on the software update file and without interrupting the execution of the code segment currently being executed in the second memory location in the memory of the ECU.

## Claims

### Claim 1

A non-transitory computer readable medium including instructions that, when executed by at least one processor, cause the at least one processor to perform operations for performing changes to current controller software while a controller is operating, comprising:
receiving, at the controller while the controller is operating, a multidimensional delta file, the multidimensional delta file having a plurality of deltas,
storing, while the controller is operating, the multidimensional delta file in a first location of a single memory of the controller while simultaneously executing a code segment of existing code of the current controller software stored in a second location of the single memory, wherein the multidimensional delta file is stored in an additive manner adjacent to the current controller software in the single memory; and
updating a plurality of addresses associated with the single memory of the controller to correspond to the plurality of deltas based on the multidimensional delta file, without interrupting the execution of the code segment currently being executed and without modifying the code segment currently being executed, wherein the updating causes linking of execution of at least one code segment of the multidimensional delta file to the existing code of the current controller software.

### Claim 2 (depends on 1)

The non-transitory computer readable medium of claim 1, wherein the multidimensional delta file has a plurality of dimensions generated based on identified differences between a plurality of attributes of a software change for the controller and a corresponding plurality of attributes of the current controller software stored on the single memory.

### Claim 3 (depends on 1)

The non-transitory computer readable medium of claim 1, wherein the multidimensional delta file is executable by the controller to update the plurality of addresses without requiring the controller to reboot.

### Claim 4 (depends on 1)

The non-transitory computer readable medium of claim 1, the operations further comprising receiving startup code configured to update a program counter of the controller to execute instructions contained in the multidimensional delta file.

### Claim 5 (depends on 1)

The non-transitory computer readable medium of claim 1, wherein the controller is implemented on a virtual machine or a hypervisor.

### Claim 6 (depends on 1)

The non-transitory computer readable medium of claim 1, wherein the multidimensional delta file comprises position-independent code.

### Claim 7 (depends on 1)

The non-transitory computer readable medium of claim 1, the operations further comprising identifying content on the single memory to delete.

### Claim 8 (depends on 1)

The non-transitory computer readable medium of claim 1, wherein the current controller software is mapped to a plurality of functional units, at least one of the functional units being associated with the multidimensional delta file, and wherein the controller is configured to utilize a virtual file system (VFS) to determine a correct version of code changes to execute on the controller.

### Claim 9 (depends on 8)

The non-transitory computer readable medium of claim 8, the operations further comprising receiving startup code configured to link the multidimensional delta file to at least one of the functional units.

### Claim 10 (depends on 1)

The non-transitory computer readable medium of claim 1, wherein the receiving of the multidimensional delta file is in response to an identification of an anomalous behavior associated with the controller.

### Claim 11 (depends on 10)

The non-transitory computer readable medium of claim 10, wherein the anomalous behavior is identified based on a deviation of the controller from a map or model.

### Claim 12 (depends on 10)

The non-transitory computer readable medium of claim 10, wherein the anomalous behavior is identified based on a machine learning or artificial intelligence technique.

### Claim 13 (depends on 1)

The non-transitory computer readable medium of claim 1, wherein the controller is a first controller of a first system, and the multidimensional delta file is received in response to an anomalous behavior identified at a second controller of a second system.

### Claim 14 (depends on 1)

The non-transitory computer readable medium of claim 1, wherein the controller is part of a system, and the receiving of the multidimensional delta file is in response to a determination that the system is in a particular operational state.

### Claim 15 (depends on 1)

The non-transitory computer readable medium of claim 1, wherein the controller is a vehicle ECU controller.

### Claim 16 (depends on 1)

The non-transitory computer readable medium of claim 1, wherein the multidimensional delta file is interdependent on other files.

### Claim 17

A computer-implemented method for performing changes to current controller software while a controller is operating, the method comprising:
receiving, at the controller while the controller is operating, a multidimensional delta file, the multidimensional delta file having a plurality of deltas,
storing, while the controller is operating, the multidimensional delta file in a first location of a single memory of the controller while simultaneously executing a code segment of existing code of the current controller software stored in a second location of the single memory, wherein the multidimensional delta file is stored in an additive manner adjacent to the current controller software in the single memory; and
updating a plurality of addresses associated with the single memory of the controller to correspond to the plurality of deltas based on the multidimensional delta file, without interrupting the execution of the code segment currently being executed and without modifying the code segment currently being executed, wherein the updating causes linking of execution of at least one code segment of the multidimensional delta file to the existing code of the current controller software.

### Claim 18 (depends on 17)

The computer-implemented method of claim 17, wherein the current controller software is mapped to a plurality of functional units, at least one of the functional units being associated with the multidimensional delta file, and wherein the controller is configured to utilize a virtual file system (VFS) to determine a correct version of code changes to execute on the controller.

### Claim 19 (depends on 18)

The computer-implemented method of claim 18, further comprising receiving startup code configured to link the multidimensional delta file to at least one of the functional units.

### Claim 20 (depends on 17)

The computer-implemented method of claim 17, wherein the updating of the plurality of addresses is performed without modifying source aspects of the current controller software.
