US20220121440A1 - Information processing device and information processing method - Google Patents
Information processing device and information processing method Download PDFInfo
- Publication number
- US20220121440A1 US20220121440A1 US17/563,833 US202117563833A US2022121440A1 US 20220121440 A1 US20220121440 A1 US 20220121440A1 US 202117563833 A US202117563833 A US 202117563833A US 2022121440 A1 US2022121440 A1 US 2022121440A1
- Authority
- US
- United States
- Prior art keywords
- program
- partial
- data
- area
- update
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000010365 information processing Effects 0.000 title claims abstract description 57
- 238000003672 processing method Methods 0.000 title claims description 7
- 238000000034 method Methods 0.000 claims description 180
- 238000012545 processing Methods 0.000 claims description 25
- 238000010586 diagram Methods 0.000 description 24
- 238000004891 communication Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 15
- 239000000470 constituent Substances 0.000 description 6
- 238000004590 computer program Methods 0.000 description 4
- 230000006866 deterioration Effects 0.000 description 3
- 238000010295 mobile communication Methods 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 230000002547 anomalous effect Effects 0.000 description 2
- 238000013475 authorization Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1433—Saving, restoring, recovering or retrying at system level during software upgrading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Definitions
- the present disclosure relates to an information processing device and an information processing method.
- Patent Literature (PTL) 1 discloses an electronic control device that, when overwriting old information stored in a memory with new information, relocates this old information to another memory different from the original memory.
- the present disclosure provides an information processing device and so on capable of improving upon the above related art.
- An information processing device includes: a storage in which a first program is stored; and an update controller that obtains data for updating the first program from an external device and updates the first program to a second program by use of the data obtained, wherein for each of a plurality of first partial areas obtained by dividing a first storage area that is a storage area of the storage in which the first program is stored, the update controller copies a first partial program that is a part of the first program and that is stored in the first partial area to a second storage area different from the first storage area, and then successively updates the first partial program to a second partial program that is a part of the second program by use of partial data of the data, the partial data corresponding to the first partial program, the data is difference information indicating a difference between the first program and the second program, and the second storage area has a storage capacity smaller than a storage capacity of the first storage area.
- the information processing device and so on according to the present disclosure can reduce the amount of data used in a storage when updating a program.
- FIG. 1 is a schematic diagram of a system that distributes a program for an update to an automobile according to an embodiment.
- FIG. 2 is a block diagram illustrating an example of a hardware configuration of a server according to an embodiment.
- FIG. 3 is a block diagram illustrating an example of a hardware configuration of an information processing device provided in an automobile according to an embodiment.
- FIG. 4 is a block diagram illustrating an example of a functional configuration of an information processing device according to an embodiment.
- FIG. 5 is a diagram for describing control in an updating process and for describing a providing process according to an embodiment.
- FIG. 6 is a diagram for describing an example of some details of an updating process according to an embodiment.
- FIG. 7 is a diagram for describing a first example of a process to be performed when an updating process according to an embodiment has failed.
- FIG. 8 is a diagram for describing a second example of a process to be performed when an updating process according to an embodiment has failed.
- FIG. 9 is a flowchart illustrating an example of an updating process performed by an information processing device according to an embodiment.
- FIG. 10 is a flowchart illustrating an example of an providing process performed by an information processing device according to an embodiment.
- FIG. 11 is a flowchart illustrating a first example of a rollback process performed by an information processing device according to an embodiment.
- FIG. 12 is a flowchart illustrating a second example of a rollback process performed by an information processing device according to an embodiment.
- FIG. 13 is a flowchart illustrating a third example of a rollback process performed by an information processing device according to an embodiment.
- FIG. 14 is a block diagram illustrating an example of a functional configuration of an information processing device according to Variation 1.
- FIG. 15 is a diagram illustrating a configuration of a virtual machine that implements functions of an information processing device according to Variation 1.
- the electronic control device disclosed in PTL 1 relocates old information stored in a memory to another memory different from the original memory when overwriting this old information with new information.
- This technique thus necessitates a separated memory with a storage capacity sufficient to store the old information.
- this memory needs to have an excess storage capacity to store a copy of the old information.
- the existing technique requires a separate memory or a large-capacity memory.
- the present inventors have come to conceive of an information processing device and an information processing method that can reduce the amount of data used in a storage when updating a program.
- An information processing device includes a storage and an update controller.
- a first program is stored.
- the update controller obtains data for updating the first program from an external device and updates the first program to a second program by use of the data obtained.
- the update controller copies a first partial program that is a part of the first program and that is stored in the first partial area to a second storage area different from the first storage area, and then successively updates the first partial program to a second partial program that is a part of the second program by use of partial data of the data, the partial data corresponding to the first partial program.
- the data is difference information indicating a difference between the first program and the second program.
- the second storage area has a storage capacity smaller than a storage capacity of the first storage area.
- a first partial program stored in a first partial area to be subjected to an updating process is copied to the second storage area to relocate the first partial program, and then the first partial program stored in this first partial area is updated to a second partial program. Therefore, even in a case where the first partial area is accessed during the updating process, the relocated first partial program can be used instead of the first partial program that is in the middle of the updating process, and the program can be provided to the accessing device.
- the data used for an update is difference information
- the program to be relocated is a first partial program, or a part of the first program. Therefore, the amount of data used in the storage while updating the program can be reduced.
- the information processing device may further include a first controller and a second controller.
- the second controller may include the update controller and a provider that provides the first controller with the storage as a virtual storage.
- the first program may be a program executed when the first controller starts.
- the first program executed by the first controller is stored in the virtual storage provided by the second controller, and thus the program for the first controller can be updated without involving the first controller. Therefore, the program for the first controller to be updated can be updated without affecting the first controller.
- the provider may provide the first controller with the second partial program stored in the first partial area, (ii) when the area accessed is a first partial area that is being subjected to the updating process, the provider may generate a second partial program updated from a first partial program stored in the second storage area by use of the first partial program and partial data of the data, the partial data corresponding to the first partial program, and provide the first controller with the second partial program generated, or (iii) when the area accessed is a first partial area that has not been subjected to the updating process, the provider may generate a second partial program updated from a first partial program stored in the first storage area by use of the first partial program and partial data of the data, the partial data corresponding to the first partial program, and provide the first controller with the second partial program generated.
- the process is performed in accordance with the update state of the first partial area that has been accessed, and this makes it possible to provide the first controller with the second program even during the updating process of updating the first program to the second program.
- the difference information may include items of difference data and correspondence relationship information.
- the items of difference data may indicate a difference between a plurality of first data units constituting the first program and a plurality of second data units constituting the second program.
- the correspondence relationship information may be for identifying, for each of the items of difference data, one first data unit, among the plurality of first data units, and one second data unit, among the plurality of second data units, the one first data unit and the one second data unit corresponding to the difference data.
- a first data unit to which the difference data is to be applied can be identified with ease. Accordingly, the processing load related to the process of generating the second partial program and the processing time related to this generating process can be reduced.
- the update controller may update the first partial program stored in the first partial area to the second partial program, and for each of the plurality of first partial areas obtained by dividing the first storage area storing the second program, the update controller may, after updating the first program to the second program, copy the second partial program that is a part of the second program and that is stored in the first partial area to the second storage area and then update the second partial program to the first partial program that is a part of the first program by use of partial data of the data, the partial data corresponding to the second partial program.
- the update controller may copy a second partial program that is a part of the second program and that is stored in the first partial area to the second storage area and then update the second partial program to the first partial program by use of partial data of the data, the partial data corresponding to the second partial program.
- the update controller may make a determination as to whether a first partial area where the update has failed comes before or after a specific first partial area of the plurality of first partial areas in terms of a processing order.
- the update controller may copy a second partial program that is a part of the second program and that is stored in the first partial area to the second storage area and then update the second partial program to the first partial program by use of partial data of the data, the partial data corresponding to the second partial program.
- the update controller may update the first partial program stored in the first partial area to the second partial program, and for each of a plurality of second partial areas obtained by dividing a third storage area storing the second program, the update controller may, after updating the first program to the second program, copy a third partial program that is a part of the second program and that is stored in the second partial area to the second storage area and then update the third partial program to a fourth partial program that is a part of the first program by use of partial data of the data, the partial data corresponding to the third partial program.
- the process can be modified in accordance with the location of the first partial area where the update has failed, and thus the time required for the process can be reduced.
- FIG. 1 is a schematic diagram of a system that distributes a program for an update to an automobile according to an embodiment.
- FIG. 1 illustrates server 100 , automobile 200 , communication network 300 , and base station 310 of a mobile communication network.
- Server 100 stores a program (firmware) for an electronic device, such as an electronic control unit (ECU), provided in automobile 200 .
- Server 100 provides such a program to automobile 200 via communication network 300 .
- ECU electronice control unit
- Automobile 200 is a mobile body that can connect to and communicate with the mobile communication network via base station 310 .
- FIG. 1 illustrates an example in which a program for updating an ECU in automobile 200 is distributed to automobile 200 over the air (OTA) and thus the program for the ECU is updated.
- OTA over the air
- the method of updating a program for an ECU is not limited to the one that involves OTA.
- an updating device may be connected to automobile 200 via a cable, and a program for an update recorded on a recording medium may be applied to an ECU in automobile 200 by use of the updating device.
- each ECU provided in automobile 200 may obtain a program for an update via wireless communication, such as OTA, or via wired communication involving an updating device or the like.
- FIG. 2 is a block diagram illustrating an example of a hardware configuration of a server according to an embodiment.
- server 100 includes, in terms of its hardware configuration, central processing unit (CPU) 11 , main memory 12 , storage 13 , and communication interface (IF) 14 .
- CPU central processing unit
- main memory 12 main memory
- storage 13 main memory
- IF communication interface
- CPU 11 is a processor that executes a control program stored in storage 13 or the like.
- Main memory 12 is a volatile storage area to be used as a work area that CPU 11 uses when executing the control program.
- Storage 13 is a nonvolatile storage area that holds the control program, contents, and so on.
- Communication IF 14 is a communication interface for communicating with a plurality of automobiles 200 via communication network 300 .
- Communication IF 14 is, for example, a wired local area network (LAN) interface.
- LAN local area network
- communication IF 14 may be a wireless LAN interface.
- Communication IF 14 is not limited to be a LAN interface and may be any type of communication interface that can establish a communication connection to a communication network.
- FIG. 3 is a block diagram illustrating an example of a hardware configuration of information processing device 210 provided in an automobile according to an embodiment.
- information processing device 210 includes, in terms of its hardware configuration, telematics control unit (TCU) 21 and n ECUs 22 . It is to be noted that information processing device 210 does not have to include all the hardware components illustrated in FIG. 3 . For example, information processing device 210 does not have to include TCU 21 .
- TCU telematics control unit
- TCU 21 is a communication unit via which automobile 200 communicates wirelessly with communication network 300 .
- TCU 21 includes a cellular module that conforms to a mobile communication network standard.
- N ECUs 22 are control circuits that control various devices, including an engine, a motor, a meter, a transmission, a brake, a steering, a power window, and an air conditioner, provided in automobile 200 .
- n ECUs 22 are provided for the respective devices, including those mentioned above.
- n ECUs 22 may each include a storage (a nonvolatile storage area) in which a program to be executed by corresponding ECU 22 is stored.
- a storage is, for example, a nonvolatile memory.
- Storage 23 is a nonvolatile storage area that holds a control program and so on.
- Storage 23 is implemented by, for example but not limited to, a hard disk drive (HDD) or a solid-state drive (SSD).
- HDD hard disk drive
- SSD solid-state drive
- FIG. 4 is a block diagram illustrating an example of a functional configuration of information processing device 210 according to an embodiment.
- Information processing device 210 includes managing ECU 220 , ECU 230 , and storage 240 .
- Managing ECU 220 manages an update of a program to be executed by ECU 230 .
- Managing ECU 220 provides ECU 230 with storage 240 that functions as a virtual storage.
- Managing ECU 220 is implemented by, for example, at least one ECU among n ECUs 22 .
- Managing ECU 220 may include TCU 21 .
- Managing ECU 220 is an example of a second controller.
- Storage 240 is provided to ECU 230 as a virtual storage via managing ECU 220 .
- Storage 240 includes first storage area 241 , second storage area 242 , and third storage area 243 .
- first storage area 241 a first program that ECU 230 executes when starting is stored.
- the first program is a program being used presently by ECU 230 .
- a program being used presently by ECU 230 is a program set to be used when ECU 230 starts and does not necessarily refer to a program that is being executed by ECU 230 .
- Second storage area 242 is a storage area different from first storage area 241 .
- Second storage area 242 is a storage area having a storage capacity smaller than the storage capacity of first storage area 241 .
- Second storage area 242 is used when the first program is updated, and a first partial program that is a part of the first program is stored temporarily in second storage area 242 .
- Third storage area 243 is a storage area in which data for an update to be used to update the first program is stored temporarily. Third storage area 243 is a storage area different from both first storage area 241 and second storage area 242 . Third storage area 243 is a storage area having a storage capacity smaller than the storage capacity of first storage area 241 . The total storage capacity including the storage capacity of second storage area 242 and the storage capacity of third storage area 243 is smaller than the storage capacity of first storage area 241 .
- Storage 240 is implemented by storage 23 .
- ECU 230 accesses the first storage area storing the first program in storage 240 and executes the first program. ECU 230 implements its own functions by executing the first program when starting. ECU 230 is implemented by, for example, at least one ECU among n ECUs 22 , and this at least one ECU is different from ECU 22 that implements managing ECU 220 . ECU 230 is an example of a first controller.
- Managing ECU 220 includes, specifically, update controller 221 and provider 222 .
- Update controller 221 controls an updating process of updating the first program to be executed by ECU 230 to a new second program. Specifically, update controller 221 obtains data for an update for updating the first program from an external device and updates the first program to the new second program by use of the obtained data for an update. Update controller 221 stores the obtained data for an update into third storage area 243 . Details of the control performed in the updating process by update controller 221 will be described later.
- the external device is, for example, server 100 or an updating device.
- Provider 222 is a processor that provides virtual storage 260 to ECU 230 by use of storage 23 implementing storage 240 .
- Provider 222 is accessed by ECU 230 having a virtual client function and provides ECU 230 with a virtual storage storing the first program stored in a real storage area of storage 23 .
- provider 222 provides ECU 230 with a virtual storage storing a part of the first program stored in the real storage area of storage 23 as well as the second program by use of the data for an update. Details of the providing process performed by provider 222 will be described later.
- ECU 230 includes, specifically, controller 231 and client block 232 .
- Controller 231 is a processor that implements the functions of ECU 230 by executing the first program or the second program stored in the virtual storage provided by managing ECU 220 . Specifically, controller 231 controls client block 232 to access the virtual storage provided by managing ECU 220 and executes the first program or the second program stored in the virtual storage.
- Client block 232 is a processor that exchanges information with provider 222 of managing ECU 220 and is thus provided, by provider 222 , with the first program or the second program stored in storage 240 that functions as the virtual storage.
- FIG. 5 is a diagram for describing the control in an updating process and for describing a providing process.
- FIG. 5 is a diagram illustrating a state held during the updating process.
- First storage area 241 storing the first program is divided into a plurality of first partial areas 251 to 255 , and for each of the plurality of first partial areas 251 to 255 , update controller 221 , by use of the obtained data for an update, updates a first partial program stored in the corresponding first partial area to a second partial program that is a part of a new second program. Specifically, update controller 221 selects, one by one in a predetermined order, a first partial area to be processed from the plurality of first partial areas 251 to 255 . Then, update controller 221 copies the first partial program stored in the selected first partial area to be processed to second storage area 242 .
- update controller 221 generates a second partial program by applying the data for an update to the first partial program stored in the first partial area to be processed and overwrites the first partial program in the first partial area to be processed with the generated second partial program.
- update controller 221 updates the first partial program to the second partial program.
- the predetermined order may be the order in which the first partial areas are accessed in storage 23 , for example.
- the plurality of first partial areas 251 to 255 may be storage areas located continuously in the real storage area of storage 23 , or these first partial areas may be storage areas located with a predetermined storage area gap provided between adjacent first partial areas.
- first partial areas are located with a predetermined storage area gap provided between adjacent first partial areas
- free space or data indicating free space may be stored in the predetermined storage area between adjacent first partial areas.
- the predetermined storage area may store the second partial program that could not be stored in first partial area 251 when the data amount of the updated second partial program exceeds the storage capacity of first partial area 251 .
- the predetermined storage area used in this case may be a storage area located adjacent to first partial area 251 .
- storage 23 is implemented by, for example, an HDD, or a recording medium that is accessed sequentially. This does not necessarily apply if storage 23 is implemented by a nonvolatile memory, such as an SSD, that is accessed randomly.
- the plurality of first partial areas include five areas.
- the plurality of first partial areas are not limited to five areas and may include less than five areas or more than five areas.
- the first partial programs are partial programs of the first program and are stored in respective first partial areas 251 to 255 .
- Each first partial program is a code, among the codes constituting the first program, that is stored in the corresponding first partial area.
- the first program is stored across (over) the plurality of first partial areas 251 to 255 constituting first storage area 241 .
- the first program does not function unless all of the plurality of first partial programs constituting the first program are present.
- Each second partial program is a part of the second program and is a partial program generated as the data for an update is applied to each of the plurality of first partial programs.
- Each second partial program is a code, among the codes constituting the second program, that is generated as the first partial program corresponding to the given second partial program is updated by use of the data for an update.
- update controller 221 completing the update, all of the plurality of first partial programs stored in respective first partial areas 251 to 255 are overwritten with the respective second partial programs. Therefore, the plurality of second partial programs become stored in respective first partial areas 251 to 255 .
- the second program does not function unless all of the plurality of second partial programs constituting the second program are present.
- FIG. 6 is a diagram for describing an example of some details of an updating process according to an embodiment.
- (a) is a diagram illustrating a relationship between a plurality of first data units D 1 to D 4 constituting the first partial program and the address (the location) of each first data unit in the data constituting the first partial program.
- (b) is a diagram illustrating a relationship between a plurality of second data units D 1 , D 2 , D 5 , and D 6 constituting the second partial program and the address (the location) of each second data unit in the data constituting the second partial program.
- the address in the program may be indicated, for example, by a relative value (an offset value) from a predetermined reference address (for example, the starting address of the program, an absolute value).
- address x 1 of first data unit D 2 in the first partial program may be calculated based on reference address x 0 and data length L 1 of first data unit D 1 stored preceding first data unit D 2 .
- address x 1 may be calculated by adding data length L 1 to reference address x 0 .
- (c) is a diagram illustrating a structure of data for an update.
- the data for an update includes items of difference data and correspondence relationship information.
- the data for an update may further include items of difference data and the numbers (the sequence numbers) for identify their correspondence relationship information.
- the items of difference data are data indicating the differences between the plurality of first data units D 1 to D 4 constituting the first partial program and the plurality of second data units D 1 , D 2 , D 5 , and D 6 constituting the second partial program.
- the correspondence relationship information includes the address, in the first partial program, of the first data unit corresponding to each of the items of difference data and the address, in the second partial program, of the second data unit corresponding to each of the items of difference data.
- the correspondence relationship information is information for identifying the first data unit and the second data unit corresponding to each piece of the difference data.
- the correspondence relationship information with number 01 indicates that first data unit D 1 of the first partial program that is located at address x 0 in the data and second data unit D 1 of the second partial program that is located at address x 0 in the data are in the correspondence relationship. Moreover, the difference data with number 01 is 0, and this indicates that first data unit D 1 and second data unit D 1 are the same data unit. In other words, update controller 221 can generate second data unit D 1 by adding 0 as the difference data to first data unit D 1 of the first partial program that is located at address x 0 in the data.
- the correspondence relationship information with number 02 indicates that there is no address corresponding to the first partial program and that the address corresponding to the second partial program is x 1 .
- update controller 221 identifies address x 1 by adding data length L 1 of previously generated second data unit D 1 to address x 0 of previously generated second data unit D 1 and inserts, at identified address x 1 , data unit D 5 indicated by the difference data with number 02. With this configuration, update controller 221 can generate second data unit D 5 of the second partial program at address x 1 in the data.
- the correspondence relationship information with number 04 indicates that first data unit D 4 of the first partial program that is located at address x 3 in the data and second data unit D 6 of the second partial program that is located at address x 6 in the data are in the correspondence relationship.
- the difference data with number 04 is D 6 ⁇ D 4 , which is not 0, and this indicates that first data unit D 4 and second data unit D 6 are different data units.
- update controller 221 identifies address x 6 by adding data length L 2 of previously generated second data unit D 2 to address x 5 of previously generated second data unit D 2 .
- Update controller 221 generates second data unit D 6 by adding first data unit D 4 to D 6 ⁇ D 4 , which is the difference data with number 04, and places generated second data unit D 6 to identified address x 6 .
- the correspondence relationship information with number 04 indicates address x 3 of the first partial program in the data, and address x 2 preceding address x 3 by one is skipped in the order in which address x 0 to address x 3 of first data units D 1 to D 4 of the first partial program are arranged. This indicates that first data unit D 3 at address x 3 is to be deleted. Therefore, update controller 221 deletes first data unit D 3 of the first partial program. In this example, update controller 221 may store deleted first data unit D 3 into third storage area 243 .
- update controller 221 generates a second partial program by applying data for an update to a first partial program and updates the first partial program stored in the first partial area to the second partial program by overwriting the first partial program with the generated second partial program.
- the data amount of the difference data is likely to be small since the first partial program and the second partial program are highly likely to be similar to each other. This makes it possible to reduce the data amount of the data for an update to the data amount smaller than that of the second partial program.
- the difference between the first partial program and the second partial program can be obtained by use of a binary differential algorithm.
- the correspondence relationship information is not limited to the information indicated in (c) in FIG. 6 and may be calculated based on the data indicating the processing content (an addition, an insertion, a deletion) of the difference data and the data length of the data to be processed according to the processing content. This makes it possible to identify the address of the first data unit and the address of the second data unit indicated in (c) in FIG. 6 .
- FIG. 6 illustrates a case where the first partial program and the second partial program are used.
- the first partial program may be replaced by the first program
- the second partial program may be replaced by the second program; thus, the first program and the second program can be described in a similar manner.
- provider 222 provides a new second program to ECU 230 by performing any one of the three processes described below in accordance with the update state of first partial areas 251 to 255 having been accessed.
- update controller 221 performs different processes in accordance with the three update states (after the updating process, during the updating process, before the updating process).
- provider 222 When the area accessed is first partial area 251 that has been subjected to the updating process (the update has been completed), provider 222 provides ECU 230 with the second partial program stored in this first partial area 251 . In this case, since the program stored in accessed first partial area 251 has already been updated to the second partial program, provider 222 provides ECU 230 with the updated second partial program stored in first partial area 251 .
- provider 222 When the area accessed is first partial area 252 that is being subjected to the updating process, provider 222 generates a second partial program updated from the first partial program by use of the first partial program stored in second storage area 242 and the partial data, of the data for an update, that corresponds to the stated first partial program. Then, provider 222 provides ECU 230 with the generated second partial program.
- provider 222 since the program stored in accessed first partial area 252 is presently being subjected to the updating process, provider 222 generates the second partial program by applying the partial data, of the data for an update stored in third storage area 243 , that corresponds to the first partial program to this first partial program that has been relocated to second storage area 242 during the updating process. In other words, in the above case, provider 222 generates a second partial program at each instance of access and provides ECU 230 with the generated second partial program.
- provider 222 When the area accessed is any one of first partial areas 253 to 255 that have not been subjected to the updating process, provider 222 generates a second partial program updated from the first partial program by use of the first partial program stored in the accessed first partial area and the partial data, of the data for an update, that corresponds to the stated first partial program. Then, provider 222 provides ECU 230 with the generated second partial program.
- provider 222 since the program stored in accessed first partial area 251 has not been subjected to the updating process, provider 222 generates the second partial program by applying the partial data, of the data for an update stored in third storage area 243 , that corresponds to the first partial program to this first partial program stored in the accessed first partial area. In other words, in the above case, provider 222 generates the second partial program at each instance of access and provides ECU 230 with the generated second partial program.
- provider 222 performs a process corresponding to the update state of the accessed first partial area. Therefore, provider 222 can provide ECU 230 with an updated second program even during the process of updating the first program to the second program.
- provider 222 generates the second partial program at each instance of access in (2) and (3) described above, but this is not a limiting example.
- provider 222 may generate a second partial program at a first instance of access and temporarily hold the generated second partial program in storage 240 . Then, provider 222 may provide ECU 230 with the temporarily held second partial program at a second or subsequent instance of access. In this case, the processing load can be reduced since provider 222 needs to generate the second partial program only once.
- provider 222 may determine whether to temporarily hold the second partial program in storage 240 based on the frequency of access by ECU 230 , for example. In this case, provider 222 may temporarily hold, in storage 240 , the number of times each first partial program is accessed by ECU 230 . Then, provider 222 may temporarily hold the generated second partial program in storage 240 if the number of times each first partial program is accessed has reached a preset number or may refrain from temporarily holding the generated second partial program in storage 240 if the number of times each first partial program is accessed by ECU 230 falls below the preset number.
- FIG. 7 is a diagram for describing a first example of a process to be performed when an updating process has failed.
- update controller 221 may hold, in storage 240 , the update state of each of the plurality of first partial areas 251 to 255 .
- the update state includes three states: after the updating process (the update has been completed), during the update, and before the updating process (the process has not been performed).
- update controller 221 updates the first partial program stored in a given first partial area to the second partial program for each of the plurality of first partial areas 251 to 255 as illustrated in (b) in FIG. 7 .
- update controller 221 continues to update the first partial programs stored in the first partial areas that have not been processed to the second partial programs. How update controller 221 updates the first partial program is as described with reference to FIG. 5 and FIG. 6 .
- update controller 221 updates the second partial program stored in a given first partial area to the first partial program that is a part of the original first program by use of the data for an update stored in third storage area 243 for each of the plurality of first partial areas 251 to 255 obtained by dividing first storage area 241 storing the second program.
- Update controller 221 performs this process in a manner similar to the manner in which update controller 221 updates the first program to the second program. In other words, this process can be described with the first program read as the second program, with the second program read as the first program, with the first partial program read as the second partial program, and with the second partial program read as the first partial program in the description of the control in the updating process performed by update controller 221 . In this case, the same applies to the description of the providing process performed by provider 222 .
- update controller 221 updates the second partial program by use of the data for an update stored in third storage area 243 when updating the second partial program to the original first partial program, but this is not a limiting example.
- the data for an update stored in third storage area 243 is data that cannot be applied to the updating process of restoring the second partial program to the original first partial program or where the amount of processing required in the updating process of restoring the second partial program to the original first partial program is greater than a predetermined amount of processing (for example, the amount or processing required for the updating process of updating the first partial program to the second partial program)
- update controller 221 may perform the updating process of restoring the second partial program to the original first partial program by use of new data for an update.
- update controller 221 obtains, from an external device, new data for an update for the updating process of restoring the second partial program to the original first partial program.
- FIG. 8 is a diagram for describing a second example of a process to be performed when an updating process has failed.
- update controller 221 updates the second partial program to the first partial program by use of the partial data, of the data for an update, that corresponds to this second partial program after copying the second partial program stored in the first partial area where the update has failed to second storage area 242 for each of one or more first partial areas 251 that have been updated and first partial area 252 where the update has failed.
- Update controller 221 performs this process in a manner similar to the manner in which update controller 221 updates the first program to the second program. In this case, the same applies to the description of the providing process performed by provider 222 .
- the third example is an example in which the process of the first example and the process of the second example are switched depending on the location of the first partial area where the update has failed.
- update controller 221 determines whether the first partial area where the update has failed comes before or after specific first partial area 253 , among the plurality of first partial areas 251 to 255 , in terms of their processing order. Then, if the result of the determination indicates that the first partial area where the update has failed comes before specific first partial area 253 in terms of the processing order, update controller 221 performs the process of the second example described with reference to FIG. 8 . Meanwhile, if the result of the determination indicates that the first partial area where the update has failed comes after specific first partial area 253 in terms of the processing order, update controller 221 performs the process of the first example described with reference to FIG. 7 .
- update controller 221 may perform the process of the first example or the process of the second example. In this case, whether update controller 221 performs the process of the first example or the process of the second example may be determined in advance, and update controller 221 performs the predetermined one of the process of the first example and the process of the second example.
- the specific first partial area is first partial area 253 among the plurality of first partial areas 251 to 255 , but the specific first partial area is not limited to first partial area 253 .
- the specific first partial area may be any predetermined first partial area among the plurality of first partial areas.
- FIG. 9 is a flowchart illustrating an example of an updating process performed by information processing device 210 according to an embodiment.
- Managing ECU 220 determines whether managing ECU 220 has obtained data for an update (S 11 ).
- managing ECU 220 determines that managing ECU 220 has obtained the data for an update (Yes at S 11 )
- managing ECU 220 performs loop 1 including step S 12 and step S 13 described below for each of the plurality of first partial areas 251 to 255 .
- managing ECU 220 has determined that managing ECU 220 has not obtained the data for an update (No at S 11 )
- the process returns to step S 11 .
- Managing ECU 220 copies a first partial program stored in a first partial area to be processed to second storage area 242 (S 12 ).
- Managing ECU 220 updates the first partial program stored in the first partial area to be processed to a second partial program by use of partial data, of the data for an update, that corresponds to this first partial program (S 13 ).
- FIG. 10 is a flowchart illustrating an example of a providing process performed by information processing device 210 according to an embodiment.
- Managing ECU 220 determines whether ECU 230 has accessed virtual storage 260 (S 21 ).
- managing ECU 220 determines the update state of the first partial area that has been accessed (S 22 ). If managing ECU 220 has determined that ECU 230 has not accessed virtual storage 260 (No at S 21 ), the process returns to step S 21 .
- step S 23 If the update state of the first partial area that has been accessed indicates that the updating process has been performed (the update has been completed) (Update complete at S 22 ), managing ECU 220 performs step S 23 . If the update state of the first partial area that has been accessed indicates that the first partial area is presently being updated (During update at S 22 ), managing ECU 220 performs step S 24 . If the update state of the first partial area that has been accessed indicates that the first partial area has not yet been updated (the update has not been performed) (Before update at S 22 ), managing ECU 220 performs step S 26 .
- managing ECU 220 provides ECU 230 with the second partial program stored in the first partial area that has been accessed (S 23 ).
- managing ECU 220 generates a second partial program by use of a first partial program stored in second storage area 242 and the difference data corresponding to this first partial program (S 24 ). Then, managing ECU 220 provides the generated second partial program to ECU 230 (S 25 ).
- managing ECU 220 generates a second partial program by use of a first partial program stored in the first partial area that has been accessed and the difference data corresponding to this first partial program (S 26 ). Then, managing ECU 220 provides the generated second partial program to ECU 230 (S 27 ).
- a first example of a process (a rollback process) of restoring to a pre-update state when the updating process has failed will be described.
- FIG. 11 is a flowchart illustrating a first example of a rollback process performed by information processing device 210 according to an embodiment.
- Managing ECU 220 determines whether the update has failed during the updating process (S 31 ). For example, managing ECU 220 determines that the update has failed in the process at step S 31 , for example but not limited to, if the data for an update becomes damaged, if a non-writable area arises due to a physical deterioration or the like of storage 240 , or if an anomalous interruption occurs during the updating process. Managing ECU 220 can determine that the data for an update has become damaged, for example, if managing ECU 220 has failed to obtain the data for an update from storage 240 or if managing ECU 220 has failed to apply the data for an update to the updating process.
- Managing ECU 220 can determine that a non-writable area has arisen due to a physical deterioration or the like of storage 240 , for example, if an error is detected during the updating process. Managing ECU 220 can determine that an anomalous interruption has occurred during the updating process, for example, if an error is detected during the updating process or if the program content that has been written after the updating process has resumed is confirmed.
- managing ECU 220 may fail to update in the following cases, for example.
- the cases where managing ECU 220 may fail to update include, for example, a case where an unexpected power shutoff occurs while the data for an update is being received, a case where a non-writable area arises due to a physical deterioration or the like of storage 23 , a case where a pre-error check access occurs to a non-writable area, or a case where the processing load exceeds a predetermined load.
- managing ECU 220 determines whether there is a first partial area that is in the updating process (S 32 ). Meanwhile, if managing ECU 220 has determined that the update has not failed during the updating process (No at S 31 ), the process returns to step S 31 . In this case, the updating process described with reference to FIG. 9 is continued.
- managing ECU 220 If managing ECU 220 has determined that there is a first partial area that is in the updating process (Yes at S 32 ), managing ECU 220 stores the first partial program stored in second storage area 242 into the first partial area that is in the updating process (S 33 ). If a write failure or the like into the area being updated has occurred, there is a possibility that it is unable to determine whether the data present in the first partial area has not been updated or has been updated or that the data is damaged. Therefore, performing the process at step S 32 and step S 33 makes it possible to roll back the area being updated reliably to the first partial program, and the processes that follow can be performed reliably.
- managing ECU 220 determines whether there is a first partial area that has not be subjected to the updating process (the process has not been performed) (S 34 ).
- managing ECU 220 If managing ECU 220 has determined that there is a first partial area that has not been subjected to the updating process (Yes at S 34 ), managing ECU 220 performs loop 2 including step S 35 and step S 36 described below for each of the first partial areas that have not been subjected to the updating process.
- Managing ECU 220 copies the first partial program stored in the first partial area to be processed to second storage area 242 (S 35 ).
- Managing ECU 220 updates the first partial program stored in the first partial area to be processed to a second partial program by use of partial data, of the data for an update, that corresponds to the stated first partial program (S 36 ).
- managing ECU 220 If managing ECU 220 has determined that there is no first partial area that has not been subjected to the updating process (No at S 34 ) or if step S 35 and step S 36 have been executed on all of the first partial areas that have not been subjected to the updating process, managing ECU 220 performs loop 3 including step S 37 and step S 38 for each of all first partial areas 251 to 255 that have been subjected to the updating process.
- Managing ECU 220 copies the second partial program stored in the first partial area to be processed to second storage area 242 (S 37 ).
- Managing ECU 220 updates the second partial program stored in the first partial area to be processed to a first partial program by use of partial data, of the data for an update, that corresponds to the stated second partial program (S 38 ).
- Managing ECU 220 executes step S 37 and step S 38 for each of first partial areas 251 to 255 and then terminates the process.
- FIG. 12 is a flowchart illustrating a second example of a rollback process performed by information processing device 210 according to an embodiment.
- Managing ECU 220 performs the processes that are identical to the processes at step S 31 to step S 33 .
- managing ECU 220 If managing ECU 220 has determined that there is no first partial area that is in the updating process (No at S 32 ) or after step S 33 , managing ECU 220 performs loop 4 including step S 41 and step S 42 described below for each of the one or more first partial areas that have been updated and any first partial area where the update has failed.
- Managing ECU 220 copies the second partial program stored in the first partial area to be processed to second storage area 242 (S 41 ).
- Managing ECU 220 updates the second partial program stored in the second partial area to be processed to a first partial program by use of partial data, of the data for an update, that corresponds to this second partial program (S 42 ).
- Managing ECU 220 executes step S 41 and step S 42 for all the first partial areas that have been updated and any first partial area where the update has failed and then terminates the process.
- FIG. 13 is a flowchart illustrating a third example of a rollback process performed by information processing device 210 according to an embodiment.
- Managing ECU 220 performs the processes that are identical to the processes at step S 31 to step S 33 .
- managing ECU 220 determines whether the first partial area where the update has failed comes before or after specific first partial area 253 of the plurality of first partial areas 251 to 255 in terms of their processing order (S 51 ).
- managing ECU 220 If managing ECU 220 has determined that the first partial area where the update has failed comes before specific first partial area 253 of the plurality of first partial areas 251 to 255 in terms of their processing order (Before at S 51 ), managing ECU 220 performs loop 4 including step S 41 and step S 42 described below for each of the one or more first partial areas that have been updated and any first partial area where the update has failed. Loop 4 has been described above with reference to FIG. 12 , and thus descriptions thereof will be omitted.
- managing ECU 220 If managing ECU 220 has determined that the first partial area where the update has failed comes after specific first partial area 253 of the plurality of first partial areas 251 to 255 in terms of their processing order (After at S 51 ), managing ECU 220 performs the processes identical to the processes at step S 34 to step S 38 .
- the process can be modified in accordance with the location of the first partial area where the update has failed, and thus the time required for the process can be reduced.
- a first partial program stored in a first partial area to be subjected to an updating process is copied to second storage area 242 to relocate the first partial program, and then the first partial program stored in this first partial area is updated to a second partial program. Therefore, even in a case where the first partial area is accessed during the updating process, the relocated first partial program can be used instead of the first partial program that is in the updating process, and the program can be provided to the accessing device.
- the data used for an update is difference information
- the program to be relocated is a first partial program, or a part of the first program. Therefore, the amount of data used in the storage when updating the program can be reduced.
- information processing device 210 includes ECU 230 and managing ECU 220 that includes update controller 221 and provider 222 that provides ECU 230 with storage 240 as virtual storage 260
- the first program is a program to be executed when ECU 230 starts.
- the first program that ECU 230 executes is stored in virtual storage 260 provided by managing ECU 220 , and the program for ECU 230 can be updated without involving ECU 230 . Therefore, the program for ECU 230 to be updated can be updated without affecting an operation of ECU 230 .
- the difference information includes items of difference data indicating a difference or differences between a plurality of first data units constituting the first program and a plurality of second data units constituting the second program.
- the difference information also includes correspondence relationship information for identifying a first data unit and a second data unit that correspond to the stated difference data for each of the items of difference data. Therefore, a first data unit to which the difference data is to be applied can be identified with ease. Accordingly, the processing load related to the process of generating the second partial program and the processing time related to this generating process can be reduced.
- managing ECU 220 and ECU 230 are each implemented by any one of n ECUs 22 , but this is not a limiting example.
- managing ECU 220 and ECU 230 may each be implemented by one or more processors and a memory or a storage storing a program for implementing a virtualization environment.
- FIG. 14 is a block diagram illustrating an example of a functional configuration of information processing device 210 A according to Variation 1.
- FIG. 15 is a diagram illustrating a configuration of a virtual machine that implements the functions of information processing device 210 A according to Variation 1.
- information processing device 210 A includes managing virtual machine (VM) 220 A, a plurality of virtual machines (VMs) 230 Aa and 230 Ab, and shared memory 250 .
- VM virtual machine
- VMs virtual machines
- shared memory 250 shared memory 250 .
- information processing device 210 A includes a virtual machine implemented virtually by software on one or more hardware devices.
- information processing device 210 A is implemented by a hypervisor virtualization environment.
- Managing VM 220 A is equipped with functions similar to the functions of managing ECU 220 according to the embodiment.
- the plurality of VMs 230 Aa and 230 Ab are each equipped with functions similar to the functions of ECU 230 according to the embodiment.
- Shared memory 250 provides a storage area via a virtual storage function. In this manner, the storage area of the program for each VM is implemented by shared memory 250 , and thus information can be exchanged between managing VM 220 A and VMs 230 Aa and 230 Ab at a high speed.
- automobile 200 serves as an example of the mobile body.
- the mobile body is not limited to automobile 200 and may be any other means of transportation, an unmanned vehicle, or a flying body such as a drone.
- information processing device 210 is not limited to a computer system provided in the mobile body, for example, and may be applied to any computer system that includes a plurality of controllers.
- the constituent elements may each be implemented by dedicated hardware or may each be implemented through the execution of a software program suitable for the corresponding constituent element.
- the constituent elements may each be implemented as a program executing unit, such as a CPU or a processor, reads out a software program recorded on a recording medium, such as a hard disk or a semiconductor memory, and executes the software program.
- software that implements the program updating method and so on according to the embodiment described above is a program such as the one described below.
- this program causes a computer to execute an information processing method to be executed by an information processing device that includes a storage in which a first program is stored, and the information processing method includes obtaining data for updating the first program from an external device and updating the first program to a second program by use of the data obtained.
- the updating includes, for each of a plurality of first partial areas obtained by dividing a first storage area that is a storage area of the storage in which the first program is stored, copying a first partial program that is a part of the first program and that is stored in the first partial area to a second storage area different from the first storage area and then successively updating the first partial program to a second partial program that is a part of the second program by use of partial data of the data, the partial data corresponding to the first partial program.
- the data is difference information indicating a difference between the first program and the second program.
- the second storage area has a storage capacity smaller than a storage capacity of the first storage area.
- the present disclosure can be applied to an information processing device and so on that can update a program for a controller to be updated without affecting this controller.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
Description
- This is a continuation application of PCT International Application No. PCT/JP2021/000757 filed on Jan. 13, 2021, designating the United States of America, which is based on and claims priority of Japanese Patent Application No. 2020-014785 filed on Jan. 31, 2020.
- The present disclosure relates to an information processing device and an information processing method.
- Patent Literature (PTL) 1 discloses an electronic control device that, when overwriting old information stored in a memory with new information, relocates this old information to another memory different from the original memory.
-
- PTL 1: Japanese Unexamined Patent Application Publication No. 2019-74847
- However, the electronic control device according to
PTL 1 can be improved upon. - In view of this, the present disclosure provides an information processing device and so on capable of improving upon the above related art.
- An information processing device according to the present disclosure includes: a storage in which a first program is stored; and an update controller that obtains data for updating the first program from an external device and updates the first program to a second program by use of the data obtained, wherein for each of a plurality of first partial areas obtained by dividing a first storage area that is a storage area of the storage in which the first program is stored, the update controller copies a first partial program that is a part of the first program and that is stored in the first partial area to a second storage area different from the first storage area, and then successively updates the first partial program to a second partial program that is a part of the second program by use of partial data of the data, the partial data corresponding to the first partial program, the data is difference information indicating a difference between the first program and the second program, and the second storage area has a storage capacity smaller than a storage capacity of the first storage area.
- It is to be noted that general or specific aspects of the above may be implemented in the form of a system, a method, an integrated circuit, a computer program, or a computer readable recording medium, such as a CD-ROM, or through any desired combination of a system, a method, an integrated circuit, a computer program, and a recording medium.
- The information processing device and so on according to the present disclosure can reduce the amount of data used in a storage when updating a program.
- These and other advantages and features of the present disclosure will become apparent from the following description thereof taken in conjunction with the accompanying drawings that illustrate a specific embodiment of the present disclosure.
-
FIG. 1 is a schematic diagram of a system that distributes a program for an update to an automobile according to an embodiment. -
FIG. 2 is a block diagram illustrating an example of a hardware configuration of a server according to an embodiment. -
FIG. 3 is a block diagram illustrating an example of a hardware configuration of an information processing device provided in an automobile according to an embodiment. -
FIG. 4 is a block diagram illustrating an example of a functional configuration of an information processing device according to an embodiment. -
FIG. 5 is a diagram for describing control in an updating process and for describing a providing process according to an embodiment. -
FIG. 6 is a diagram for describing an example of some details of an updating process according to an embodiment. -
FIG. 7 is a diagram for describing a first example of a process to be performed when an updating process according to an embodiment has failed. -
FIG. 8 is a diagram for describing a second example of a process to be performed when an updating process according to an embodiment has failed. -
FIG. 9 is a flowchart illustrating an example of an updating process performed by an information processing device according to an embodiment. -
FIG. 10 is a flowchart illustrating an example of an providing process performed by an information processing device according to an embodiment. -
FIG. 11 is a flowchart illustrating a first example of a rollback process performed by an information processing device according to an embodiment. -
FIG. 12 is a flowchart illustrating a second example of a rollback process performed by an information processing device according to an embodiment. -
FIG. 13 is a flowchart illustrating a third example of a rollback process performed by an information processing device according to an embodiment. -
FIG. 14 is a block diagram illustrating an example of a functional configuration of an information processing device according toVariation 1. -
FIG. 15 is a diagram illustrating a configuration of a virtual machine that implements functions of an information processing device according toVariation 1. - The present inventors have found the following problem with respect to the electronic control device described in Background Art.
- The electronic control device disclosed in
PTL 1 relocates old information stored in a memory to another memory different from the original memory when overwriting this old information with new information. This technique thus necessitates a separated memory with a storage capacity sufficient to store the old information. Alternatively, if the old information is to be relocated to a difference location within the memory, this memory needs to have an excess storage capacity to store a copy of the old information. As such, the existing technique requires a separate memory or a large-capacity memory. - To address such an issue, the present inventors have come to conceive of an information processing device and an information processing method that can reduce the amount of data used in a storage when updating a program.
- An information processing device according to one aspect of the present disclosure includes a storage and an update controller. In the storage, a first program is stored. The update controller obtains data for updating the first program from an external device and updates the first program to a second program by use of the data obtained. For each of a plurality of first partial areas obtained by dividing a first storage area that is a storage area of the storage in which the first program is stored, the update controller copies a first partial program that is a part of the first program and that is stored in the first partial area to a second storage area different from the first storage area, and then successively updates the first partial program to a second partial program that is a part of the second program by use of partial data of the data, the partial data corresponding to the first partial program. The data is difference information indicating a difference between the first program and the second program. The second storage area has a storage capacity smaller than a storage capacity of the first storage area.
- According to the above aspect, a first partial program stored in a first partial area to be subjected to an updating process is copied to the second storage area to relocate the first partial program, and then the first partial program stored in this first partial area is updated to a second partial program. Therefore, even in a case where the first partial area is accessed during the updating process, the relocated first partial program can be used instead of the first partial program that is in the middle of the updating process, and the program can be provided to the accessing device. Moreover, the data used for an update is difference information, and the program to be relocated is a first partial program, or a part of the first program. Therefore, the amount of data used in the storage while updating the program can be reduced.
- Moreover, the information processing device may further include a first controller and a second controller. The second controller may include the update controller and a provider that provides the first controller with the storage as a virtual storage. The first program may be a program executed when the first controller starts.
- According to the above aspect, the first program executed by the first controller is stored in the virtual storage provided by the second controller, and thus the program for the first controller can be updated without involving the first controller. Therefore, the program for the first controller to be updated can be updated without affecting the first controller.
- Moreover, when the first controller has accessed the virtual storage while the update controller is updating the first program, (i) when an area accessed by the first controller is a first partial area included in the plurality of first partial areas that has been subjected to an updating process, the provider may provide the first controller with the second partial program stored in the first partial area, (ii) when the area accessed is a first partial area that is being subjected to the updating process, the provider may generate a second partial program updated from a first partial program stored in the second storage area by use of the first partial program and partial data of the data, the partial data corresponding to the first partial program, and provide the first controller with the second partial program generated, or (iii) when the area accessed is a first partial area that has not been subjected to the updating process, the provider may generate a second partial program updated from a first partial program stored in the first storage area by use of the first partial program and partial data of the data, the partial data corresponding to the first partial program, and provide the first controller with the second partial program generated.
- According to the above aspect, the process is performed in accordance with the update state of the first partial area that has been accessed, and this makes it possible to provide the first controller with the second program even during the updating process of updating the first program to the second program.
- Moreover, the difference information may include items of difference data and correspondence relationship information. The items of difference data may indicate a difference between a plurality of first data units constituting the first program and a plurality of second data units constituting the second program. The correspondence relationship information may be for identifying, for each of the items of difference data, one first data unit, among the plurality of first data units, and one second data unit, among the plurality of second data units, the one first data unit and the one second data unit corresponding to the difference data.
- Therefore, a first data unit to which the difference data is to be applied can be identified with ease. Accordingly, the processing load related to the process of generating the second partial program and the processing time related to this generating process can be reduced.
- Moreover, when an update has failed while the update controller is updating the first program, for each of the plurality of first partial areas, the update controller may update the first partial program stored in the first partial area to the second partial program, and for each of the plurality of first partial areas obtained by dividing the first storage area storing the second program, the update controller may, after updating the first program to the second program, copy the second partial program that is a part of the second program and that is stored in the first partial area to the second storage area and then update the second partial program to the first partial program that is a part of the first program by use of partial data of the data, the partial data corresponding to the second partial program.
- With this process, even when the update from the first program to the second program has failed during the updating process, the state in which the first program is stored in the first storage area can be restored.
- Moreover, when an update has failed while the update controller is updating the first program, for each of one or more of the plurality of first partial areas that have been updated and the first partial area where the update has failed, the update controller may copy a second partial program that is a part of the second program and that is stored in the first partial area to the second storage area and then update the second partial program to the first partial program by use of partial data of the data, the partial data corresponding to the second partial program.
- With this process, even when the update from the first program to the second program has failed during the updating process, the state in which the first program is stored in the first storage area can be restored.
- Moreover, when an update has failed while the update controller is updating the first program, the update controller may make a determination as to whether a first partial area where the update has failed comes before or after a specific first partial area of the plurality of first partial areas in terms of a processing order. When a result of the determination indicates that the first partial area where the update has failed comes before the specific first partial area in terms of the processing order, for each of the plurality of first partial areas that have been updated and the first partial area where the update has failed, the update controller may copy a second partial program that is a part of the second program and that is stored in the first partial area to the second storage area and then update the second partial program to the first partial program by use of partial data of the data, the partial data corresponding to the second partial program. When the result of the determination indicates that the first partial area where the update has failed comes after the specific first partial area in terms of the processing order, for each of the plurality of first partial areas, the update controller may update the first partial program stored in the first partial area to the second partial program, and for each of a plurality of second partial areas obtained by dividing a third storage area storing the second program, the update controller may, after updating the first program to the second program, copy a third partial program that is a part of the second program and that is stored in the second partial area to the second storage area and then update the third partial program to a fourth partial program that is a part of the first program by use of partial data of the data, the partial data corresponding to the third partial program.
- With this process, even when the update from the first program to the second program has failed during the updating process, the process can be modified in accordance with the location of the first partial area where the update has failed, and thus the time required for the process can be reduced.
- It is to be noted that general or specific aspects of the above may be implemented in the form of a system, a method, an integrated circuit, a computer program, or a computer readable recording medium, such as a CD-ROM, or through any desired combination of a system, a method, an integrated circuit, a computer program, and a recording medium.
- Hereinafter, an embodiment will be described in detail with reference to the drawings as appropriate. It is to be noted, however, that any descriptions that are more elaborate than necessary may be omitted. For example, features that are already well known may not be described in detail, or duplicate descriptions of substantially identical configurations may be omitted. This is for keeping the following descriptions from becoming more lengthy than necessary and for facilitating an understanding of a person skilled in the art. It is to be noted that the inventor(s) provide the appended drawings and the following descriptions merely to help a person skilled in the art understand the present disclosure at a sufficient level, and these drawings and descriptions are not intended to limit the subject matter set forth in the claims.
- Hereinafter, an embodiment will be described with reference to
FIG. 1 toFIG. 13 . -
FIG. 1 is a schematic diagram of a system that distributes a program for an update to an automobile according to an embodiment. - Specifically,
FIG. 1 illustratesserver 100,automobile 200,communication network 300, andbase station 310 of a mobile communication network. -
Server 100 stores a program (firmware) for an electronic device, such as an electronic control unit (ECU), provided inautomobile 200.Server 100 provides such a program toautomobile 200 viacommunication network 300. -
Automobile 200 is a mobile body that can connect to and communicate with the mobile communication network viabase station 310. - In this manner,
FIG. 1 illustrates an example in which a program for updating an ECU inautomobile 200 is distributed toautomobile 200 over the air (OTA) and thus the program for the ECU is updated. It is to be noted that the method of updating a program for an ECU is not limited to the one that involves OTA. For example, in one alternative technique, an updating device may be connected toautomobile 200 via a cable, and a program for an update recorded on a recording medium may be applied to an ECU inautomobile 200 by use of the updating device. In other words, each ECU provided inautomobile 200 may obtain a program for an update via wireless communication, such as OTA, or via wired communication involving an updating device or the like. -
FIG. 2 is a block diagram illustrating an example of a hardware configuration of a server according to an embodiment. - As illustrated in
FIG. 2 ,server 100 includes, in terms of its hardware configuration, central processing unit (CPU) 11,main memory 12,storage 13, and communication interface (IF) 14. -
CPU 11 is a processor that executes a control program stored instorage 13 or the like. -
Main memory 12 is a volatile storage area to be used as a work area thatCPU 11 uses when executing the control program. -
Storage 13 is a nonvolatile storage area that holds the control program, contents, and so on. - Communication IF 14 is a communication interface for communicating with a plurality of
automobiles 200 viacommunication network 300. Communication IF 14 is, for example, a wired local area network (LAN) interface. Alternatively, communication IF 14 may be a wireless LAN interface. - Communication IF 14 is not limited to be a LAN interface and may be any type of communication interface that can establish a communication connection to a communication network.
-
FIG. 3 is a block diagram illustrating an example of a hardware configuration ofinformation processing device 210 provided in an automobile according to an embodiment. - As illustrated in
FIG. 3 ,information processing device 210 includes, in terms of its hardware configuration, telematics control unit (TCU) 21 andn ECUs 22. It is to be noted thatinformation processing device 210 does not have to include all the hardware components illustrated inFIG. 3 . For example,information processing device 210 does not have to includeTCU 21. -
TCU 21 is a communication unit via whichautomobile 200 communicates wirelessly withcommunication network 300.TCU 21 includes a cellular module that conforms to a mobile communication network standard. -
N ECUs 22 are control circuits that control various devices, including an engine, a motor, a meter, a transmission, a brake, a steering, a power window, and an air conditioner, provided inautomobile 200. For example,n ECUs 22 are provided for the respective devices, including those mentioned above. Although not illustrated,n ECUs 22 may each include a storage (a nonvolatile storage area) in which a program to be executed by correspondingECU 22 is stored. Such a storage is, for example, a nonvolatile memory. -
Storage 23 is a nonvolatile storage area that holds a control program and so on.Storage 23 is implemented by, for example but not limited to, a hard disk drive (HDD) or a solid-state drive (SSD). - Next, a functional configuration of
information processing device 210 ofautomobile 200 will be described with reference toFIG. 4 . -
FIG. 4 is a block diagram illustrating an example of a functional configuration ofinformation processing device 210 according to an embodiment. -
Information processing device 210 includes managingECU 220,ECU 230, andstorage 240. -
Managing ECU 220 manages an update of a program to be executed byECU 230.Managing ECU 220 providesECU 230 withstorage 240 that functions as a virtual storage.Managing ECU 220 is implemented by, for example, at least one ECU amongn ECUs 22.Managing ECU 220 may includeTCU 21.Managing ECU 220 is an example of a second controller. -
Storage 240 is provided toECU 230 as a virtual storage via managingECU 220.Storage 240 includesfirst storage area 241,second storage area 242, andthird storage area 243. Infirst storage area 241, a first program thatECU 230 executes when starting is stored. The first program is a program being used presently byECU 230. In this example, a program being used presently byECU 230 is a program set to be used whenECU 230 starts and does not necessarily refer to a program that is being executed byECU 230. -
Second storage area 242 is a storage area different fromfirst storage area 241.Second storage area 242 is a storage area having a storage capacity smaller than the storage capacity offirst storage area 241.Second storage area 242 is used when the first program is updated, and a first partial program that is a part of the first program is stored temporarily insecond storage area 242. -
Third storage area 243 is a storage area in which data for an update to be used to update the first program is stored temporarily.Third storage area 243 is a storage area different from bothfirst storage area 241 andsecond storage area 242.Third storage area 243 is a storage area having a storage capacity smaller than the storage capacity offirst storage area 241. The total storage capacity including the storage capacity ofsecond storage area 242 and the storage capacity ofthird storage area 243 is smaller than the storage capacity offirst storage area 241. -
Storage 240 is implemented bystorage 23. -
ECU 230 accesses the first storage area storing the first program instorage 240 and executes the first program.ECU 230 implements its own functions by executing the first program when starting.ECU 230 is implemented by, for example, at least one ECU amongn ECUs 22, and this at least one ECU is different fromECU 22 that implements managingECU 220.ECU 230 is an example of a first controller. - Now, some specific functions of managing
ECU 220 andECU 230 will be described. -
Managing ECU 220 includes, specifically, updatecontroller 221 andprovider 222. -
Update controller 221 controls an updating process of updating the first program to be executed byECU 230 to a new second program. Specifically, updatecontroller 221 obtains data for an update for updating the first program from an external device and updates the first program to the new second program by use of the obtained data for an update.Update controller 221 stores the obtained data for an update intothird storage area 243. Details of the control performed in the updating process byupdate controller 221 will be described later. In this example, the external device is, for example,server 100 or an updating device. -
Provider 222 is a processor that providesvirtual storage 260 toECU 230 by use ofstorage 23 implementingstorage 240.Provider 222 is accessed byECU 230 having a virtual client function and providesECU 230 with a virtual storage storing the first program stored in a real storage area ofstorage 23. Moreover, in a case whereupdate controller 221 is executing an updating process of updating the first program to the second program,provider 222 providesECU 230 with a virtual storage storing a part of the first program stored in the real storage area ofstorage 23 as well as the second program by use of the data for an update. Details of the providing process performed byprovider 222 will be described later. -
ECU 230 includes, specifically,controller 231 andclient block 232. -
Controller 231 is a processor that implements the functions ofECU 230 by executing the first program or the second program stored in the virtual storage provided by managingECU 220. Specifically,controller 231 controls client block 232 to access the virtual storage provided by managingECU 220 and executes the first program or the second program stored in the virtual storage. -
Client block 232 is a processor that exchanges information withprovider 222 of managingECU 220 and is thus provided, byprovider 222, with the first program or the second program stored instorage 240 that functions as the virtual storage. - Next, the control in the updating process and the details of the providing process will be described with reference to
FIG. 5 .FIG. 5 is a diagram for describing the control in an updating process and for describing a providing process. Here,FIG. 5 is a diagram illustrating a state held during the updating process. - First, the control in the updating process performed by
update controller 221 will be described. -
First storage area 241 storing the first program is divided into a plurality of firstpartial areas 251 to 255, and for each of the plurality of firstpartial areas 251 to 255, updatecontroller 221, by use of the obtained data for an update, updates a first partial program stored in the corresponding first partial area to a second partial program that is a part of a new second program. Specifically, updatecontroller 221 selects, one by one in a predetermined order, a first partial area to be processed from the plurality of firstpartial areas 251 to 255. Then, updatecontroller 221 copies the first partial program stored in the selected first partial area to be processed tosecond storage area 242. Thereafter, updatecontroller 221 generates a second partial program by applying the data for an update to the first partial program stored in the first partial area to be processed and overwrites the first partial program in the first partial area to be processed with the generated second partial program. Thus, updatecontroller 221 updates the first partial program to the second partial program. In this example, the predetermined order may be the order in which the first partial areas are accessed instorage 23, for example. - In this example, the plurality of first
partial areas 251 to 255 may be storage areas located continuously in the real storage area ofstorage 23, or these first partial areas may be storage areas located with a predetermined storage area gap provided between adjacent first partial areas. In a case where the first partial areas are located with a predetermined storage area gap provided between adjacent first partial areas, free space or data indicating free space may be stored in the predetermined storage area between adjacent first partial areas. The predetermined storage area may store the second partial program that could not be stored in firstpartial area 251 when the data amount of the updated second partial program exceeds the storage capacity of firstpartial area 251. The predetermined storage area used in this case may be a storage area located adjacent to firstpartial area 251. In this example, the above may be applied in a case wherestorage 23 is implemented by, for example, an HDD, or a recording medium that is accessed sequentially. This does not necessarily apply ifstorage 23 is implemented by a nonvolatile memory, such as an SSD, that is accessed randomly. - In the above example, the plurality of first partial areas include five areas. The plurality of first partial areas are not limited to five areas and may include less than five areas or more than five areas.
- The first partial programs are partial programs of the first program and are stored in respective first
partial areas 251 to 255. Each first partial program is a code, among the codes constituting the first program, that is stored in the corresponding first partial area. The first program is stored across (over) the plurality of firstpartial areas 251 to 255 constitutingfirst storage area 241. The first program does not function unless all of the plurality of first partial programs constituting the first program are present. - Each second partial program is a part of the second program and is a partial program generated as the data for an update is applied to each of the plurality of first partial programs. Each second partial program is a code, among the codes constituting the second program, that is generated as the first partial program corresponding to the given second partial program is updated by use of the data for an update. Upon
update controller 221 completing the update, all of the plurality of first partial programs stored in respective firstpartial areas 251 to 255 are overwritten with the respective second partial programs. Therefore, the plurality of second partial programs become stored in respective firstpartial areas 251 to 255. The second program does not function unless all of the plurality of second partial programs constituting the second program are present. - Next, the details of the updating process will be described with reference to
FIG. 6 .FIG. 6 is a diagram for describing an example of some details of an updating process according to an embodiment. InFIG. 6 , (a) is a diagram illustrating a relationship between a plurality of first data units D1 to D4 constituting the first partial program and the address (the location) of each first data unit in the data constituting the first partial program. InFIG. 6 , (b) is a diagram illustrating a relationship between a plurality of second data units D1, D2, D5, and D6 constituting the second partial program and the address (the location) of each second data unit in the data constituting the second partial program. - In this example, the address in the program may be indicated, for example, by a relative value (an offset value) from a predetermined reference address (for example, the starting address of the program, an absolute value). For example, address x1 of first data unit D2 in the first partial program may be calculated based on reference address x0 and data length L1 of first data unit D1 stored preceding first data unit D2. In other words, address x1 may be calculated by adding data length L1 to reference address x0.
- In
FIG. 6 , (c) is a diagram illustrating a structure of data for an update. The data for an update includes items of difference data and correspondence relationship information. The data for an update may further include items of difference data and the numbers (the sequence numbers) for identify their correspondence relationship information. The items of difference data are data indicating the differences between the plurality of first data units D1 to D4 constituting the first partial program and the plurality of second data units D1, D2, D5, and D6 constituting the second partial program. The correspondence relationship information includes the address, in the first partial program, of the first data unit corresponding to each of the items of difference data and the address, in the second partial program, of the second data unit corresponding to each of the items of difference data. In other words, the correspondence relationship information is information for identifying the first data unit and the second data unit corresponding to each piece of the difference data. - In (c) in
FIG. 6 , the first data unit of the first partial program and the second data unit of the second partial program that are in the correspondence relationship are illustrated. - The correspondence relationship information with
number 01 indicates that first data unit D1 of the first partial program that is located at address x0 in the data and second data unit D1 of the second partial program that is located at address x0 in the data are in the correspondence relationship. Moreover, the difference data withnumber 01 is 0, and this indicates that first data unit D1 and second data unit D1 are the same data unit. In other words, updatecontroller 221 can generate second data unit D1 by adding 0 as the difference data to first data unit D1 of the first partial program that is located at address x0 in the data. - The correspondence relationship information with
number 02 indicates that there is no address corresponding to the first partial program and that the address corresponding to the second partial program is x1. This indicates that, in the second partial program, second data unit D5 indicated by the difference data is inserted at address x1 after preceding second data unit D1 withnumber 01. In other words, updatecontroller 221 identifies address x1 by adding data length L1 of previously generated second data unit D1 to address x0 of previously generated second data unit D1 and inserts, at identified address x1, data unit D5 indicated by the difference data withnumber 02. With this configuration, updatecontroller 221 can generate second data unit D5 of the second partial program at address x1 in the data. - The correspondence relationship information with
number 04 indicates that first data unit D4 of the first partial program that is located at address x3 in the data and second data unit D6 of the second partial program that is located at address x6 in the data are in the correspondence relationship. Moreover, the difference data withnumber 04 is D6−D4, which is not 0, and this indicates that first data unit D4 and second data unit D6 are different data units. In other words, updatecontroller 221 identifies address x6 by adding data length L2 of previously generated second data unit D2 to address x5 of previously generated second data unit D2.Update controller 221 generates second data unit D6 by adding first data unit D4 to D6−D4, which is the difference data withnumber 04, and places generated second data unit D6 to identified address x6. - Moreover, the correspondence relationship information with
number 04 indicates address x3 of the first partial program in the data, and address x2 preceding address x3 by one is skipped in the order in which address x0 to address x3 of first data units D1 to D4 of the first partial program are arranged. This indicates that first data unit D3 at address x3 is to be deleted. Therefore, updatecontroller 221 deletes first data unit D3 of the first partial program. In this example, updatecontroller 221 may store deleted first data unit D3 intothird storage area 243. - The description of the process for the correspondence relationship information with
number 03 will be omitted. - In this manner, update
controller 221 generates a second partial program by applying data for an update to a first partial program and updates the first partial program stored in the first partial area to the second partial program by overwriting the first partial program with the generated second partial program. - The data amount of the difference data is likely to be small since the first partial program and the second partial program are highly likely to be similar to each other. This makes it possible to reduce the data amount of the data for an update to the data amount smaller than that of the second partial program.
- In this example, the difference between the first partial program and the second partial program can be obtained by use of a binary differential algorithm. In this case, the correspondence relationship information is not limited to the information indicated in (c) in
FIG. 6 and may be calculated based on the data indicating the processing content (an addition, an insertion, a deletion) of the difference data and the data length of the data to be processed according to the processing content. This makes it possible to identify the address of the first data unit and the address of the second data unit indicated in (c) inFIG. 6 . -
FIG. 6 illustrates a case where the first partial program and the second partial program are used. Alternatively, the first partial program may be replaced by the first program, and the second partial program may be replaced by the second program; thus, the first program and the second program can be described in a similar manner. - Next, with reference to
FIG. 5 , the providing process performed byprovider 222 will be described. - When
ECU 230 has accessedvirtual storage 260 whileupdate controller 221 is updating the first program,provider 222 provides a new second program toECU 230 by performing any one of the three processes described below in accordance with the update state of firstpartial areas 251 to 255 having been accessed. In other words, updatecontroller 221 performs different processes in accordance with the three update states (after the updating process, during the updating process, before the updating process). - (1) When the area accessed is first
partial area 251 that has been subjected to the updating process (the update has been completed),provider 222 providesECU 230 with the second partial program stored in this firstpartial area 251. In this case, since the program stored in accessed firstpartial area 251 has already been updated to the second partial program,provider 222 providesECU 230 with the updated second partial program stored in firstpartial area 251. - (2) When the area accessed is first
partial area 252 that is being subjected to the updating process,provider 222 generates a second partial program updated from the first partial program by use of the first partial program stored insecond storage area 242 and the partial data, of the data for an update, that corresponds to the stated first partial program. Then,provider 222 providesECU 230 with the generated second partial program. In this case, since the program stored in accessed firstpartial area 252 is presently being subjected to the updating process,provider 222 generates the second partial program by applying the partial data, of the data for an update stored inthird storage area 243, that corresponds to the first partial program to this first partial program that has been relocated tosecond storage area 242 during the updating process. In other words, in the above case,provider 222 generates a second partial program at each instance of access and providesECU 230 with the generated second partial program. - (3) When the area accessed is any one of first
partial areas 253 to 255 that have not been subjected to the updating process,provider 222 generates a second partial program updated from the first partial program by use of the first partial program stored in the accessed first partial area and the partial data, of the data for an update, that corresponds to the stated first partial program. Then,provider 222 providesECU 230 with the generated second partial program. In this case, since the program stored in accessed firstpartial area 251 has not been subjected to the updating process,provider 222 generates the second partial program by applying the partial data, of the data for an update stored inthird storage area 243, that corresponds to the first partial program to this first partial program stored in the accessed first partial area. In other words, in the above case,provider 222 generates the second partial program at each instance of access and providesECU 230 with the generated second partial program. - In this manner,
provider 222 performs a process corresponding to the update state of the accessed first partial area. Therefore,provider 222 can provideECU 230 with an updated second program even during the process of updating the first program to the second program. - In this example,
provider 222 generates the second partial program at each instance of access in (2) and (3) described above, but this is not a limiting example. For example,provider 222 may generate a second partial program at a first instance of access and temporarily hold the generated second partial program instorage 240. Then,provider 222 may provideECU 230 with the temporarily held second partial program at a second or subsequent instance of access. In this case, the processing load can be reduced sinceprovider 222 needs to generate the second partial program only once. - In this example,
provider 222 may determine whether to temporarily hold the second partial program instorage 240 based on the frequency of access byECU 230, for example. In this case,provider 222 may temporarily hold, instorage 240, the number of times each first partial program is accessed byECU 230. Then,provider 222 may temporarily hold the generated second partial program instorage 240 if the number of times each first partial program is accessed has reached a preset number or may refrain from temporarily holding the generated second partial program instorage 240 if the number of times each first partial program is accessed byECU 230 falls below the preset number. - Next, with reference to
FIG. 7 , a first example of a process (a rollback process) of restoring to a pre-update state when the updating process has failed during the updating process performed byupdate controller 221 to update the first program to the second program will be described.FIG. 7 is a diagram for describing a first example of a process to be performed when an updating process has failed. In this example, updatecontroller 221 may hold, instorage 240, the update state of each of the plurality of firstpartial areas 251 to 255. The update state includes three states: after the updating process (the update has been completed), during the update, and before the updating process (the process has not been performed). - When
update controller 221 has failed to update the first partial program in firstpartial area 254 as illustrated in (a) inFIG. 7 , updatecontroller 221 updates the first partial program stored in a given first partial area to the second partial program for each of the plurality of firstpartial areas 251 to 255 as illustrated in (b) in FIG. 7. In other words, even whenupdate controller 221 has failed to update one first partial program, updatecontroller 221 continues to update the first partial programs stored in the first partial areas that have not been processed to the second partial programs. Howupdate controller 221 updates the first partial program is as described with reference toFIG. 5 andFIG. 6 . - Then, after updating the first program to the second program, update
controller 221 updates the second partial program stored in a given first partial area to the first partial program that is a part of the original first program by use of the data for an update stored inthird storage area 243 for each of the plurality of firstpartial areas 251 to 255 obtained by dividingfirst storage area 241 storing the second program.Update controller 221 performs this process in a manner similar to the manner in which updatecontroller 221 updates the first program to the second program. In other words, this process can be described with the first program read as the second program, with the second program read as the first program, with the first partial program read as the second partial program, and with the second partial program read as the first partial program in the description of the control in the updating process performed byupdate controller 221. In this case, the same applies to the description of the providing process performed byprovider 222. - In the above, update
controller 221 updates the second partial program by use of the data for an update stored inthird storage area 243 when updating the second partial program to the original first partial program, but this is not a limiting example. For example, in a case where the data for an update stored inthird storage area 243 is data that cannot be applied to the updating process of restoring the second partial program to the original first partial program or where the amount of processing required in the updating process of restoring the second partial program to the original first partial program is greater than a predetermined amount of processing (for example, the amount or processing required for the updating process of updating the first partial program to the second partial program),update controller 221 may perform the updating process of restoring the second partial program to the original first partial program by use of new data for an update. In this case, updatecontroller 221 obtains, from an external device, new data for an update for the updating process of restoring the second partial program to the original first partial program. - Next, with reference to
FIG. 8 , a second example of a process (a rollback process) of restoring to a pre-update state when the updating process has failed during the updating process performed byupdate controller 221 to update the first program to the second program will be described.FIG. 8 is a diagram for describing a second example of a process to be performed when an updating process has failed. - When
update controller 221 has failed to update the first partial program in firstpartial area 252 as illustrated in (a) inFIG. 8 , updatecontroller 221 updates the second partial program to the first partial program by use of the partial data, of the data for an update, that corresponds to this second partial program after copying the second partial program stored in the first partial area where the update has failed tosecond storage area 242 for each of one or more firstpartial areas 251 that have been updated and firstpartial area 252 where the update has failed.Update controller 221 performs this process in a manner similar to the manner in which updatecontroller 221 updates the first program to the second program. In this case, the same applies to the description of the providing process performed byprovider 222. - Next, a third example of a process (a rollback process) of restoring to a pre-update state when the updating process has failed during the updating process performed by
update controller 221 to update the first program to the second program will be described. The third example is an example in which the process of the first example and the process of the second example are switched depending on the location of the first partial area where the update has failed. - Specifically, when the update has failed while the first program is being updated, update
controller 221 determines whether the first partial area where the update has failed comes before or after specific firstpartial area 253, among the plurality of firstpartial areas 251 to 255, in terms of their processing order. Then, if the result of the determination indicates that the first partial area where the update has failed comes before specific firstpartial area 253 in terms of the processing order, updatecontroller 221 performs the process of the second example described with reference toFIG. 8 . Meanwhile, if the result of the determination indicates that the first partial area where the update has failed comes after specific firstpartial area 253 in terms of the processing order, updatecontroller 221 performs the process of the first example described with reference toFIG. 7 . - In this example, if the result of the determination indicates that the first partial area where the update has failed is specific first
partial area 253 in terms of the processing order, updatecontroller 221 may perform the process of the first example or the process of the second example. In this case, whetherupdate controller 221 performs the process of the first example or the process of the second example may be determined in advance, and updatecontroller 221 performs the predetermined one of the process of the first example and the process of the second example. In the above example, the specific first partial area is firstpartial area 253 among the plurality of firstpartial areas 251 to 255, but the specific first partial area is not limited to firstpartial area 253. The specific first partial area may be any predetermined first partial area among the plurality of first partial areas. - An operation of
information processing device 210 configured as described above will now be described. - First, the updating process will be described.
FIG. 9 is a flowchart illustrating an example of an updating process performed byinformation processing device 210 according to an embodiment. -
Managing ECU 220 determines whether managingECU 220 has obtained data for an update (S11). - If managing
ECU 220 has determined that managingECU 220 has obtained the data for an update (Yes at S11), managingECU 220 performsloop 1 including step S12 and step S13 described below for each of the plurality of firstpartial areas 251 to 255. Meanwhile, if managingECU 220 has determined that managingECU 220 has not obtained the data for an update (No at S11), the process returns to step S11. -
Managing ECU 220 copies a first partial program stored in a first partial area to be processed to second storage area 242 (S12). -
Managing ECU 220 updates the first partial program stored in the first partial area to be processed to a second partial program by use of partial data, of the data for an update, that corresponds to this first partial program (S13). -
Managing ECU 220 executes step S12 and step S13 for each of firstpartial areas 251 to 255 and then terminates the process. Next, the providing process will be described.FIG. 10 is a flowchart illustrating an example of a providing process performed byinformation processing device 210 according to an embodiment. -
Managing ECU 220 determines whetherECU 230 has accessed virtual storage 260 (S21). - If managing
ECU 220 has determined thatECU 230 has accessed virtual storage 260 (Yes at S21), managingECU 220 determines the update state of the first partial area that has been accessed (S22). If managingECU 220 has determined thatECU 230 has not accessed virtual storage 260 (No at S21), the process returns to step S21. - If the update state of the first partial area that has been accessed indicates that the updating process has been performed (the update has been completed) (Update complete at S22), managing
ECU 220 performs step S23. If the update state of the first partial area that has been accessed indicates that the first partial area is presently being updated (During update at S22), managingECU 220 performs step S24. If the update state of the first partial area that has been accessed indicates that the first partial area has not yet been updated (the update has not been performed) (Before update at S22), managingECU 220 performs step S26. - At step S23, managing
ECU 220 providesECU 230 with the second partial program stored in the first partial area that has been accessed (S23). - At step S24, managing
ECU 220 generates a second partial program by use of a first partial program stored insecond storage area 242 and the difference data corresponding to this first partial program (S24). Then, managingECU 220 provides the generated second partial program to ECU 230 (S25). - At step S26, managing
ECU 220 generates a second partial program by use of a first partial program stored in the first partial area that has been accessed and the difference data corresponding to this first partial program (S26). Then, managingECU 220 provides the generated second partial program to ECU 230 (S27). Next, a first example of a process (a rollback process) of restoring to a pre-update state when the updating process has failed will be described.FIG. 11 is a flowchart illustrating a first example of a rollback process performed byinformation processing device 210 according to an embodiment. -
Managing ECU 220 determines whether the update has failed during the updating process (S31). For example, managingECU 220 determines that the update has failed in the process at step S31, for example but not limited to, if the data for an update becomes damaged, if a non-writable area arises due to a physical deterioration or the like ofstorage 240, or if an anomalous interruption occurs during the updating process.Managing ECU 220 can determine that the data for an update has become damaged, for example, if managingECU 220 has failed to obtain the data for an update fromstorage 240 or if managingECU 220 has failed to apply the data for an update to the updating process.Managing ECU 220 can determine that a non-writable area has arisen due to a physical deterioration or the like ofstorage 240, for example, if an error is detected during the updating process.Managing ECU 220 can determine that an anomalous interruption has occurred during the updating process, for example, if an error is detected during the updating process or if the program content that has been written after the updating process has resumed is confirmed. - In this example, managing
ECU 220 may fail to update in the following cases, for example. The cases where managingECU 220 may fail to update include, for example, a case where an unexpected power shutoff occurs while the data for an update is being received, a case where a non-writable area arises due to a physical deterioration or the like ofstorage 23, a case where a pre-error check access occurs to a non-writable area, or a case where the processing load exceeds a predetermined load. - If managing
ECU 220 has determined that the update has failed during the updating process described with reference toFIG. 9 (Yes at S31), managingECU 220 determines whether there is a first partial area that is in the updating process (S32). Meanwhile, if managingECU 220 has determined that the update has not failed during the updating process (No at S31), the process returns to step S31. In this case, the updating process described with reference toFIG. 9 is continued. - If managing
ECU 220 has determined that there is a first partial area that is in the updating process (Yes at S32), managingECU 220 stores the first partial program stored insecond storage area 242 into the first partial area that is in the updating process (S33). If a write failure or the like into the area being updated has occurred, there is a possibility that it is unable to determine whether the data present in the first partial area has not been updated or has been updated or that the data is damaged. Therefore, performing the process at step S32 and step S33 makes it possible to roll back the area being updated reliably to the first partial program, and the processes that follow can be performed reliably. - If managing
ECU 220 has determined that there is no first partial area that is in the updating process (No at S32) or after managingECU 220 has performed step S33, managingECU 220 determines whether there is a first partial area that has not be subjected to the updating process (the process has not been performed) (S34). - If managing
ECU 220 has determined that there is a first partial area that has not been subjected to the updating process (Yes at S34), managingECU 220 performsloop 2 including step S35 and step S36 described below for each of the first partial areas that have not been subjected to the updating process. -
Managing ECU 220 copies the first partial program stored in the first partial area to be processed to second storage area 242 (S35). -
Managing ECU 220 updates the first partial program stored in the first partial area to be processed to a second partial program by use of partial data, of the data for an update, that corresponds to the stated first partial program (S36). - If managing
ECU 220 has determined that there is no first partial area that has not been subjected to the updating process (No at S34) or if step S35 and step S36 have been executed on all of the first partial areas that have not been subjected to the updating process, managingECU 220 performsloop 3 including step S37 and step S38 for each of all firstpartial areas 251 to 255 that have been subjected to the updating process. -
Managing ECU 220 copies the second partial program stored in the first partial area to be processed to second storage area 242 (S37). -
Managing ECU 220 updates the second partial program stored in the first partial area to be processed to a first partial program by use of partial data, of the data for an update, that corresponds to the stated second partial program (S38). -
Managing ECU 220 executes step S37 and step S38 for each of firstpartial areas 251 to 255 and then terminates the process. - With this process, even when the update from the first program to the second program has failed during the updating process, the state in which the first program is stored in
first storage area 241 can be restored. - Next, a second example of a process (a rollback process) of restoring to a pre-update state when the updating process has failed will be described.
FIG. 12 is a flowchart illustrating a second example of a rollback process performed byinformation processing device 210 according to an embodiment. -
Managing ECU 220 performs the processes that are identical to the processes at step S31 to step S33. - If managing
ECU 220 has determined that there is no first partial area that is in the updating process (No at S32) or after step S33, managingECU 220 performsloop 4 including step S41 and step S42 described below for each of the one or more first partial areas that have been updated and any first partial area where the update has failed. -
Managing ECU 220 copies the second partial program stored in the first partial area to be processed to second storage area 242 (S41). -
Managing ECU 220 updates the second partial program stored in the second partial area to be processed to a first partial program by use of partial data, of the data for an update, that corresponds to this second partial program (S42). -
Managing ECU 220 executes step S41 and step S42 for all the first partial areas that have been updated and any first partial area where the update has failed and then terminates the process. - With this process, even when the update from the first program to the second program has failed during the updating process, the state in which the first program is stored in
first storage area 241 can be restored. - Next, a third example of a process (a rollback process) of restoring to a pre-update state when the updating process has failed will be described.
FIG. 13 is a flowchart illustrating a third example of a rollback process performed byinformation processing device 210 according to an embodiment. -
Managing ECU 220 performs the processes that are identical to the processes at step S31 to step S33. - If managing
ECU 220 has determined that there is no first partial area that is in the updating process (No at S32) or after step S33, managingECU 220 determines whether the first partial area where the update has failed comes before or after specific firstpartial area 253 of the plurality of firstpartial areas 251 to 255 in terms of their processing order (S51). - If managing
ECU 220 has determined that the first partial area where the update has failed comes before specific firstpartial area 253 of the plurality of firstpartial areas 251 to 255 in terms of their processing order (Before at S51), managingECU 220 performsloop 4 including step S41 and step S42 described below for each of the one or more first partial areas that have been updated and any first partial area where the update has failed.Loop 4 has been described above with reference toFIG. 12 , and thus descriptions thereof will be omitted. - If managing
ECU 220 has determined that the first partial area where the update has failed comes after specific firstpartial area 253 of the plurality of firstpartial areas 251 to 255 in terms of their processing order (After at S51), managingECU 220 performs the processes identical to the processes at step S34 to step S38. - With this process, even when the update from the first program to the second program has failed during the updating process, the process can be modified in accordance with the location of the first partial area where the update has failed, and thus the time required for the process can be reduced.
- With
information processing device 210 according to the present embodiment, a first partial program stored in a first partial area to be subjected to an updating process is copied tosecond storage area 242 to relocate the first partial program, and then the first partial program stored in this first partial area is updated to a second partial program. Therefore, even in a case where the first partial area is accessed during the updating process, the relocated first partial program can be used instead of the first partial program that is in the updating process, and the program can be provided to the accessing device. Moreover, the data used for an update is difference information, and the program to be relocated is a first partial program, or a part of the first program. Therefore, the amount of data used in the storage when updating the program can be reduced. - In addition,
information processing device 210 according to the present embodiment includesECU 230 and managingECU 220 that includesupdate controller 221 andprovider 222 that providesECU 230 withstorage 240 asvirtual storage 260, and the first program is a program to be executed whenECU 230 starts. In other words, the first program thatECU 230 executes is stored invirtual storage 260 provided by managingECU 220, and the program forECU 230 can be updated without involvingECU 230. Therefore, the program forECU 230 to be updated can be updated without affecting an operation ofECU 230. - In addition, in
information processing device 210 according to the present embodiment, the difference information includes items of difference data indicating a difference or differences between a plurality of first data units constituting the first program and a plurality of second data units constituting the second program. The difference information also includes correspondence relationship information for identifying a first data unit and a second data unit that correspond to the stated difference data for each of the items of difference data. Therefore, a first data unit to which the difference data is to be applied can be identified with ease. Accordingly, the processing load related to the process of generating the second partial program and the processing time related to this generating process can be reduced. - According to the foregoing embodiment, managing
ECU 220 andECU 230 are each implemented by any one ofn ECUs 22, but this is not a limiting example. Alternatively, managingECU 220 andECU 230 may each be implemented by one or more processors and a memory or a storage storing a program for implementing a virtualization environment. -
FIG. 14 is a block diagram illustrating an example of a functional configuration ofinformation processing device 210A according toVariation 1.FIG. 15 is a diagram illustrating a configuration of a virtual machine that implements the functions ofinformation processing device 210A according toVariation 1. - As illustrated in
FIG. 14 ,information processing device 210A includes managing virtual machine (VM) 220A, a plurality of virtual machines (VMs) 230Aa and 230Ab, and sharedmemory 250. As illustrated inFIG. 15 ,information processing device 210A includes a virtual machine implemented virtually by software on one or more hardware devices. For example,information processing device 210A is implemented by a hypervisor virtualization environment. ManagingVM 220A is equipped with functions similar to the functions of managingECU 220 according to the embodiment. The plurality of VMs 230Aa and 230Ab are each equipped with functions similar to the functions ofECU 230 according to the embodiment. - Shared
memory 250 provides a storage area via a virtual storage function. In this manner, the storage area of the program for each VM is implemented by sharedmemory 250, and thus information can be exchanged between managingVM 220A and VMs 230Aa and 230Ab at a high speed. - According to the foregoing embodiment,
automobile 200 serves as an example of the mobile body. The mobile body, however, is not limited toautomobile 200 and may be any other means of transportation, an unmanned vehicle, or a flying body such as a drone. Moreover,information processing device 210 is not limited to a computer system provided in the mobile body, for example, and may be applied to any computer system that includes a plurality of controllers. - In the foregoing embodiment and
Variations - Specifically, this program causes a computer to execute an information processing method to be executed by an information processing device that includes a storage in which a first program is stored, and the information processing method includes obtaining data for updating the first program from an external device and updating the first program to a second program by use of the data obtained. The updating includes, for each of a plurality of first partial areas obtained by dividing a first storage area that is a storage area of the storage in which the first program is stored, copying a first partial program that is a part of the first program and that is stored in the first partial area to a second storage area different from the first storage area and then successively updating the first partial program to a second partial program that is a part of the second program by use of partial data of the data, the partial data corresponding to the first partial program. The data is difference information indicating a difference between the first program and the second program. The second storage area has a storage capacity smaller than a storage capacity of the first storage area.
- Thus far, an embodiment has been described to illustrate the techniques according to the present disclosure. The appended drawings and the detailed description are provided for that purpose.
- Therefore, the constituent elements illustrated in the appended drawings and the detailed description may include not only the constituent elements that are essential for solving the problem but also constituent elements that are for illustrating the technique and are not essential for solving the problem. Hence, that these components that are not essential are illustrated in the appended drawings and the detailed description should not immediately give any authorization that these non-essential components are to be considered to be essential.
- Since the foregoing embodiment is merely for illustrating the techniques according to the present disclosure, various modifications, substitutions, additions, omissions, and so on can be made within the scope of the claims and equivalents thereof.
- The disclosures of the following patent applications including specification, drawings, and claims are incorporated herein by reference in their entirety: Japanese Patent Application No.
- 2020-014785 filed on Jan. 31, 2020, and PCT International Application No. PCT/JP2021/000757 filed on Jan. 13, 2021.
- The present disclosure can be applied to an information processing device and so on that can update a program for a controller to be updated without affecting this controller.
Claims (8)
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020014785A JP7266216B2 (en) | 2020-01-31 | 2020-01-31 | Information processing device and information processing method |
JP2020-014785 | 2020-01-31 | ||
PCT/JP2021/000757 WO2021153224A1 (en) | 2020-01-31 | 2021-01-13 | Information processing device and information processing method |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2021/000757 Continuation WO2021153224A1 (en) | 2020-01-31 | 2021-01-13 | Information processing device and information processing method |
Publications (2)
Publication Number | Publication Date |
---|---|
US20220121440A1 true US20220121440A1 (en) | 2022-04-21 |
US11886869B2 US11886869B2 (en) | 2024-01-30 |
Family
ID=77078787
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/563,833 Active 2041-05-21 US11886869B2 (en) | 2020-01-31 | 2021-12-28 | Information processing device and information processing method for updating a program by partially relocating the program |
Country Status (4)
Country | Link |
---|---|
US (1) | US11886869B2 (en) |
JP (1) | JP7266216B2 (en) |
DE (1) | DE112021000801T5 (en) |
WO (1) | WO2021153224A1 (en) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060075276A1 (en) * | 2004-09-30 | 2006-04-06 | Mukesh Kataria | Self-monitoring and updating of firmware over a network |
US20060206537A1 (en) * | 2002-09-30 | 2006-09-14 | Chiang Ying-Hsin R | Updating electronic files using byte-level file differencing and updating algorithms |
US20180349129A1 (en) * | 2017-06-01 | 2018-12-06 | Electronics And Telecommunications Research Institute | Apparatus for supporting firmware update and method for the same |
US10452386B1 (en) * | 2018-07-19 | 2019-10-22 | American Megatrends International, Llc | Non-destructive update of discrete components of firmware |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS4856580U (en) | 1971-11-01 | 1973-07-19 | ||
JPH0511740Y2 (en) | 1987-09-18 | 1993-03-24 | ||
US20060259207A1 (en) | 2005-04-20 | 2006-11-16 | Denso Corporation | Electronic control system for automobile |
JP4548601B2 (en) | 2005-04-20 | 2010-09-22 | 株式会社デンソー | Automotive control unit |
US7802245B2 (en) | 2006-04-27 | 2010-09-21 | Agere Systems Inc. | Methods and apparatus for performing in-service upgrade of software in network processor |
JP5349104B2 (en) | 2009-03-25 | 2013-11-20 | 富士通株式会社 | Electronic device and program update method |
JP2014115927A (en) | 2012-12-12 | 2014-06-26 | Sharp Corp | Program update device, method, program, and recording medium |
JP5966995B2 (en) | 2013-03-27 | 2016-08-10 | 株式会社デンソー | Electronic control device for vehicle and control program |
JP6170021B2 (en) | 2014-07-31 | 2017-07-26 | 京セラドキュメントソリューションズ株式会社 | Information processing device |
JP6386302B2 (en) | 2014-08-29 | 2018-09-05 | 株式会社スクウェア・エニックス | Patch application system, patch application program, patch providing apparatus, and patch application method |
JP6447469B2 (en) | 2015-11-23 | 2019-01-09 | 株式会社デンソー | Rewriting system |
JP6361671B2 (en) | 2016-03-02 | 2018-07-25 | 住友電気工業株式会社 | Program update system, program update method, relay device, and computer program |
JP6699324B2 (en) | 2016-04-26 | 2020-05-27 | 株式会社デンソー | Electronic control device and data rewriting system |
JP6571602B2 (en) | 2016-07-26 | 2019-09-04 | 日立オートモティブシステムズ株式会社 | Vehicle control device, in-vehicle network system |
JP2018197993A (en) | 2017-05-24 | 2018-12-13 | シャープ株式会社 | Terminal device, server device, control program for terminal device, control method for server device, and system |
JP6984203B2 (en) | 2017-07-13 | 2021-12-17 | 株式会社デンソー | Electronic control device and update software distribution system |
JP7087334B2 (en) | 2017-10-13 | 2022-06-21 | 株式会社デンソー | Electronic control device |
JP7013918B2 (en) * | 2018-02-16 | 2022-02-01 | トヨタ自動車株式会社 | Vehicle control device, program update method and program |
-
2020
- 2020-01-31 JP JP2020014785A patent/JP7266216B2/en active Active
-
2021
- 2021-01-13 DE DE112021000801.3T patent/DE112021000801T5/en active Pending
- 2021-01-13 WO PCT/JP2021/000757 patent/WO2021153224A1/en active Application Filing
- 2021-12-28 US US17/563,833 patent/US11886869B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060206537A1 (en) * | 2002-09-30 | 2006-09-14 | Chiang Ying-Hsin R | Updating electronic files using byte-level file differencing and updating algorithms |
US20060075276A1 (en) * | 2004-09-30 | 2006-04-06 | Mukesh Kataria | Self-monitoring and updating of firmware over a network |
US20180349129A1 (en) * | 2017-06-01 | 2018-12-06 | Electronics And Telecommunications Research Institute | Apparatus for supporting firmware update and method for the same |
US10452386B1 (en) * | 2018-07-19 | 2019-10-22 | American Megatrends International, Llc | Non-destructive update of discrete components of firmware |
Also Published As
Publication number | Publication date |
---|---|
JP7266216B2 (en) | 2023-04-28 |
DE112021000801T5 (en) | 2022-12-22 |
US11886869B2 (en) | 2024-01-30 |
WO2021153224A1 (en) | 2021-08-05 |
JP2021121894A (en) | 2021-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108628765B (en) | Method and device for realizing Cache in open-source distributed storage software Ceph | |
CN110764486B (en) | Method and device for operating vehicle-mounted controller, vehicle-mounted controller and storage medium | |
US10942811B2 (en) | Data processing method for solid state drive | |
CN109189480B (en) | File system starting method and device | |
CN103019847B (en) | To the method and system that virtual-machine data is moved | |
CN116737466B (en) | Backup processing method, device, system, electronic equipment and readable storage medium | |
US11886869B2 (en) | Information processing device and information processing method for updating a program by partially relocating the program | |
CN110941516B (en) | Operating system restoration method, device, equipment and storage medium | |
US9372700B2 (en) | Network boot system | |
JP2022184735A (en) | Program starting method and device, and storage medium | |
CN114372282A (en) | File access control method, file access control device, electronic device, medium, and program product | |
CN114138191B (en) | Storage pool data verification method, system, equipment and medium | |
CN113190244A (en) | Method and device for upgrading wireless module, computer equipment and storage medium | |
US20060117213A1 (en) | Efficient maintenance of memory list | |
US20140075092A1 (en) | Simulating eeprom in virtual distributed switches | |
US9773562B2 (en) | Storage apparatus, flash memory control apparatus, and program | |
CN110943871B (en) | Resource interval adjusting method and device | |
CN110865771B (en) | Data storage method and device | |
TWI839587B (en) | Method and device for managing software updates , and non-transitory computer readable storage medium | |
US20230185564A1 (en) | Control device and management method | |
JP7461755B2 (en) | Information processing device, program update system, and program update method | |
CN116431164A (en) | Application installation method and device, electronic equipment and storage medium | |
CN117827253A (en) | Method, device, equipment and storage medium for updating embedded equipment | |
CN114968297A (en) | OTA (over the air) upgrading method, electronic equipment and chip system | |
CN117812095A (en) | Method, device, equipment and medium for detecting multi-data duplicate data consistency |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
AS | Assignment |
Owner name: PANASONIC INTELLECTUAL PROPERTY MANAGEMENT CO., LTD., JAPAN Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:TAMANO, HIROKAZU;KAMITSUJI, TAKAHIKO;MATSUDA, DAIKI;SIGNING DATES FROM 20211124 TO 20211130;REEL/FRAME:059738/0261 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT RECEIVED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: PANASONIC AUTOMOTIVE SYSTEMS CO., LTD., JAPAN Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:PANASONIC INTELLECTUAL PROPERTY MANAGEMENT CO., LTD.;REEL/FRAME:066709/0702 Effective date: 20240207 |