Opportunistic software updates during select operational modes
Disclosed embodiments relate to opportunistically updating Electronic Control Unit (ECU) software in a vehicle. Operations may include receiving, at a controller in a vehicle, a wireless transmission indicating a need to update software running on at least one ECU in the vehicle; monitoring an operational status of the vehicle to determine whether the vehicle is in a first mode of operation in which an ECU software update is prohibited; delaying the ECU software update when the operational status is prohibited; continuing to monitor the operational status of the vehicle to determine whether the vehicle is in a second mode of operation in which the ECU software update is permitted; and enabling updating of the at least one ECU with the delayed ECU software update when it is determined that the vehicle is in the second mode of operations.
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 opportunistically updating controller software, the operations comprising:
determining a device is in a first mode of operation at a first time;
accessing a controller software change based on the device being determined to be in the first mode of operation, the controller software change comprising a delta file generated based on comparing two multidimensional grids, each multidimensional grid representing a version of software in multiple dimensions; and
implementing the controller software change on a controller associated with the device when the device is in the first mode of operation, wherein implementing the controller software change comprises:
storing the delta file adjacent to current software on the controller; and
linking at least one code segment of the delta file to the current software.
2. The non-transitory computer-readable medium of claim 1 , wherein the first mode of operation comprises a predetermined safe operating condition.
3. The non-transitory computer-readable medium of claim 2 , wherein the predetermined safe operating condition is one of a plurality of predetermined safe operating conditions.
4. The non-transitory computer-readable medium of claim 1 , wherein the first mode of operation comprises a power-down status or an idling status.
5. The non-transitory computer-readable medium of claim 1 , wherein accessing the controller software change comprises:
sending a message to a remote server requesting the controller software change; and
in response to the message, receiving the controller software change.
6. The non-transitory computer-readable medium of claim 5 , wherein the message is sent after discarding the controller software change.
7. The non-transitory computer-readable medium of claim 6 , wherein the controller software change is discarded while the device is in a second mode of operation.
8. The non-transitory computer-readable medium of claim 1 , the operations further comprising:
determining a device is in a second mode of operation at a second time, the second time being before the first time; and
delaying the controller software change when the device is in the second mode of operation.
9. The non-transitory computer-readable medium of claim 1 , the operations further comprising configuring the controller so that a code segment of the current software is executed after a code segment of the delta file.
10. The non-transitory computer-readable medium of claim 9 , wherein configuring the controller comprises updating a program counter.
11. The non-transitory computer-readable medium of claim 1 , the operations further comprising configuring the controller to skip a code segment of the current software and instead execute a code segment of the delta file.
12. The non-transitory computer-readable medium of claim 1 , wherein accessing the controller software change is performed in response to identifying an anomaly associated with the controller.
13. The non-transitory computer-readable medium of claim 1 , wherein determining a device is in the first mode of operation is performed as part of monitoring an operational status of the device according to a preestablished interval.
14. The non-transitory computer-readable medium of claim 1 , wherein the first mode of operation comprises a preselected environmental condition of the device.
15. The non-transitory computer readable medium of claim 1 , wherein the multiple dimensions comprise at least two of: a binary data dimension, a source attribute dimension, or a map file dimension.
16. A computer-implemented method for opportunistically updating controller software, the method comprising:
determining a device is in a first mode of operation at a first time;
accessing a controller software change based on the device being determined to be in the first mode of operation, the controller software change comprising a delta file generated based on comparing two multidimensional grids, each multidimensional grid representing a version of software in multiple dimensions; and
implementing the controller software change on a controller associated with the device when the device is in the first mode of operation, wherein implementing the controller software change comprises:
storing the delta file adjacent to current software on the controller; and
linking at least one code segment of the delta file to the current software.
17. The computer-implemented method of claim 16 , wherein the first mode of operation comprises a predetermined safe operating condition.
18. The computer-implemented method of claim 16 , further comprising configuring the controller so that a code segment of the current software is executed after a code segment of the delta file.
19. The computer-implemented method of claim 16 , further comprising configuring the controller to skip a code segment of the current software and instead execute a code segment of the delta file.
20. The computer-implemented method of claim 16 , wherein the multiple dimensions comprise at least two of: a binary data dimension, a source attribute dimension, or a map file dimension.