IP Library › Granted Patent US 12,341,625
Granted Patent B2
US 12,341,625 · App. 17/567,039 · Granted Jun 24, 2025

E2E synchronization

Inventors: Luke Johnston (Aliso Viejo, CA); Shayan Mukhtar (Mississauga, CA); Richard Stephen Chelminski (Oakland, CA)
Assignee: Rivian IP Holdings, LLC
H04L12/40104H04L12/40065H04L2012/40215H04L2012/40273
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,341,625
App. No.
17/567,039
Granted
Jun 24, 2025
Kind
B2
Abstract

The present disclosure is directed to systems and methods directed to improving the functions of a vehicle. Systems and methods are provided that provide a custom tool that autogenerates a set of software agents that allows a system to separate processing, transmission and receiving of messages to achieve better synchronization. The disclosure herein also provides a simplified method of key provisioning by designating one client as a server and assigning a symmetric key to every other client permanently provisioned between that client and the server. Systems and method are further provided that predict faults in a vehicle. Systems and methods are also provided that preserve data in the event of a system crash. Systems and methods are also provided in which an operating system of a vehicle detects the presence of a new peripheral and pulls the related interface file for that new peripheral. Further, a data synchronization solution is provided herein which provides optimized levels of synchronization.

Claims (82)

1. A method comprising:

accessing a file that comprises information for decoding bus data, and

generating, based on the file, a plurality of software agents, wherein the software agents, when executed, are configured to:

receive a raw message via the bus,

within a single task:

unpack the raw message to generate a signal value,

generate a security protection value for the raw message, and

in response to a request for the signal value from an instance of an application executing based on instructions in a protected memory location, provide the instance of the application synchronous access to the signal value and the security protection value by:

transmitting, to a time server, a synchronization request comprising a first timestamp,

receiving a synchronization message from the time server, the synchronization message comprising (a) the first timestamp, (b) a second timestamp indicative of when the time server received the synchronization request, and (c) a third timestamp indicative of when the synchronization message was sent by the time server, and

causing to provide synchronous access to the signal value and the security protection value based on the synchronization message.

2. The method of claim 1 , wherein generating the plurality of software agents comprises:

generating a first set of instructions for execution from a first unsecure memory partition, wherein the first set of instructions, when executed, is configured to:

receive the raw message from the bus,

generating a second set of instructions for execution from a protected memory partition wherein the second set of instructions, when executed, is configured to:

unpack the raw message to generate the signal value,

perform verification to generate the security protection value for the raw message,

store the signal value and the security protection value, and

synchronously transmit the signal value and the security protection value to the instance of an application,

generating a third set of instructions for execution from a second unsecure memory partition wherein the third set of instructions, when executed, is configured to:

unpack the raw message to generate a signal value,

transmit the signal value to the instance of an application.

3. The method of claim 2 , wherein the bus is a Controller Area Network (CAN) bus.

4. The method of claim 3 , wherein the file is a database (DBC) file that comprises instructions for decoding CAN bus data from at least on sensor.

5. The method of claim 2 , wherein the first unsecure memory partition is a Quality Management (QM) partition.

6. The method of claim 2 , wherein the protected memory partition is an Automotive Safety Integrity Level (ASIL) partition.

7. The method of claim 2 , wherein generating the security protection value comprises generating an End-to-End (E2E) status.

8. A non-transitory computer readable medium having instructions encoded thereon, that when executed by control circuitry causes the control circuitry to:

access a file that comprises information for decoding bus data, and

generate, based on the file, a plurality of software agents, wherein the software agents, when executed, are configured to:

receive a raw message via the bus,

within a single task:

unpack the raw message to generate a signal value,

generate a security protection value for the raw message, and

in response to a request for the signal value from an instance of an application executing based on instructions in a protected memory location, provide the instance of the application synchronous access to the signal value and the security protection value by:

transmitting, to a time server, a synchronization request comprising a first timestamp,

