US 11,842,225 B2
Systems and methods for decentralized-distributed processing of vehicle data
Michael R. Story, Bay City, MI (US); Keyur R. Patel, Rochester, MI (US); Farhad Bolourchi, Novi, MI (US); Joachim J. Klesing, Rochester, MI (US); Mariam S. George, Lake Orion, MI (US); Peter D. Schmitt, Farmington Hills, MI (US); and Larry J. Wilson, Saint Clair Shores, MI (US)
Assigned to Steering Solutions IP Holding Corporation, Saginaw, MI (US)
Filed by STEERING SOLUTIONS IP HOLDING CORPORATION, Saginaw, MI (US)
Filed on Sep. 22, 2020, as Appl. No. 17/027,811.
Claims priority of provisional application 62/910,062, filed on Oct. 3, 2019.
Prior Publication US 2021/0103480 A1, Apr. 8, 2021
This patent is subject to a terminal disclaimer.
Int. Cl. G06F 9/50 (2006.01); G06F 9/48 (2006.01)
CPC G06F 9/5083 (2013.01) [G06F 9/4887 (2013.01)] 14 Claims
OG exemplary drawing
 
1. A system for distributed processing, the system comprising:
a source processor that includes an automotive system architecture including at least a microcontroller abstraction layer, wherein the source processor is associated with a steering system, and wherein the steering system includes one of an electronic power steering system and a steer-by-wire steering system; and
a memory that includes instructions that, when executed by the source processor, cause the source processor to:
receive, from a plurality of other processors, an idle time and at least one task execution characteristic corresponding to each respective processor of the plurality of other processors, wherein the source processor is disposed on a controller area network within a vehicle and configured to control at least a portion of at least one vehicle operation, wherein at least one processor of the plurality of other processors is remotely located from the controller area network, wherein at least one of the plurality of other processors is associated with a vehicle system other than the steering system, wherein the source processor executes an instance of a software throughput management application that includes a task observer and a supervisor function, wherein each processor of the plurality of other processors executes another instance of the software throughput management application configured to communicate with the instance of the software throughput management application executed by the source processor, and wherein the instance of the software throughput management application executed by the source processor is configured to communicate with the instances of the software throughput management application executed on each processor of the plurality of other processors to send or receive the idle time for each respective processor of the plurality of other processors and the at least one task execution characteristic of each respective processor of the plurality of other processors;
store the idle time and the at least one task execution characteristic in the memory;
identify at least one target processor of the plurality of other processors to execute a task associated with the source processor based on the idle time and the at least one task execution characteristic of the at least one target processor, wherein the idle time indicates an amount of available processing cycles for the at least one target processor sufficient to execute the task associated with the source processor, and wherein the at least one task execution characteristic of the at least one target processor includes proof of trust information indicating that the at least one target processor is trusted by the source processor to execute the task associated with the source processor;
communicate, to the at least one target processor, a task request requesting the at least one target processor execute the task associated with the source processor; and
in response to receiving a communication from the at least one target processor indicating acceptance of the task, communicate, to the at least one target processor, instructions for executing the task, wherein the at least one target processor executes the task according to the instructions for executing the task instead of the source processor executing the task.