receiving a synchronization message from the time server, the synchronization message comprising (a) the first timestamp, (b) a second timestamp indicative of when the time server received the synchronization request, and (c) a third timestamp indicative of when the synchronization message was sent by the time server, and

causing to provide synchronous access to the signal value and the security protection value based on the synchronization message.

9. The non-transitory computer readable medium of claim 8 , wherein the control circuitry is caused to generate the plurality of software agents by:

generating a first set of instructions for execution from a first unsecure memory partition, wherein the first set of instructions, when executed, is configured to:

receive the raw message from the bus,

generating a second set of instructions for execution from a protected memory partition wherein the second set of instructions, when executed, is configured to:

unpack the raw message to generate the signal value,

perform verification to generate the security protection value for the raw message,

store the signal value and the security protection value, and

synchronously transmit the signal value and the security protection value to the instance of an application,

generating a third set of instructions for execution from a second unsecure memory partition wherein the third set of instructions, when executed, is configured to:

unpack the raw message to generate a signal value,

transmit the signal value to the instance of an application.

10. The non-transitory computer readable medium of claim 9 , wherein the bus is a Controller Area Network (CAN) bus.

11. The non-transitory computer readable medium of claim 10 , wherein the file is a database (DBC) file that comprises instructions for decoding CAN bus data from at least on sensor.

12. The non-transitory computer readable medium of claim 9 , wherein the first unsecure memory partition is a Quality Management (QM) partition.

13. The non-transitory computer readable medium of claim 9 , wherein the protected memory partition is an Automotive Safety Integrity Level (ASIL) partition.

14. The non-transitory computer readable medium of claim 9 , wherein generating the security protection value comprises generating an End-to-End (E2E) status.

15. A vehicle system comprising:

a sensor connected to at least one bus, and

control circuitry configured to:

access a file that comprises information for decoding bus data received from the sensor via the bus, and

generate, based on the file, a plurality of software agents, wherein the software agents, when executed, are configured to:

receive a raw message via the bus,

within a single task:

unpack the raw message to generate a signal value,

generate a security protection value for the raw message, and

in response to a request for the signal value from an instance of an application executing based on instructions in a protected memory location, provide the instance of the application synchronous access to the signal value and the security protection value by:

transmitting, to a time server, a synchronization request comprising a first timestamp,

receiving a synchronization message from the time server, the synchronization message comprising (a) the first timestamp, (b) a second timestamp indicative of when the time server received the synchronization request, and (c) a third timestamp indicative of when the synchronization message was sent by the time server, and

causing to provide synchronous access to the signal value and the security protection value based on the synchronization message.

16. The vehicle system of claim 15 , wherein the control circuitry is configured to generate the plurality of software agents by:

generating a first set of instructions for execution from a first unsecure memory partition, wherein the first set of instructions, when executed, is configured to:

receive the raw message from the bus,

generating a second set of instructions for execution from a protected memory partition wherein the second set of instructions, when executed, is configured to:

unpack the raw message to generate the signal value,

perform verification to generate the security protection value for the raw message,

store the signal value and the security protection value, and

synchronously transmit the signal value and the security protection value to the instance of an application,

generating a third set of instructions for execution from a second unsecure memory partition wherein the third set of instructions, when executed, is configured to:

unpack the raw message to generate a signal value,

transmit the signal value to the instance of an application.

17. The vehicle system of claim 16 , wherein the bus is a Controller Area Network (CAN) bus.

18. The vehicle system of claim 17 , wherein the file is database (DBC) file that comprises instructions for decoding CAN bus data from at least one sensor.

19. The vehicle system of claim 16 , wherein the first unsecure memory partition is a Quality Management (QM) partition.

20. The vehicle system of claim 16 , wherein the protected memory partition is an Automotive Safety Integrity Level (ASIL) partition.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 5, 2025
From: JOHNSTON, LUKE; MUKHTAR, SHAYAN; ABENE, MARK THOMAS; PATEL, KINJAL KUMAR; KURNIAWAN, YUSUF; CHELMINSKI, RICHARD STEPHEN; SLINDEE, RICHARD EDWARD; SCHWAIGER, NICK
To: RIVIAN AUTOMOTIVE, LLC
Reel/Frame 071323/0591 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 5, 2025
From: RIVIAN AUTOMOTIVE, LLC
To: RIVIAN IP HOLDINGS, LLC
Reel/Frame 071323/0603 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 10, 2022
From: JOHNSTON, LUKE
To: RIVIAN AUTOMOTIVE, LLC
Reel/Frame 058972/0723 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 10, 2022
From: RIVIAN AUTOMOTIVE, LLC
To: RIVIAN IP HOLDINGS, LLC
Reel/Frame 058972/0741 →
Continuity (2)
Provisional Application 63240190 · Sep 2, 2021
Related Publication 20230073618A1 · Mar 9, 2023
References Cited (24)
US 10552368B2 · Ito · 2020 [cited by examiner]
US 11324087B1 · Kreuter · 2022 [cited by examiner]
US 20030177154A1 · Vrancic · 2003 [cited by examiner]
US 20070220171A1 · Iwamura · 2007 [cited by examiner]
US 20140064297A1 · Hirota · 2014 [cited by examiner]
US 20140142801A1 · Shah · 2014 [cited by examiner]
US 20140211780A1 · Kang · 2014 [cited by examiner]
US 20150254017A1 · Soja · 2015 [cited by examiner]
US 20170286051A1 · Mendes · 2017 [cited by examiner]
US 20190236058A1 · Komala · 2019 [cited by examiner]
US 20200285233A1 · Hafner · 2020 [cited by examiner]
US 20210029148A1 · Wee · 2021 [cited by examiner]
US 20210178996A1 · Verma · 2021 [cited by examiner]
EP 2874065A2 · 2014 [cited by examiner]
EP 3787260A1 · 2020 [cited by examiner]
WO WO2009059377A1 · 2009 [cited by examiner]
G. Xie, Y. Li, Y. Han, Y. Xie, G. Zeng and R. Li, “Recent Advances and Future Trends for Automotive Functional Safety Design Methodologies,” in IEEE Transactions on Industrial Informatics, vol. 16, No. 9, pp. 5629-5642,… [cited by examiner]
Bertolino, Antonia, et al. “A Tour of Secure Software Engineering Solutions for Connected Vehicles.” Software Quality Journal 26.4 (2018) (Year: 2018). [cited by examiner]
CAN DBC to C (and CSV, JSON and XML) Compiler Using the MPC Parser Combinator Library, Website, Last accessed Jan. 13, 2022, https://github.com/howerj/dbcc. [cited by applicant]
CAN Matrix Source Code Generator, Website, Last accessed Jan. 13, 2022, https://github.com/astand/coderdbc. [cited by applicant]
AUTOSAR, Specification of Module E2E Transformer, Website, Last accessed Jan. 13, 2022, https://www.autosar.org/fileadmin/user_upload/standards/classic/4-3/AUTOSAR_SWS_E2ETransformer.pdf. [cited by applicant]
AUTOSAR, Specification of RTE, Website, Last accessed Jan. 13, 2022, https://www.autosar.org/fileadmin/user_upload/standards/classic/4-2/AUTOSAR_SWS_RTE.pdf. [cited by applicant]
AUTOSAR, Specification of Communication, Website, Last accessed Jan. 13, 2022, https://www.autosar.org/fileadmin/user_upload/standards/classic/4-3/AUTOSAR_SWS_COM.pdf. [cited by applicant]
AUTOSAR, Specification of PDU Router, Website, Last accessed Jan. 13, 2022, https://www.autosar.org/fileadmin/user_upload/standards/classic/3-0/AUTOSAR_SWS_PDU_Router.pdf. [cited by applicant]