WO2024252794A1 - ソフトウェア提供装置及びソフトウェア更新装置 - Google Patents

ソフトウェア提供装置及びソフトウェア更新装置 Download PDF

Info

Publication number
WO2024252794A1
WO2024252794A1 PCT/JP2024/015103 JP2024015103W WO2024252794A1 WO 2024252794 A1 WO2024252794 A1 WO 2024252794A1 JP 2024015103 W JP2024015103 W JP 2024015103W WO 2024252794 A1 WO2024252794 A1 WO 2024252794A1
Authority
WO
WIPO (PCT)
Prior art keywords
software
data
sector
difference
information
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.)
Ceased
Application number
PCT/JP2024/015103
Other languages
English (en)
French (fr)
Inventor
幸男 柳澤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Denso Corp
Original Assignee
Denso Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Denso Corp filed Critical Denso Corp
Priority to CN202480037570.XA priority Critical patent/CN121263777A/zh
Publication of WO2024252794A1 publication Critical patent/WO2024252794A1/ja
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories

Definitions

  • This application relates to a software providing device that provides differential update information to a software update device, which is an electronic control device, primarily for updating the software of an on-board electronic control device, a software update device that updates software using the received differential update information, a method executed by these devices, and a program executable by these devices.
  • Automobiles are equipped with various electronic control devices that are connected via an in-vehicle network.
  • autonomous driving technology the functions required of automobiles are becoming more complex, and the number of electronic control devices installed in automobiles is increasing.
  • Each electronic control unit is equipped with software that enables it to perform its functions. Software updates are performed to improve the functions of the electronic control unit and to repair software vulnerabilities.
  • the present inventors have found the following problem as a result of detailed investigation.
  • the old software When writing software to a flash memory in an electronic control unit, even if there is no update from the old software in the sector that records the version information, the old software must be temporarily saved in order to write the version information.
  • the content of the processing differs depending on whether or not there is differential data, but when the electronic control unit determines the presence or absence of differential data to be applied to the sector that records the version information, the processing burden becomes heavy for an in-vehicle electronic control unit with limited resources.
  • processing is to proceed without the electronic control device determining whether or not there is differential data to be applied to the sector in which the version information is recorded, in the sector in which the version information is recorded, in either the case where there is no update from the old software or the case where the software is updated to the new software, it is necessary to temporarily back up the old or new software in order to record the version information, and then erase the sector; particularly when updating to the new software, this requires two erase operations.
  • the present disclosure therefore aims to realize a software providing device or the like that reduces the processing burden on an in-vehicle electronic control device.
  • a software providing device is a software providing device that provides differential update information for old software stored in a flash memory that can be erased in sector units in a software updating device mounted on a mobile body, and includes a differential data acquisition unit that acquires differential data that is the difference between new software and the old software, a differential application position information acquisition unit that acquires differential application position information that indicates a first sector to which the differential data is applied, a related data acquisition unit that acquires related data that is data related to the new software, a related data position information acquisition unit that acquires related data position information that indicates a second sector in which the related data is stored, a flag information generation unit that generates flag information indicating whether the differential data is applied to the second sector based on the differential application position information and the related data position information, and a transmission unit that transmits the differential data, the differential application position information, the related data, and the flag information to the software updating device as the differential update information.
  • a software update device is a software update device mounted on a mobile body, which receives differential update information from a software provision device and uses the differential update information to update old software stored in a flash memory that can be erased on a sector-by-sector basis, the software provision device including a differential data acquisition unit that acquires differential data, which is the difference between new software and the old software, a differential application position information acquisition unit that acquires differential application position information indicating a first sector to which the differential data is applied, a related data acquisition unit that acquires related data, which is data related to the new software, a related data position information acquisition unit that acquires related data position information indicating a second sector in which the related data is stored, a flag information generation unit that generates flag information indicating whether the differential data is applied to the second sector based on the differential application position information and the related data position information, and ....
  • the software update device having a receiving unit that receives the difference update information, a software update unit that updates the old software of the first sector using the difference data and the difference application position information included in the difference update information, and a related information recording unit that writes the related data to the second sector using the flag information included in the difference update information, the related information recording unit writing the related data to the second sector when the flag information indicates that the difference data is applied to the second sector, and saving the old software written to the second sector and erasing the second sector when the flag information indicates that the difference data is not applied to the second sector, and writing the saved old software and the related data to the second sector.
  • the software providing device generates flag information indicating whether or not differential data is applied to the second sector based on the difference application position information and related data position information, and transmits this to the software updating device. Therefore, there is no need for the software updating device to determine whether or not differential data is applied to the second sector, and the processing burden on the software updating device can be reduced. Also, the erase operation for each sector can be performed at most once.
  • FIG. 1 is a diagram for explaining the positional relationship between a software providing device and a software updating device.
  • FIG. 2 is a diagram illustrating an example of the configuration of an electronic control system S.
  • FIG. 3 is a diagram showing an overview of an update operation of the software update device according to the first embodiment;
  • FIG. 4 is a diagram showing an overview of an update operation of the software update device according to the first embodiment;
  • FIG. 5 is a block diagram illustrating a configuration of a software providing device according to the first embodiment;
  • FIG. 6 is a diagram illustrating a specific example of flash memory information held by the software providing apparatus of the first embodiment;
  • FIG. 7 is a block diagram illustrating a configuration of a software updating device according to the first embodiment;
  • FIG. 1 is a diagram for explaining the positional relationship between a software providing device and a software updating device.
  • FIG. 2 is a diagram illustrating an example of the configuration of an electronic control system S.
  • FIG. 3 is a diagram showing an overview of an update operation
  • FIG. 8 is a main routine flow diagram illustrating the operation of the software providing device of the first embodiment.
  • FIG. 9 is a subroutine flow diagram illustrating an operation of a related data location information acquisition unit of the software providing device according to the first embodiment;
  • FIG. 10 is a subroutine flow diagram illustrating the operation of the flag information generating unit of the software providing apparatus according to the first embodiment;
  • FIG. 11 is a main routine flow diagram for explaining the operation of the software updating device of the first embodiment.
  • Configurations and methods described in the dependent claims are optional configurations and methods in the invention described in the independent claims.
  • Configurations and methods of the embodiments that correspond to the configurations and methods described in the dependent claims, as well as configurations and methods described only in the embodiments without being described in the claims, are optional configurations and methods in the present invention.
  • Configurations and methods described in the embodiments when the description of the claims is broader than the description of the embodiments are also optional configurations and methods in the present invention, in the sense that they are examples of the configurations and methods of the present invention. In either case, by being described in the independent claims, they become essential configurations and methods of the present invention.
  • the configurations disclosed in each embodiment are not exclusive to each embodiment, but can be combined across the embodiments.
  • a configuration disclosed in one embodiment may be combined with another embodiment.
  • the configurations disclosed in each of the multiple embodiments may be collected and combined.
  • the software providing device 100 is a device that provides software to a software updating device 200 which is at least one of the electronic control units (Electric Control Units) 20 (hereinafter, abbreviated as ECUs 20) that constitute the electronic control system S.
  • the software updating device 200 is a device that receives software provided by the software providing device 100 and updates the old software stored in a flash memory with the new software.
  • the software providing device 100 is a server device provided outside a vehicle, which is a "mobile body," and the software providing device 100 and the electronic control system S are connected via a wireless communication method.
  • wireless communication methods include IEEE 802.11 (Wi-Fi (registered trademark)), IEEE 802.16 (WiMAX (registered trademark)), W-CDMA (Wideband Code Division Multiple Access), HSPA (High Speed Packet Access), LTE (Long Term Evolution), LTE-A (Long Term Evolution Advanced), or 4G, 5G, etc.
  • DSRC Dedicated Short Range Communication
  • the software providing device 100 is an external connection device provided outside the vehicle, which is a "mobile body", such as a diagnostic tool, a personal computer, or a smartphone, and the software providing device 100 and the electronic control system S are connected by a wired communication method or a wireless communication method.
  • wired communication methods include Ethernet (registered trademark) and USB.
  • wireless communication methods include the above-mentioned examples as well as Bluetooth (registered trademark) and infrared communication.
  • the software providing device 100 is a device “mounted” on a vehicle, which is a "mobile body", and the software providing device 100 and the software updating device 200 are connected via a wired communication method or a wireless communication method.
  • wired communication methods include the above-mentioned wired communication methods as well as in-vehicle communication networks such as CAN (Controller Area Network) and LIN (Local Interconnect Network). Examples of wireless communication methods are as described above.
  • Mobile object refers to an object that can move, and can move at any speed. It also includes cases where the mobile object is stationary. Examples of the mobile object include, but are not limited to, automobiles, motorcycles, bicycles, pedestrians, ships, aircraft, and objects mounted on these objects. "Mounted” includes not only the case where the device is directly fixed to the moving body, but also the case where the device is not fixed to the moving body but moves with the moving body, such as the case where the device is carried by a person riding on the moving body, or the case where the device is mounted on cargo placed on the moving body.
  • FIG. 2 is a diagram showing an example of the configuration of an electronic control system S mounted on a vehicle.
  • the electronic control system S is composed of a plurality of ECUs 20 and an in-vehicle network (NW1 to NW3) connecting the ECUs.
  • Fig. 2 shows eight ECUs (ECU 20a to ECU 20h) as an example, but the electronic control system S is naturally composed of any number of ECUs.
  • the ECU 20 or each ECU 20 will be used to comprehensively describe a single or multiple electronic control devices as a whole, and the ECU 20a, ECU 20b, ECU 20c, ... will be used to specifically describe each electronic control device.
  • a connection refers to a state in which data can be exchanged, and includes not only cases in which different hardware is connected via a wired or wireless communication network, but also cases in which virtual machines realized on the same hardware are virtually connected to each other.
  • the electronic control system S shown in FIG. 2 includes an integrated ECU 20a, an external communication ECU 20b, zone ECUs (20c, 20d), and individual ECUs (20e to 20h).
  • the integrated ECU 20a is an ECU that has the function of controlling the entire electronic control system S, and also has a gateway function that mediates communication between each ECU 20.
  • the integrated ECU 20a is sometimes called a gateway ECU (G-ECU) or a mobility computer (MC).
  • G-ECU gateway ECU
  • MC mobility computer
  • the integrated ECU 20a may also be a relay device or a gateway device.
  • the external communication ECU 20b is an ECU having a communication module that communicates with a server device or an external connection device provided outside the vehicle.
  • the communication method used by the external communication ECU 20b is the wireless communication method or the wired communication method described in the description of FIG.
  • a plurality of external communication ECUs 20b may be provided.
  • the integrated ECU 20a may include the function of the external communication ECU 20b.
  • the zone ECUs (20c, 20d) are ECUs equipped with a gateway function that is appropriately arranged according to the location and function of the individual ECUs.
  • the zone ECU 20c is an ECU with a gateway function that mediates communication between the individual ECUs 20e and 20f arranged at the front of the vehicle and other ECUs
  • the zone ECU 20d is an ECU with a gateway function that mediates communication between the individual ECUs 20g and 20h arranged at the rear of the vehicle and other ECUs 20.
  • the zone ECUs (20c, 20d) are sometimes called domain computers (DC).
  • the individual ECUs 20e and 20f are connected to the zone ECU 20c via network 2 (NW2), and the individual ECUs 20g and 20h are connected to the zone ECU 20d via network 3 (NW3).
  • the individual ECUs (20e to 20h) can be configured with any ECU with any function. Examples include drive system electronic control devices that control the engine, steering, brakes, etc., vehicle body electronic control devices that control meters and power windows, information system electronic control devices such as navigation devices, and safety control system electronic control devices that perform control to prevent collisions with obstacles and pedestrians. Furthermore, the ECUs may not be parallel, but may be classified as master and slave.
  • Each ECU 20 may be a physically independent electronic control device, or a virtualized electronic control device realized using virtualization technology. If each ECU 20 is realized on different hardware, it is sufficient that they are connected via a wired or wireless communication method, and if multiple virtualized electronic control devices are realized on the same hardware, it is sufficient that the virtualized electronic control devices are virtually connected to each other.
  • the software providing device 100 in each embodiment only needs to have the function of providing software to other devices, and as explained in FIG. 1, may be a device either inside or outside the electronic control system S.
  • the software providing device 100 corresponds to a server device in FIG. 1(a), an externally connected device in FIG. 1(b), and, for example, the integrated ECU 20a of the electronic control system S in FIG. 1(c).
  • FIG. 1(c) another ECU 20 may function as the software providing device 100.
  • the software update device 200 in each embodiment may be any ECU 20 constituting the electronic control system S as long as it is a device that receives software provided thereto.
  • the software providing device 100 and the software updating device 200 of each embodiment will be described below in that order.
  • Embodiment 1 (1) Overview of Software Update Operation Using Difference Data Before describing the configurations and operations of the software providing device 100 and the software updating device 200 of this embodiment, an overview of the software update operation using difference data will be described.
  • 3 and 4 are diagrams showing an update operation in which the software update device 200, having received the difference data, updates the old software stored in the flash memory with the new software.
  • software update device 200 stores old software in flash memory, and stores version information of the old software following the old software (abbreviated as old V information in the figure).
  • old V information in the figure
  • the old software is stored across sector 0, sector 1, and part of sector 2 of the flash memory, and the version information of the old software is stored in the remainder of sector 2.
  • the software updating device 200 receives difference data, which is the difference between the new software and the old software, from the software providing device 100 ([Reception S]).
  • the difference data that is received is generated for each sector, and for example, in Fig. 3, difference information to be applied to sector 0 is received. There is no difference data to be applied to sectors 1 and 2. In other words, the new software does not update the old software in sectors 1 and 2, and the old software is used as is.
  • Software updating device 200 uses the difference data to generate new software for sector 0 from the old software for sector 0 ([Generation S]). Strictly speaking, what is generated is only a part of the new software, but in the following description, when a sector is specified and it is described as new software or old software, this refers to a part of the software.
  • the software updating device 200 erases sector 0 ([Erase S]). Since flash memory allows erasure in sector units, erasure is performed for each sector, which is the smallest unit of erasure. Sectors 1 and 2 are not erased.
  • Software updating device 200 writes the generated new software to sector 0 ([Write S]), and ends the update from the old software to the new software.
  • FIG. 4(a) shows the case where there is no difference data to be applied to sector 2.
  • the software updating device 200 receives version information of the new software (abbreviated as new V information in the drawing) from the software providing device 100 ([Reception S]).
  • the software updating device 200 temporarily saves the old software in sector 2 to a separately provided storage device ([Saving S]).
  • the software updating device 200 erases sector 2 ([Erase S]).
  • the software updating device 200 writes the saved version information of the old software and the new software to sector 2 ([Write S]).
  • FIG. 4B shows the case where there is differential data to be applied to sector 2.
  • the software updating device 200 receives the difference data and the version information of the new software from the software providing device 100 ([Reception S]).
  • the software updating device 200 generates new software for sector 2 from the old software for sector 2 using the difference data ([Generation S]).
  • the software updating device 200 erases sector 2 ([Erase S]).
  • the software updating device 200 writes the new software and version information of the new software to sector 2 ([Write S]).
  • the software update device 200 determines the presence or absence of differential data in the coexisting sector, it is necessary to provide a program required for the determination operation in advance in a ROM or the like. However, particularly when the software update device 200 is mounted on a vehicle with limited resources, it is desirable to reduce the ROM capacity and processing operation as much as possible.
  • the software providing device 100 performs this determination and provides information indicating the determination result to the software updating device 200, which then uses this information to perform software updates. The configurations and operations of the software providing device 100 and the software updating device 200 will be described in detail below.
  • the software providing apparatus 100 has a difference data acquiring unit 101, a difference application position information acquiring unit 102, an associated data acquiring unit 103, an associated data position information acquiring unit 104, a flag information generating unit 105, and a transmitting unit 106.
  • the difference data acquisition unit 101 "acquires" difference data which is the difference between the old software, which is the "software” currently being used in the software update device 200, and the new software, which is the "software” to be newly installed in the software update device 200 in place of the old software.
  • the difference data acquisition unit 101 generates difference data by calculating the difference between new software stored in a new software storage unit of the software providing device 100 and old software stored in an old software storage unit of the software providing device 100. If the software providing device 100 does not have the new software and the old software, it may receive difference data obtained by another device.
  • “Software” includes not only programs but also data.
  • the term “obtain” includes both the case of generating and obtaining by oneself, and the case of receiving and obtaining from another device.
  • the old software storage unit stores the old software and version information of the old software.
  • the new software storage unit stores the new software and version information of the new software.
  • the old software storage unit, the new software storage unit, and the flash memory information storage unit described below may be realized by separate recording devices or by the same recording device.
  • the new software storage unit and the old software storage unit store the start address of the software, the end address of the software, the start address of the version information, and the end address of the version information. It is preferable that each address corresponds to an address in the flash memory of the software update device 200. If each address does not correspond to an address in the flash memory, the address can be converted.
  • the difference application position information acquisition 102 "acquires" difference application position information "indicating" a sector (corresponding to a "first sector") of the flash memory of the software updating device 200 to which the difference data acquired by the difference data acquisition unit 101 is applied.
  • the size of the sector is, for example, 8 KB (kilobytes) or 64 KB.
  • "indicating" a sector includes both direct and indirect indication of the sector, such as a sector number, and a start address of the sector, a start address of the sector and its size, or a start address of the sector and its end address.
  • Fig. 6 is a diagram showing a memory map of the flash memory used in the software updating device 200.
  • the memory map of Fig. 6 is stored as flash memory information in the flash memory information storage unit of the software providing device 100.
  • the memory map stores boundary addresses, which are the boundaries between sectors, and sector numbers. Instead of the boundary addresses and sector numbers, the memory map may store boundary address #0, which is the highest boundary address, boundary address #n+1, which is the lowest boundary address, and the sector size. From this information, the intermediate boundary address can be found.
  • the difference application position information acquisition unit 102 compares, for example, the start address and end address of the difference data acquired by the difference data acquisition unit 101 with the boundary addresses of each sector of the flash memory read from the flash memory information stored in the flash memory information storage unit to determine which sector the difference data is applied to. For example, it determines two boundary addresses of the flash memory corresponding to the start address and end address of the difference data, and sets the sector number of the sector sandwiched between the corresponding two boundary addresses as the difference application position information. If there is no corresponding boundary address of the flash memory, it sets the two boundary addresses that constitute the smallest range among the ranges that include the start address and end address of the difference data as the corresponding boundary addresses. In either case, it may span multiple sectors.
  • the boundary address of the sector may be used as the difference application position information.
  • the boundary address of the sector is used as the difference application position information, only the upper or lower boundary address may be used, or a set of the upper and lower boundary addresses may be used.
  • the related data acquisition unit 103 "acquires" related data that is data related to the new software, that is, in this embodiment, version information of the new software.
  • version information include, but are not limited to, the version number of the new software, the date the new software was created, the date the new software is applied, the creator of the new software, and the software change history.
  • Associated data other than version information includes various parameter information used in the new software, such as, but not limited to, update date and time, updater identifier, update device identifier, and update reason.
  • the related information may be either static information that is uniquely determined for the software, or dynamic information that is not uniquely determined for the software.
  • the related information may be information that is separate from the software.
  • the related data location information acquisition unit 104 "acquires" related data location information that "indicates” the sector (corresponding to the "second sector") of the flash memory of the software update device 200 in which the related data acquired by the related data acquisition unit 103 is stored. For example, the related data position information acquisition unit 104 acquires the start address and end address of the version information of the new software from the new software stored in the new software storage unit. Then, by comparing with the boundary addresses of each sector of the flash memory read from the flash memory information, it determines in which sector the version information of the new software is stored.
  • the related data position information determines between which two boundary addresses of the flash memory the start address and end address of the version information of the new software are located, and the sector number of the sector sandwiched between the corresponding two boundary addresses is taken as the related data position information. If the version information of the new software spans multiple sectors, the related data position information will be information indicating multiple sectors. Since the size of the associated data is smaller than the size of a normal sector, the associated data position information acquired by the associated data position information acquisition unit 104 corresponds to the above-mentioned coexisting sector.
  • the flag information generation unit 105 determines whether the sector indicated by the related data position information (corresponding to the "second sector") matches the sector to which the difference data is applied (corresponding to the "first sector"), and generates "flag information” indicating whether the difference data is applied to the second sector if they match, and whether the difference data is not applied to the second sector if they do not match. That is, as explained in FIG. 4, the flag information generation unit 105 determines whether or not the differential data is applied to a coexisting sector (corresponding to a "second sector”), which is a sector in which both version information and software exist, and generates flag information.
  • the "flag information” is sufficient as long as it is information indicating whether or not the differential data is applied to the second sector, and the format of the information does not matter.
  • the transmission unit 106 transmits the difference data acquired by the difference data acquisition unit 101, the difference application position information acquired by the difference application position information acquisition unit 102, the associated data acquired by the associated data acquisition unit 103, and the flag information generated by the flag information generation unit 105 as difference update information to the software update device 200.
  • the transmission unit 106 may transmit directly to the software update device 200, but typically the information is transmitted to the software update device 200 via various relay devices and each ECU 20 constituting the electronic control system S.
  • the transmitting unit 106 does not transmit the related data position information acquired by the related data position information acquiring unit 104, because the fact that the version information is stored in the last sector or the first sector is shared between the software providing device 100 and the software updating device 200. If the location where the version information is stored is not shared, it is desirable to include the related data position information in the difference update information and transmit it.
  • the software updating device 200 includes a receiving unit 201, a software updating unit 202, and a related information recording unit 203.
  • the software update device 200 is a device “mounted” in a vehicle, which is a "mobile body", and in this embodiment, it is assumed to be, for example, the ECU 20e in FIG.
  • the software update device 200 also has a flash memory for storing the old program, the new program, etc.
  • the flash memory is a non-volatile memory that can be erased in units of "sectors.”
  • the flash memory is preferably a NOR type flash memory that can read and write in units of bytes or words, can be erased in units of sectors, and can directly execute stored software.
  • the flash memory may also be a NAND type flash memory that can read and write in units of pages and can be erased in units of blocks.
  • a "sector" may be any unit of data erasure in a flash memory, and may be called any name such as a block or a page.
  • the receiving unit 201 receives the difference update information from the software providing device 100.
  • the receiving unit 201 may receive the difference update information directly from the software providing device 100, but for example, in this embodiment, when the software update device 200 is an individual ECU 20e as shown in FIG. 2, the receiving unit 201 receives the difference update information via the external communication ECU 20b, the integrated ECU 20a, and the zone ECU 20c.
  • the software update unit 202 uses the difference data and difference application position information contained in the difference update information to update the old software in the sector of the flash memory indicated by the difference application position information (corresponding to the "first sector").
  • the update operation using the difference data and difference application position information is as described with reference to FIG. 3.
  • the related information recording unit 203 uses the flag information included in the differential update information to write the version information of the new software (corresponding to "related data") to the second sector. If the differential update information includes related data position information, the version information of the new software is written to the sector (corresponding to the "second sector") indicated by the related data position information. If the second sector is already known in the software update device 200, the related data position information is not necessary.
  • the related information recording unit 203 refers to the flag information and writes the version information of the new software as follows. First, when the flag information indicates that the differential data is applied to the second sector, the version information of the new software is written to the second sector. In this case, after the second sector is erased once, the version information of the new software is further written to the second sector since the new software generated using the differential data has already been written to the second sector. On the other hand, when the flag information indicates that the differential data is not applied to the second sector, the old software written in the second sector is saved, the second sector is erased, and the version information of the saved old software and new software is written to the second sector. The operation of writing the version information of the new program is as described with reference to FIG.
  • the operations of the software providing device 100 and the software updating device 200 will be described with reference to Figs. 8 to 11.
  • the operations shown in Figs. 8 to 10 not only show a software providing method executed by the software providing device 100, but also show a processing procedure of a software providing program executable by the software providing device 100.
  • the operations shown in Fig. 11 not only show a software updating method executed by the software updating device 200, but also show a processing procedure of a software updating program executable by the software updating device 200.
  • the processes shown here are not limited to the order shown in Figs. 8 to 11. In other words, the order may be changed as long as there is no constraint, such as a relationship in which a certain step utilizes the result of the previous step.
  • FIG. 8 shows the main routine of the software providing device 100 .
  • the difference data acquisition unit 101 of the software providing device 100 acquires difference data, which is the difference between new software and old software (S101).
  • the difference application position information acquisition unit 102 acquires difference application position information indicating the first sector to which the difference data is applied (S102).
  • the related data acquisition unit 103 acquires related data that is data related to the new software (S103).
  • the associated data position information acquisition unit 104 acquires associated data position information indicating the second sector in which the associated data is stored (S104). A specific example of a method for acquiring the associated data position information will be described with reference to FIG.
  • the flag information generating unit 105 generates flag information indicating whether or not the differential data is applied to the second sector based on the differential application position information obtained in S102 and the related data position information obtained in S104 (S105). A specific example of a method for generating flag information will be described with reference to FIG.
  • the transmitting unit 106 transmits the difference data acquired in S101, the difference application position information acquired in S102, the related data acquired in S103, and the flag information generated in S105 as difference update information to the software updating device 200 (S106).
  • FIG. 9 shows a subroutine corresponding to S104 in FIG.
  • a loop of an initial value (0), an end value (N), and an increment (1) is set (S111). It is determined whether the start address of the version information of the new software is within the range of boundary address #N or more and boundary address #N+1 or less (S112). If it is within the range (S112: Yes), sector N (corresponding to the "second sector") is set in the related data location information (S113), and the loop is repeated (S114). If it is outside the range (S112: No), the loop is repeated (S114). In FIG.
  • the determination is made based only on the start address of the version information of the new software, but it may also be determined whether the start address and end address are within a range equal to or greater than boundary address #N and equal to or less than boundary address #N+1. 9, only the range from boundary address #N to boundary address #N+1 is judged, but considering the possibility that the version information of the new software may span multiple sectors, the range from boundary address #N to boundary address #N+a may also be judged.
  • a is an integer constant that is set appropriately according to the size of the version information of the new software. Furthermore, a may be set as a counter to set a loop.
  • FIG. 10 shows a subroutine corresponding to S105 in FIG.
  • the flag information is set to an initial value of 0 (S121).
  • a loop with an initial value of 0, an end value (the number of difference data), and an increment of 1 is set (S122). That is, a loop is set the number of times corresponding to the number of difference data.
  • the difference application position information #i is compared with the related data position information (S122). That is, it is determined whether each of the difference application position information that exists in the number of difference data matches the related data position information.
  • FIG. 11 shows the main routine of the software updating device 200.
  • the receiving section 201 of the software updating device 200 receives the difference update information from the software providing device 100 (S201).
  • S201 As the conditions for the counter N, a loop of an initial value (0), an end value (N), and an increment (1) is set (S202).
  • the software update unit 202 judges whether or not there is differential data in sector N (S203). If there is differential data in sector N (S203: Yes), new software is generated from the old software in sector N and the differential data (S204), sector N is erased (S205), the new software generated in S204 is written to sector N (S206), and the loop is repeated (S207). If there is no differential data in sector N (S203: No), no update is performed on sector N, and the loop is repeated (S207).
  • the related information recording unit 203 determines whether the flag information is 0 or 1 (S208). If the flag information is 0, i.e., if differential data is not applied to the coexisting sector, the old software in the coexisting sector indicated by the related data position information is saved (S209), the coexisting sector is erased (S210), the saved old software is written to the coexisting sector (S211), and the version information of the new software is written to the coexisting sector (S212). If the flag information is 1, i.e., if differential data is applied to the coexisting sector, the version information of the new software is written to the coexisting sector (S212).
  • flag information is generated and transmitted to the software updating device 200, eliminating the need for the software updating device 200 to determine whether or not differential data is applied to coexisting sectors, thereby reducing the processing load on the software updating device 200. For example, since it is not necessary to store a program required for the determination in ROM, the ROM capacity can be reduced as much as possible, and the CPU resources required for the determination can be saved. Furthermore, according to the software providing device 100 of this embodiment, related data location information is further transmitted to the software updating device 200, so that even if the software updating device 200 does not know the location of the coexisting sector, it is possible to properly update the software in the coexisting sector and write version information.
  • the block diagrams used to explain the embodiments classify and organize the device configuration by function.
  • the blocks showing each function are realized by any combination of hardware or software.
  • such block diagrams can also be understood as disclosures of method inventions and program inventions that realize the methods.
  • N is an integer used in each embodiment and in the claims are used to distinguish between two or more configurations or methods of the same type, and do not limit the order or superiority or inferiority.
  • examples of the form of the device of the present disclosure include the following.
  • Examples of the component form include a semiconductor element, an electronic circuit, a module, and a microcomputer.
  • Examples of semi-finished products include an electronic control unit (ECU) and a system board.
  • Finished product forms include mobile phones, smartphones, tablets, personal computers (PCs), workstations, and servers.
  • Other examples include devices with communication functions, such as video cameras, still cameras, and car navigation systems.
  • the present disclosure can be realized not only by dedicated hardware having the configurations and functions described in each embodiment, but also by a combination of a program for realizing the present disclosure recorded on a recording medium such as a memory or hard disk, and general-purpose hardware having a dedicated or general-purpose CPU and memory capable of executing the program.
  • Programs stored in non-transient physical recording media e.g., external storage devices (hard disks, USB memory, CDs/BDs, etc.) or internal storage devices (RAM, ROM, etc.) of dedicated or general-purpose hardware can also be provided to the dedicated or general-purpose hardware via the recording media, or via a communication line from a server without using a recording media. This makes it possible to always provide the latest functions through program upgrades.
  • This disclosure has been described primarily as an on-board software update device installed in automobiles, but it can be applied to any moving object, such as motorcycles, ships, trains, and aircraft. It can also be applied to any product that includes a microcomputer, not just moving objects.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

移動体に搭載されたソフトウェア更新装置のセクタ単位で消去が可能なフラッシュメモリに格納された旧ソフトウェアに対する差分更新情報を提供するソフトウェア提供装置(100)であって、差分データ取得部(101)と、差分データが適用される第1のセクタを示す差分適用位置情報を取得する差分適用位置情報取得部(102)と、新ソフトウェアの関連データを取得する関連データ取得部(103)と、関連データが保存される第2のセクタを示す関連データ位置情報を取得する関連データ位置情報取得部(104)と、差分適用位置情報と関連データ位置情報とに基づき、第2のセクタに差分データが適用されるか否かを示すフラグ情報を生成するフラグ情報生成部(105)と、フラグ情報を差分更新情報として送信する送信部(106)とを有する。

Description

ソフトウェア提供装置及びソフトウェア更新装置 関連出願の相互参照
 本出願は、2023年6月8日に出願された日本特許出願番号2023-095050号に基づくもので、ここにその記載内容を援用する。
 本出願は、主として車載の電子制御装置のソフトウェアを更新するために、電子制御装置であるソフトウェア更新装置に対して差分更新情報を提供するソフトウェア提供装置、受信した差分更新情報を用いてソフトウェアを更新するソフトウェア更新装置、そして、これらの装置で実行される方法、及びこれらの装置で実行可能なプログラムに関する。
 自動車においては、車載ネットワークで接続された様々な電子制御装置が搭載されている。近年の自動運転技術の発展に伴い自動車に求められる機能が複雑になるため、自動車に搭載される電子制御装置の数は増加しつつある。
 電子制御装置には、それぞれの電子制御装置の機能を発揮するためのソフトウェアが搭載されている。そして、電子制御装置の機能を向上させたり、ソフトウェアの脆弱性を補修するために、ソフトウェアの更新が行われる。
 ソフトウェアの更新に際しては、ソフトウェアの転送時間や更新時間を短くするため、例えば特許文献1に示すように、新ソフトウェアと旧ソフトウェアの差分データのみを送信することが行われている。差分データを受信した更新装置においては、差分データと旧ソフトウェアから新ソフトウェアを生成しインストールを行うことでソフトウェアの更新が完了する。
 また、特許文献2に示すように、ソフトウェアを記録する記録領域に、ソフトウェアのバージョン情報も記録している。
特開2017-199183号公報 特開2014-191574号公報
 ここで、本発明者は、詳細な検討の結果、以下の課題を見出した。
 電子制御装置においてフラッシュメモリにソフトウェアを書き込む場合、バージョン情報を記録するセクタにおいては、旧ソフトウェアからの更新がない場合であっても、バージョン情報を書き込むために一旦旧ソフトウェアを退避させなくてはならない。その結果、バージョン情報を記録するセクタにおいては、差分データの有無によって処理の内容が異なるが、バージョン情報を記録するセクタに適用される差分データの有無を電子制御装置側で判定する場合は、リソースが少ない車載用の電子制御装置にとって処理の負担が重くなってしまう。
 また、バージョン情報を記録するセクタに適用される差分データの有無を電子制御装置側で判定しないで処理を進める場合は、バージョン情報を記録するセクタにおいては、旧ソフトウェアからの更新がない場合、新ソフトウェアに更新している場合、のいずれも、バージョン情報を記録するために一旦旧ソフトウェア又は新ソフトウェアを退避して、セクタを消去する必要があり、特に新ソフトウェアに更新している場合、消去の動作が2回必要となる。
 そこで、本開示は、車載用の電子制御装置の処理の負担を軽減するソフトウェア提供装置等を実現することを目的とする。
 本開示の一態様によるソフトウェア提供装置は、移動体に搭載されたソフトウェア更新装置のセクタ単位で消去が可能なフラッシュメモリに格納された旧ソフトウェアに対する差分更新情報を提供するソフトウェア提供装置であって、新ソフトウェアと前記旧ソフトウェアの差分である差分データを取得する差分データ取得部と、前記差分データが適用される第1のセクタを示す差分適用位置情報を取得する差分適用位置情報取得部と、前記新ソフトウェアに関連するデータである関連データを取得する関連データ取得部と、前記関連データが保存される第2のセクタを示す関連データ位置情報を取得する関連データ位置情報取得部と、前記差分適用位置情報と前記関連データ位置情報とに基づき、前記第2のセクタに前記差分データが適用されるか否かを示すフラグ情報を生成するフラグ情報生成部と、前記差分データ、前記差分適用位置情報、前記関連データ、及び前記フラグ情報を前記差分更新情報として前記ソフトウェア更新装置に送信する送信部と、を有する。
 本開示の一態様によるソフトウェア更新装置は、ソフトウェア提供装置から差分更新情報を受信し、前記差分更新情報を用いてセクタ単位で消去が可能なフラッシュメモリに格納された旧ソフトウェアを更新する、移動体に搭載されたソフトウェア更新装置であって、前記ソフトウェア提供装置は、新ソフトウェアと前記旧ソフトウェアの差分である差分データを取得する差分データ取得部と、前記差分データが適用される第1のセクタを示す差分適用位置情報を取得する差分適用位置情報取得部と、前記新ソフトウェアに関連するデータである関連データを取得する関連データ取得部と、前記関連データが保存される第2のセクタを示す関連データ位置情報を取得する関連データ位置情報取得部と、前記差分適用位置情報と前記関連データ位置情報とに基づき、前記第2のセクタに前記差分データが適用されるか否かを示すフラグ情報を生成するフラグ情報生成部と、前記差分データ、前記差分適用位置情報、前記関連データ、及び前記フラグ情報を前記差分更新情報として前記ソフトウェア更新装置に送信する送信部と、を有し、当該ソフトウェア更新装置は、前記差分更新情報を受信する受信部と、前記差分更新情報に含まれる前記差分データ及び前記差分適用位置情報を用いて、前記第1のセクタの前記旧ソフトウェアを更新するソフトウェア更新部と、前記差分更新情報に含まれる前記フラグ情報を用いて、前記関連データを前記第2のセクタに書き込む関連情報記録部と、を有し、前記関連情報記録部は、前記フラグ情報が前記第2のセクタに前記差分データが適用されることを示す場合、前記関連データを前記第2のセクタに書き込み、前記フラグ情報が前記第2のセクタに前記差分データが適用されないことを示す場合、前記第2のセクタに書き込まれた前記旧ソフトウェアを退避して前記第2のセクタを消去し、退避した前記旧ソフトウェア及び前記関連データを前記第2のセクタに書き込む。
 なお、請求の範囲に記載した発明の構成要件に付した括弧内の番号は、本発明と後述の実施形態との対応関係を示すものであり、本発明を限定する趣旨ではない。
 以上の構成によれば、ソフトウェア提供装置側で差分適用位置情報と関連データ位置情報とに基づき、第2のセクタに差分データが適用されるか否かを示すフラグ情報を生成しこれをソフトウェア更新装置に送信するので、ソフトウェア更新装置側で第2のセクタに差分データが適用されるか否かを判定する必要がなく、ソフトウェア更新装置の処理の負担を軽減することができる。
 また、各セクタの消去の動作を多くても1回にすることができる。
図1は、ソフトウェア提供装置とソフトウェア更新装置の位置関係を説明する図であり、 図2は、電子制御システムSの構成例を説明する図であり、 図3は、実施形態1のソフトウェア更新装置の更新動作の概要を示す図であり、 図4は、実施形態1のソフトウェア更新装置の更新動作の概要を示す図であり、 図5は、実施形態1のソフトウェア提供装置の構成を説明するブロック図であり、 図6は、実施形態1のソフトウェア提供装置が有するフラッシュメモリ情報の具体例を説明する図であり、 図7は、実施形態1のソフトウェア更新装置の構成を説明するブロック図であり、 図8は、実施形態1のソフトウェア提供装置の動作を説明するメインルーチンフロー図であり、 図9は、実施形態1のソフトウェア提供装置の関連データ位置情報取得部の動作を説明するサブルーチンフロー図であり、 図10は、実施形態1のソフトウェア提供装置のフラグ情報生成部の動作を説明するサブルーチンフロー図であり、 図11は、実施形態1のソフトウェア更新装置の動作を説明するメインルーチンフロー図である。
 以下、本開示の実施形態について、図面を参照して説明する。
 なお、以下に示す本発明とは、請求の範囲に記載された発明を意味するものであり、以下の実施形態に限定されるものではない。また、少なくともダブルクォーテーション内の語句は、請求の範囲に記載された語句を意味し、同じく以下の実施形態に限定されるものではない。
 請求の範囲の従属項に記載の構成及び方法は、請求の範囲の独立項に記載の発明において任意の構成及び方法である。従属項に記載の構成及び方法に対応する実施形態の構成及び方法、並びに請求の範囲に記載がなく実施形態のみに記載の構成及び方法は、本発明において任意の構成及び方法である。請求の範囲の記載が実施形態の記載よりも広い場合における実施形態に記載の構成及び方法も、本発明の構成及び方法の例示であるという意味で、本発明において任意の構成及び方法である。いずれの場合も、請求の範囲の独立項に記載することで、本発明の必須の構成及び方法となる。
 実施形態に記載した効果は、本発明の例示としての実施形態の構成を有する場合の効果であり、必ずしも本発明が有する効果ではない。
 複数の実施形態(変形例を含む。以下、本段落において同様。)がある場合、各実施形態に開示の構成は各実施形態のみで閉じるものではなく、実施形態をまたいで組み合わせることが可能である。例えば一の実施形態に開示の構成を、他の実施形態に組み合わせてもよい。また、複数の実施形態それぞれに開示の構成を集めて組み合わせてもよい。
 本開示に記載した課題は公知の課題ではなく、本発明者が独自に知見したものであり、本開示の構成及び方法と共に発明の進歩性を肯定する事実である。
1.各実施形態の前提となる構成
(1)ソフトウェア提供装置とソフトウェア更新装置の位置関係
 図1を用いて、各実施形態のソフトウェア提供装置100、及び電子制御システムSに含まれるソフトウェア更新装置200の位置関係を説明する。
 ソフトウェア提供装置100は、電子制御システムSを構成する電子制御装置(Electric Control Unit)20(以下、ECU20と略する。)の少なくとも一つであるソフトウェア更新装置200にソフトウェアを提供する装置である。
 ソフトウェア更新装置200は、ソフトウェア提供装置100からソフトウェアの提供を受け、フラッシュメモリに格納されていた旧ソフトウェアを新ソフトウェアに更新する装置である。
 図1(a)では、ソフトウェア提供装置100は、“移動体”である車両の外部に設けられたサーバ装置であり、ソフトウェア提供装置100と電子制御システムSとは、無線通信方式で接続されている。無線通信方式の例として、例えば、IEEE802.11(Wi-Fi(登録商標))、IEEE802.16(WiMAX(登録商標))、W-CDMA(Wideband Code Division Multiple Access)、HSPA(High Speed Packet Access)、LTE(Long Term Evolution)、LTE-A(Long Term Evolution Advanced)、又は4G、5G等が挙げられる。あるいは、DSRC(Dedicated Short Range Communication)を用いることができる。
 図1(b)では、ソフトウェア提供装置100は、“移動体”である車両の外部に設けられた外部接続装置である診断装置(Diagnostic Tool)やパーソナルコンピュータ、あるいはスマートフォンであり、ソフトウェア提供装置100と電子制御システムSとは、有線通信方式又は無線通信方式で接続されている。有線通信方式の例として、例えば、Ethernet(登録商標)やUSBが挙げられる。無線通信方式の例として、上述の例の他、Bluetooth(登録商標)や赤外線通信が挙げられる。
 図1(c)では、ソフトウェア提供装置100は、“移動体”である車両に“搭載”されている装置であり、ソフトウェア提供装置100とソフトウェア更新装置200とは、有線通信方式又は無線通信方式で接続されている。有線通信方式の例として、上述の有線通信方式の他、CAN(Controller Area Network)、LIN(Local Interconnect Network)といった車載通信ネットワークが挙げられる。無線通信方式の例は、上述の通りである。
 ここで、
 “移動体”とは、移動可能な物体をいい、移動速度は任意である。また移動体が停止している場合も当然含む。例えば、自動車、自動二輪車、自転車、歩行者、船舶、航空機、及びこれらに搭載される物を含み、またこれらに限らない。
 “搭載”される、とは、移動体に直接固定されている場合の他、移動体に固定されていないが移動体と共に移動する場合も含む。例えば、移動体に乗った人が所持している場合、移動体に載置された積荷に搭載されている場合、が挙げられる。
(2)電子制御システムSの構成
 図2は、車両に搭載された電子制御システムSの構成例を示す図である。電子制御システムSは、複数のECU20、及びこれらを接続する車載ネットワーク(NW1~NW3)から構成されている。図2は8つのECU(ECU20a~ECU20h)を例示しているが、当然のことながら、電子制御システムSは任意の数のECUから構成される。以後の説明では、単数又は複数の電子制御装置全体を包括して説明する場合はECU20や各ECU20、個々の電子制御装置を特定して説明する場合はECU20a、ECU20b、ECU20c、・・・のように記載している。
 図2の場合、各ECU20間は、上述の図1(c)の説明で記載した車載ネットワークや、その他の有線通信方式又は無線通信方式で接続されている。
 なお、接続とは、データのやり取りが可能な状態をいい、異なるハードウェアが有線又は無線の通信ネットワークを介して接続されている場合はもちろん、同一のハードウェア上で実現された仮想マシン同士が仮想的に接続されている場合も含む。
 図2に示す電子制御システムSは、統合ECU20a、外部通信ECU20b、ゾーンECU(20c、20d)、及び個別ECU(20e~20h)を含む。
 統合ECU20aは、電子制御システムS全体を制御する機能を備えるとともに、各ECU20間の通信を仲介するゲートウェイ機能を備えたECUである。統合ECU20aは、ゲートウェイECU(G-ECU)、モビリティコンピュータ(MC)と呼ばれることもある。また、統合ECU20aは、中継装置やゲートウェイ装置であってもよい。
 外部通信ECU20bは、車両の外部に設けられたサーバ装置や外部接続装置と通信を行う通信モジュールを有するECUである。外部通信ECU20bが用いる通信方式は、図1の説明で記載した無線通信方式や有線通信方式である。
 なお、複数の通信方式を実現するため、外部通信ECU20bを複数設けるようにしてもよい。また、外部通信ECU20bを設ける代わりに、統合ECU20aが外部通信ECU20bの機能を内包してもよい。
 ゾーンECU(20c、20d)は、個別ECUが配置される場所や機能に応じて適宜配置されたゲートウェイ機能を備えたECUである。例えば、ゾーンECU20cは、車両の前方に配置された個別ECU20e及び個別ECU20fと他のECU20との通信を仲介するゲートウェイ機能を有するECU、ゾーンECU20dは、車両の後方に配置された個別ECU20g及び個別ECU20hと他のECU20との通信を仲介するゲートウェイ機能を有するECU、である。ゾーンECU(20c、20d)は、ドメインコンピュータ(DC)と呼ばれることもある。ゾーンECU20cには、ネットワーク2(NW2)を介して個別ECU20e及び個別ECU20fが接続され、ゾーンECU20dには、ネットワーク3(NW3)を介して個別ECU20g及び個別ECU20hが接続されている。
 個別ECU(20e~20h)は任意の機能を有するECUで構成することができる。例えば、エンジン、ハンドル、ブレーキ等の制御を行う駆動系電子制御装置、メータやパワーウインドウ等の制御を行う車体系電子制御装置、ナビゲーション装置等の情報系電子制御装置、あるいは、障害物や歩行者との衝突を防止するための制御を行う安全制御系電子制御装置が挙げられる。また、ECU同士が並列ではなく、マスタとスレーブとに分類されていてもよい。
 なお、各ECU20は、物理的に独立した電子制御装置の他、仮想化技術を用いて実現した仮想化電子制御装置であってもよい。また、各ECU20は、異なるハードウェアでそれぞれ実現されている場合は有線又は無線の通信方式を介して接続されていればよく、同一のハードウェア上で複数の仮想化電子制御装置が実現されている場合は、仮想化電子制御装置同士が仮想的に接続されていればよい。
 各実施形態のソフトウェア提供装置100は、ソフトウェアを他の装置に提供する機能を有していればよく、図1で説明した通り、電子制御システムSの内部又は外部いずれの装置であってもよい。図2においても同様であり、図1(a)の場合はサーバ装置、図1(b)の場合は外部接続装置、図1(c)の場合は例えば電子制御システムSの統合ECU20aがソフトウェア提供装置100に相当する。なお、図1(c)の場合、他のECU20がソフトウェア提供装置100として機能してもよい。
 各実施形態のソフトウェア更新装置200は、ソフトウェアの提供を受ける装置であればよく、電子制御システムSを構成するいずれのECU20であってもよい。図2では、個別ECU20eがソフトウェア更新装置200である例を示している。
 以下、各実施形態のソフトウェア提供装置100、ソフトウェア更新装置200の順に説明する。
2.実施形態1
(1)差分データを用いたソフトウェアの更新動作の概要
 本実施形態のソフトウェア提供装置100及びソフトウェア更新装置200の構成及び動作を説明する前に、差分データを用いたソフトウェアの更新動作の概要を説明する。
 図3及び図4は、差分データを受信したソフトウェア更新装置200が、フラッシュメモリに格納された旧ソフトウェアを新ソフトウェアに更新する更新動作を示す図である。
 図3において、ソフトウェア更新装置200は、フラッシュメモリに旧ソフトウェアを保存しており、旧ソフトウェアに続いて旧ソフトウェアのバージョン情報(図中では、旧V情報と略して記載している。)を保存している。図3では、フラッシュメモリのセクタ0、セクタ1、及びセクタ2の一部にわたり旧ソフトウェアが保存され、セクタ2の残部に旧ソフトウェアのバージョン情報が保存されている。
 ソフトウェア更新装置200は、ソフトウェア提供装置100から新ソフトウェアと旧ソフトウェアの差分である差分データを受信する([受信S])。差分データはセクタ毎に生成されたものを受信しており、例えば図3ではセクタ0に適用される差分情報を受信している。セクタ1及びセクタ2に適用される差分データはない。すなわち、新ソフトウェアにおいて、セクタ1及びセクタ2の旧ソフトウェアからの更新はなく、旧ソフトウェアをそのまま用いる。
 ソフトウェア更新装置200は、差分データを用いてセクタ0の旧ソフトウェアからセクタ0の新ソフトウェアを生成する([生成S])。厳密にいえば、生成するのは新ソフトウェアの一部分であるが、以降の記載において、セクタを特定して新ソフトウェア又は旧ソフトウェアと記載している場合は、ソフトウェアの部分を指すものとする。
 ソフトウェア更新装置200は、セクタ0を消去する([消去S])。フラッシュメモリはセクタ単位で消去が可能であるので、消去の最小単位であるセクタ毎に消去を行う。セクタ1及びセクタ2は消去を行わない。
 ソフトウェア更新装置200は、生成した新ソフトウェアをセクタ0に書き込み([書き込みS])、旧ソフトウェアから新ソフトウェアへの更新を終了する。
 図3では、旧ソフトウェアのバージョン情報は更新していないが、バージョン情報も更新する場合の例を、図4を用いて説明する。以下、セクタ2に適用される差分データがある場合とない場合とを分けて説明する。
 図4(a)は、セクタ2に適用される差分データがない場合である。
 ソフトウェア更新装置200は、ソフトウェア提供装置100から新ソフトウェアのバージョン情報(図中では、新V情報と略して記載している。)を受信する([受信S])。
 ソフトウェア更新装置200は、セクタ2の旧ソフトウェアを別に設けた記憶装置に一時的に退避する([退避S])。
 ソフトウェア更新装置200は、セクタ2を消去する([消去S])。
 ソフトウェア更新装置200は、退避していた旧ソフトウェア及び新ソフトウェアのバージョン情報をセクタ2に書き込む([書き込みS])。
 図4(b)は、セクタ2に適用される差分データがある場合である。
 ソフトウェア更新装置200は、ソフトウェア提供装置100から差分データ及び新ソフトウェアのバージョン情報を受信する([受信S])。
 ソフトウェア更新装置200は、差分データを用いてセクタ2の旧ソフトウェアからセクタ2の新ソフトウェアを生成する([生成S])。
 ソフトウェア更新装置200は、セクタ2を消去する([消去S])。
 ソフトウェア更新装置200は、新ソフトウェア及び新ソフトウェアのバージョン情報をセクタ2に書き込む([書き込みS])。
 図3及び図4から、バージョン情報とソフトウェアがともに存在するセクタ(以下、同居セクタと称する。)においては、差分データがある場合は他のセクタにおける更新動作と同じであるが、差分データがない場合は他のセクタにおける更新動作と異なる。つまり、他のセクタにおいて差分データがない場合は旧ソフトウェアをそのまま新ソフトウェアとして用いるので、セクタの消去を行わない。しかし、同居セクタにおいては、差分データがなくてもバージョン情報を新バージョン情報に更新する必要があるため、旧ソフトウェアを一旦退避させた後、同居セクタを消去し、退避していた旧ソフトウェア及び新ソフトウェアのバージョン情報を同居セクタに書き込んでいる。
 すなわち、同居セクタにおける差分データの有無によって更新手順を変更する必要がある。しかし、同居セクタにおける差分データの有無をソフトウェア更新装置200側で判定する場合、判定動作に必要なプログラムをROM等にあらかじめ設けておく必要があるが、特にソフトウェア更新装置200がリソースの限られる車両に搭載されている場合、極力ROMの容量や処理動作を削減することが望ましい。
 そこで、本実施形態では、ソフトウェア提供装置100側でこの判定を行い、判定結果を示す情報をソフトウェア更新装置200に提供し、ソフトウェア更新装置200はこの情報を用いてソフトウェアの更新を行う。
 以下、ソフトウェア提供装置100及びソフトウェア更新装置200の構成及び動作の詳細を説明する。
(2)ソフトウェア提供装置100の構成
 図5を用いて、ソフトウェア提供装置100の構成例を説明する。ソフトウェア提供装置100は、差分データ取得部101、差分適用位置情報取得部102、関連データ取得部103、関連データ位置情報取得部104、フラグ情報生成部105、及び送信部106を有する。
 差分データ取得部101は、ソフトウェア更新装置200で現在用いられている“ソフトウェア”である旧ソフトウェアと、旧ソフトウェアに代えて新たにソフトウェア更新装置200にインストールする“ソフトウェア”である新ソフトウェアの差分である差分データを“取得する”。
 例えば、差分データ取得部101は、ソフトウェア提供装置100の新ソフトウェア保存部に保存している新ソフトウェアと、旧ソフトウェア保存部に保存している旧ソフトウェアとの差分を取ることにより差分データを生成する。ソフトウェア提供装置100が新ソフトウェアと旧ソフトウェアを有していない場合は、他の装置で求めた差分データを受信してもよい。
 ここで、
 “ソフトウェア”とは、プログラムである場合の他、データである場合も含む。
 “取得する”とは、自ら生成して取得する場合、他の装置から受信して取得する場合、のいずれも含む。
 旧ソフトウェア保存部には、旧ソフトウェア及び旧ソフトウェアのバージョン情報が保存されている。新ソフトウェア保存部には、新ソフトウェア及び新ソフトウェアのバージョン情報が保存されている。旧ソフトウェア保存部と新ソフトウェア保存部、そして後述のフラッシュメモリ情報保存部は、それぞれ別の記録装置で実現しても、同じ記録装置で実現してもよい。
 また、新ソフトウェア保存部及び旧ソフトウェア保存部には、ソフトウェアの開始アドレス、ソフトウェアの終了アドレス、バージョン情報の開始アドレス、及びバージョン情報の終了アドレスが保存されていることが望ましい。各アドレスは、ソフトウェア更新装置200のフラッシュメモリのアドレスに対応するアドレスであることが望ましい。各アドレスがフラッシュメモリのアドレスに対応していない場合は、アドレスの変換を行えばよい。
 差分適用位置情報取得102は、差分データ取得部101で取得した差分データが適用されるソフトウェア更新装置200が有するフラッシュメモリのセクタ(“第1のセクタ”に相当)を“示す”差分適用位置情報を“取得する”。セクタの大きさは、例えば8KB(キロバイト)、又は64KBである。
 ここで、セクタを“示す”とは、セクタを直接示す場合、セクタを間接的に示す場合、のいずれの場合も含む。前者の例としてセクタ番号、後者の例としてセクタの開始アドレス、セクタの開始アドレス及びセクタのサイズ、又はセクタの開始アドレス及びセクタの終了アドレス、が挙げられる。
 図6は、ソフトウェア更新装置200で用いられるフラッシュメモリのメモリマップを示す図である。ソフトウェア提供装置100のフラッシュメモリ情報保存部には、図6のメモリマップがフラッシュメモリ情報として保存されている。
 メモリマップには、セクタの境界である境界アドレスとセクタ番号とが保存されている。なお、境界アドレスとセクタ番号に代えて、最上位の境界アドレスである境界アドレス#0、最下位の境界アドレスである境界アドレス#n+1、セクタサイズ、が保存されていてもよい。これらの情報から、中間の境界アドレスを求めることができる。
 図5に戻り、差分適用位置情報取得部102は、例えば差分データ取得部101で取得した差分データの開始アドレス及び終了アドレスと、フラッシュメモリ情報保存部に保存したフラッシュメモリ情報から読み出したフラッシュメモリの各セクタの境界アドレスとを比較して、差分データがどのセクタに適用されるかを判定する。例えば、差分データの開始アドレスと終了アドレスとに対応するフラッシュメモリの2つの境界アドレスを判定し、対応する2つの境界アドレスに挟まれたセクタのセクタ番号を差分適用位置情報とする。対応するフラッシュメモリの境界アドレスがない場合は、差分データの開始アドレスと終了アドレスとが含まれる範囲のうち最小の範囲を構成する2つの境界アドレスを対応する境界アドレスとする。いずれの場合も、複数のセクタにまたがっていてもよい。
 なお、判定されたセクタ番号に代えて、セクタの境界アドレスをそのまま差分適用位置情報としてもよい。セクタの境界アドレスを差分適用位置情報とする場合、上位又は下位のいずれかの境界アドレスのみとしてもよいし、上位及び下位の境界アドレスのセットとしてもよい。
 関連データ取得部103は、新ソフトウェアに関連するデータである関連データ、本実施形態では新ソフトウェアのバージョン情報を“取得する”。
 バージョン情報は、例えば新ソフトウェアのバージョン番号、新ソフトウェアを作成した日付、新ソフトウェアが適用される日付、新ソフトウェアの作成者、ソフトウェアの変更履歴等が挙げられるが、これらに限らない。
 バージョン情報以外の関連データとして、新ソフトウェアで用いる各種パラメータ情報が挙げられる。例えば、更新日時、更新者識別子、更新機器識別子、更新理由、が挙げられるが、これらに限らない。
 視点を変えれば、関連情報は、ソフトウェアに対して一意に定まる静的な情報であっても、ソフトウェアに対して一意に定まらない動的な情報のいずれであってもよい。また、関連情報は、ソフトウェアとは分離している情報であればよい。
 関連データ位置情報取得部104は、関連データ取得部103で取得した関連データが保存されるソフトウェア更新装置200のフラッシュメモリのセクタ(“第2のセクタ”に相当)を“示す”関連データ位置情報を“取得する”。
 例えば、関連データ位置情報取得部104は、新ソフトウェアのバージョン情報の開始アドレス及び終了アドレスを、新ソフトウェア保存部に保存している新ソフトウェアから取得する。そして、フラッシュメモリ情報から読み出したフラッシュメモリの各セクタの境界アドレスと比較して、新ソフトウェアのバージョン情報がどのセクタに保存されるかを判定する。例えば、新ソフトウェアのバージョン情報の開始アドレス及び終了アドレスが、フラッシュメモリのどの2つの境界アドレス間に位置するかを判定し、対応する2つの境界アドレス間に挟まれたセクタのセクタ番号を関連データ位置情報とする。新ソフトウェアのバージョン情報が複数のセクタにまたがっている場合は、関連データ位置情報は複数のセクタを示す情報となる。
 関連データのサイズは通常セクタのサイズよりも小さいため、関連データ位置情報取得部104で取得した関連データ位置情報は上述の同居セクタに相当する。
 フラグ情報生成部105は、差分適用位置情報取得部102で取得した差分適用位置情報と、関連データ位置情報取得部104で取得した関連データ位置情報とに基づき、関連データ位置情報が示すセクタ(“第2のセクタ”に相当)と、差分データが適用されるセクタ(“第1のセクタ”に相当)とが一致するか否かを判定し、一致する場合は差分データが第2のセクタに適用されるとし、一致しない場合は差分データが第2のセクタに適用されないとして、第2のセクタに差分データが適用されるか否かを示す“フラグ情報”を生成する。
 すなわち、フラグ情報生成部105は、図4で説明した通り、バージョン情報とソフトウェアがともに存在するセクタである同居セクタ(“第2のセクタ”に相当)に、差分データが適用されるか否かを判定してフラグ情報を生成する。
 ここで、“フラグ情報”は、第2のセクタに差分データが適用されるか否かを示す情報であれば足り、その情報の形式は問わない。
 送信部106は、差分データ取得部101で取得した差分データ、差分適用位置情報取得部102で取得した差分適用位置情報、関連データ取得部103で取得した関連データ、及びフラグ情報生成部105で生成したフラグ情報を、差分更新情報としてソフトウェア更新装置200に送信する。送信部106は、ソフトウェア更新装置200に直接送信してもよいが、通常は、各種中継装置や、電子制御システムSを構成する各ECU20を介して、結果的にソフトウェア更新装置200に送信される。
 なお、本実施形態では、送信部106は、関連データ位置情報取得部104で取得した関連データ位置情報は送信していないが、これはバージョン情報が最終セクタや最初のセクタに保存されることをソフトウェア提供装置100とソフトウェア更新装置200とで共有しているからである。バージョン情報が保存される位置が共有されていない場合は、関連データ位置情報を差分更新情報に含めて送信することが望ましい。
(3)ソフトウェア更新装置200の構成
 図7を用いて、ソフトウェア更新装置200の構成例を説明する。ソフトウェア更新装置200は、受信部201、ソフトウェア更新部202、及び関連情報記録部203を有する。
 ソフトウェア更新装置200は、“移動体”である車両に“搭載”された装置であり、本実施形態では、例えば図2のECU20eであるとする。
 また、ソフトウェア更新装置200は、旧プログラムや新プログラム等を保存するフラッシュメモリを有している。フラッシュメモリは、“セクタ”単位で消去が可能な不揮発性メモリである。フラッシュメモリは、例えばバイトやワード単位で読み書きができ、セクタ単位で消去が可能であり、かつ保存したソフトウェアを直接実行可能なNOR型フラッシュメモリが望ましい。もっとも、フラッシュメモリは、ページ単位で読み書きができ、ブロック単位で消去が可能であるNAND型フラッシュメモリであってもよい。
 ここで、
 “セクタ”とは、フラッシュメモリのデータの消去単位であればよく、ブロックやページ等、その名称は問わない。
 受信部201は、ソフトウェア提供装置100から差分更新情報を受信する。受信部201は、差分更新情報をソフトウェア提供装置100から直接受信してもよいが、例えば、本実施形態において、図2に示す通りソフトウェア更新装置200が個別ECU20eである場合、外部通信ECU20b、統合ECU20a、ゾーンECU20cを介して差分更新情報を受信する。
 ソフトウェア更新部202は、差分更新情報に含まれる差分データ及び差分適用位置情報を用いて、差分適用位置情報が示すフラッシュメモリのセクタ(“第1のセクタ”に相当)の旧ソフトウェアを更新する。差分データ及び差分適用位置情報を用いた更新動作は、図3を用いて説明した通りである。
 関連情報記録部203は、差分更新情報に含まれるフラグ情報を用いて、新ソフトウェアのバージョン情報(“関連データ”に相当)を第2のセクタに書き込む。差分更新情報に関連データ位置情報が含まれる場合は、関連データ位置情報が示すセクタ(“第2のセクタ”に相当)に新ソフトウェアのバージョン情報を書き込む。第2のセクタがソフトウェア更新装置200において既知である場合は、関連データ位置情報は不要である。
 より具体的には、関連情報記録部203は、フラグ情報を参照して以下の通り新ソフトウェアのバージョン情報を書き込む。
 まず、フラグ情報が第2のセクタに差分データが適用されることを示す場合、第2のセクタに新ソフトウェアのバージョン情報を書き込む。この場合、第2のセクタは一度消去された後、差分データを用いて生成した新ソフトウェアが既に第2のセクタに書き込まれているので、さらに新ソフトウェアのバージョン情報を第2のセクタに書き込む。
 これに対し、フラグ情報が第2のセクタに差分データが適用されないことを示す場合、第2のセクタに書き込まれた旧ソフトウェアを退避して第2のセクタを消去し、退避した旧ソフトウェア及び新ソフトウェアのバージョン情報を第2のセクタに書き込む。
 新プログラムのバージョン情報の書き込み動作は、図4を用いて説明した通りである。
(4)ソフトウェア提供装置100及びソフトウェア更新装置200の動作
 図8~図11を用いて、ソフトウェア提供装置100及びソフトウェア更新装置200の動作を説明する。なお、図8~図10に示す動作は、ソフトウェア提供装置100で実行されるソフトウェア提供方法を示すだけでなく、ソフトウェア提供装置100で実行可能なソフトウェア提供プログラムの処理手順を示すものでもある。また、図11に示す動作は、ソフトウェア更新装置200で実行されるソフトウェア更新方法を示すだけでなく、ソフトウェア更新装置200で実行可能なソフトウェア更新プログラムの処理手順を示すものでもある。そして、これらで示す処理は、図8~図11で示した順序には限定されない。すなわち、あるステップでその前段のステップの結果を利用する関係にある等の制約がない限り、順序を入れ替えてもよい。
 図8は、ソフトウェア提供装置100のメインルーチンである。
 ソフトウェア提供装置100の差分データ取得部101は、新ソフトウェアと旧ソフトウェアの差分である差分データを取得する(S101)。
 差分適用位置情報取得部102は、差分データが適用される第1のセクタを示す差分適用位置情報を取得する(S102)。
 関連データ取得部103は、新ソフトウェアに関連するデータである関連データを取得する(S103)。
 関連データ位置情報取得部104は、関連データが保存される第2のセクタを示す関連データ位置情報を取得する(S104)。関連データ位置情報の取得方法の具体例は、図9で説明する。
 フラグ情報生成部105は、S102で取得した差分適用位置情報とS104で取得した関連データ位置情報とに基づき、第2のセクタに差分データが適用されるか否かを示すフラグ情報を生成する(S105)。フラグ情報の生成方法の具体例は、図10で説明する。
 送信部106は、S101で取得した差分データ、S102で取得した差分適用位置情報、S103で取得した関連データ、及びS105で生成したフラグ情報を差分更新情報としてソフトウェア更新装置200に送信する(S106)。
 図9は、図8のS104に相当するサブルーチンである。
 カウンタNの条件として、初期値(0)、終了値(N)、増分(1)のループを設定する(S111)。
 新ソフトウェアのバージョン情報の開始アドレスが、境界アドレス#N以上かつ境界アドレス#N+1以下の範囲内であるか否かを判定する(S112)。範囲内である場合(S112:Yes)、関連データ位置情報にセクタN(“第2のセクタ”に相当)をセットし(S113)、ループを繰り返す(S114)。範囲外である場合(S112:No)、ループを繰り返す(S114)。
 なお、図9では、新ソフトウェアのバージョン情報の開始アドレスのみで判定しているが、開始アドレス及び終了アドレスが、境界アドレス#N以上かつ境界アドレス#N+1以下の範囲内であるか否かを判定してもよい。
 また、図9では境界アドレス#N以上かつ境界アドレス#N+1以下の範囲内のみを判定しているが、新ソフトウェアのバージョン情報が複数のセクタにまたがる可能性を考慮し、境界アドレス#N以上かつ境界アドレス#N+a以下の範囲内も判定してもよい。aは整数の定数で、新ソフトウェアのバージョン情報のサイズに応じて適宜設定する。さらに、aをカウンタとしてループを設定してもよい。
 図10は、図8のS105に相当するサブルーチンである。
 フラグ情報に初期値0を設定する(S121)。
 カウンタiの条件として、初期値0、終了値(差分データの数)、増分(1)のループを設定する(S122)。すなわち、差分データの数に相当する回数のループを設定する。
 差分適用位置情報#iと関連データ位置情報を比較する(S122)。つまり、差分データ数だけ存在する差分適用位置情報のそれぞれと、関連データ位置情報とが一致するか否かを判定する。一致する場合(S122:Yes)は、関連データ位置情報が示す同居セクタ(“第2のセクタ”に相当)に差分データが適用されるので、これを示すフラグ情報に1を設定し(S123)、ループを繰り返す(S125)。一致しない場合(S122:N)は、ループを繰り返す(S125)。
 以上の動作により、同居セクタに差分データが適用される場合はフラグ1、同居セクタに差分データが適用されない場合はフラグ0が設定される。
 図11は、ソフトウェア更新装置200のメインルーチンである。
 ソフトウェア更新装置200の受信部201は、ソフトウェア提供装置100から差分更新情報を受信する(S201)。
 カウンタNの条件として、初期値(0)、終了値(N)、増分(1)のループを設定する(S202)。
 ソフトウェア更新部202は、セクタNに差分データがあるか否かを判定する(S203)。セクタNに差分データがある場合(S203:Yes)、セクタNの旧ソフトウェアと差分データから新ソフトウェアを生成し(S204)、セクタNを消去し(S205)、S204で生成した新ソフトウェアをセクタNに書き込み(S206)、ループを繰り返す(S207)。セクタNに差分データがない場合(S203:No)、セクタNに対し更新は行わず、ループを繰り返す(S207)。
 関連情報記録部203は、フラグ情報が0か1かを判定する(S208)。フラグ情報が0の場合、すなわち同居セクタに差分データが適用されない場合、関連データ位置情報が示す同居セクタの旧ソフトウェアを退避し(S209)、同居セクタを消去し(S210)、退避した旧ソフトウェアを同居セクタに書き込み(S211)、新ソフトウェアのバージョン情報を同居セクタに書き込む(S212)。フラグ情報が1の場合、すなわち同居セクタに差分データが適用される場合、新ソフトウェアのバージョン情報を同居セクタに書き込む(S212)。
(5)小括
 以上、本実施形態のソフトウェア提供装置100によれば、フラグ情報を生成してソフトウェア更新装置200に送信するので、ソフトウェア更新装置200で同居セクタに差分データが適用されるか否かを判定する必要がなく、ソフトウェア更新装置200の処理の負担を軽減することができる。例えば、判定に必要なプログラムをROMに格納する必要がないので、ROM容量を極力少なくすることができ、また判定に必要なCPUのリソースを節約することができる。
 また、本実施形態のソフトウェア提供装置100によれば、さらに関連データ位置情報をソフトウェア更新装置200に送信するので、ソフトウェア更新装置200で同居セクタの位置が分からない場合であっても、同居セクタにおけるソフトウェアの更新とバージョン情報の書き込みを適切に行うことができる。
3.総括
 以上、本開示の各実施形態におけるソフトウェア提供装置及びソフトウェア更新装置等の特徴について説明した。
 各実施形態で使用した用語は例示であるので、同義の用語、あるいは同義の機能を含む用語に置き換えてもよい。
 実施形態の説明に用いたブロック図は、装置の構成を機能毎に分類及び整理したものである。それぞれの機能を示すブロックは、ハードウェア又はソフトウェアの任意の組み合わせで実現される。また、機能を示したものであることから、かかるブロック図は方法の発明、及び当該方法を実現するプログラムの発明の開示としても把握できるものである。
 各実施形態に記載した処理、フロー、及び方法として把握できる機能ブロック、については、一のステップでその前段の他のステップの結果を利用する関係にある等の制約がない限り、順序を入れ替えてもよい。
 各実施形態、及び請求の範囲で使用する、第1、第2、乃至、第N(Nは整数)、の用語は、同種の2以上の構成や方法を区別するために使用しており、順序や優劣を限定するものではない。
 また、本開示の装置の形態の例として、以下のものが挙げられる。
 部品の形態として、半導体素子、電子回路、モジュール、マイクロコンピュータが挙げられる。
 半完成品の形態として、電子制御装置(ECU(Electric Control Unit))、システムボードが挙げられる。
 完成品の形態として、携帯電話、スマートフォン、タブレット、パーソナルコンピュータ(PC)、ワークステーション、サーバが挙げられる。
 その他、通信機能を有するデバイス等を含み、例えばビデオカメラ、スチルカメラ、カーナビゲーションシステムが挙げられる。
 また装置に、アンテナや通信用インターフェースなど、必要な機能を追加してもよい。
 加えて、本開示は、各実施形態で説明した構成及び機能を有する専用のハードウェアで実現できるだけでなく、メモリやハードディスク等の記録媒体に記録した本開示を実現するためのプログラム、及びこれを実行可能な専用又は汎用CPU及びメモリ等を有する汎用のハードウェアとの組み合わせとしても実現できる。
 専用や汎用のハードウェアの非遷移的実体的記録媒体(例えば、外部記憶装置(ハードディスク、USBメモリ、CD/BD等)、又は内部記憶装置(RAM、ROM等))に格納されるプログラムは、記録媒体を介して、あるいは記録媒体を介さずにサーバから通信回線を経由して、専用又は汎用のハードウェアに提供することもできる。これにより、プログラムのアップグレードを通じて常に最新の機能を提供することができる。
 本開示は、主として自動車に搭載される車載用のソフトウェア更新装置として説明したが、自動二輪車、船舶、鉄道、航空機等、移動する移動体全般に適用することが可能である。また、移動体に限らず、マイクロコンピュータを包含する製品全般に適用可能である。

Claims (13)

  1.  移動体に搭載されたソフトウェア更新装置(200)のセクタ単位で消去が可能なフラッシュメモリに格納された旧ソフトウェアに対する差分更新情報を提供するソフトウェア提供装置(100)であって、
     新ソフトウェアと前記旧ソフトウェアの差分である差分データを取得する差分データ取得部(101)と、
     前記差分データが適用される第1のセクタを示す差分適用位置情報を取得する差分適用位置情報取得部(102)と、
     前記新ソフトウェアに関連するデータである関連データを取得する関連データ取得部(103)と、
     前記関連データが保存される第2のセクタを示す関連データ位置情報を取得する関連データ位置情報取得部(104)と、
     前記差分適用位置情報と前記関連データ位置情報とに基づき、前記第2のセクタに前記差分データが適用されるか否かを示すフラグ情報を生成するフラグ情報生成部(105)と、
     前記差分データ、前記差分適用位置情報、前記関連データ、及び前記フラグ情報を前記差分更新情報として前記ソフトウェア更新装置に送信する送信部(106)と、を有する、
     ソフトウェア提供装置(100)。
  2.  前記送信部は、さらに前記関連データ位置情報を前記差分更新情報に含めて送信する、
     請求項1記載のソフトウェア提供装置。
  3.  前記差分適用位置情報は、前記第1のセクタの開始アドレス及び終了アドレスである、
     請求項1記載のソフトウェア提供装置。
  4.  前記関連データは、前記新ソフトウェアのバージョン情報である、
     請求項1記載のソフトウェア提供装置。
  5.  前記フラッシュメモリは、NOR型である、
     請求項1記載のソフトウェア提供装置。
  6.  当該ソフトウェア提供装置は、移動体の外部に設けられている、
     請求項1記載のソフトウェア提供装置。
  7.  当該ソフトウェア提供装置は、移動体に搭載されている、
     請求項1記載のソフトウェア提供装置。
  8.  ソフトウェア提供装置(100)から差分更新情報を受信し、前記差分更新情報を用いてセクタ単位で消去が可能なフラッシュメモリに格納された旧ソフトウェアを更新する、移動体に搭載されたソフトウェア更新装置(200)であって、
     前記ソフトウェア提供装置は、
      新ソフトウェアと前記旧ソフトウェアの差分である差分データを取得する差分データ取得部(101)と、
      前記差分データが適用される第1のセクタを示す差分適用位置情報を取得する差分適用位置情報取得部(102)と、
      前記新ソフトウェアに関連するデータである関連データを取得する関連データ取得部(103)と、
      前記関連データが保存される第2のセクタを示す関連データ位置情報を取得する関連データ位置情報取得部(104)と、
      前記差分適用位置情報と前記関連データ位置情報とに基づき、前記第2のセクタに前記差分データが適用されるか否かを示すフラグ情報を生成するフラグ情報生成部(105)と、
     前記差分データ、前記差分適用位置情報、前記関連データ、及び前記フラグ情報を前記差分更新情報として前記ソフトウェア更新装置に送信する送信部(106)と、を有し、
     当該ソフトウェア更新装置は、
      前記差分更新情報を受信する受信部(201)と、
      前記差分更新情報に含まれる前記差分データ及び前記差分適用位置情報を用いて、前記第1のセクタの前記旧ソフトウェアを更新するソフトウェア更新部(202)と、
      前記差分更新情報に含まれる前記フラグ情報を用いて、前記関連データを前記第2のセクタに書き込む関連情報記録部(203)と、を有し、
      前記関連情報記録部は、
       前記フラグ情報が前記第2のセクタに前記差分データが適用されることを示す場合、前記関連データを前記第2のセクタに書き込み、
       前記フラグ情報が前記第2のセクタに前記差分データが適用されないことを示す場合、前記第2のセクタに書き込まれた前記旧ソフトウェアを退避して前記第2のセクタを消去し、退避した前記旧ソフトウェア及び前記関連データを前記第2のセクタに書き込む、
     ソフトウェア更新装置(200)。
  9.  前記ソフトウェア提供装置の前記送信部は、さらに前記関連データ位置情報を前記差分更新情報に含めて送信し、
     当該ソフトウェア更新装置の関連情報記録部は、さらに前記関連データ位置情報を用いて、前記関連データを前記第2のセクタに書き込む、
     請求項8記載のソフトウェア更新装置。
  10.  移動体に搭載されたソフトウェア更新装置(200)のセクタ単位で消去が可能なフラッシュメモリに格納された旧ソフトウェアに対する差分更新情報を提供するソフトウェア提供装置(100)で実行されるソフトウェア提供方法であって、
     新ソフトウェアと前記旧ソフトウェアの差分である差分データを取得し(S101)、
     前記差分データが適用される第1のセクタを示す差分適用位置情報を取得し(S102)、
     前記新ソフトウェアに関連するデータである関連データを取得し(S103)、
     前記関連データが保存される第2のセクタを示す関連データ位置情報を取得し(S104)、
     前記差分適用位置情報と前記関連データ位置情報とに基づき、前記第2のセクタに前記差分データが適用されるか否かを示すフラグ情報を生成し(S105)、
     前記差分データ、前記差分適用位置情報、前記関連データ、及び前記フラグ情報を前記差分更新情報として前記ソフトウェア更新装置に送信する(S106)、
     ソフトウェア提供方法。
  11.  移動体に搭載されたソフトウェア更新装置(200)のセクタ単位で消去が可能なフラッシュメモリに格納された旧ソフトウェアに対する差分更新情報を提供するソフトウェア提供装置(100)で実行可能なソフトウェア提供プログラムであって、
     新ソフトウェアと前記旧ソフトウェアの差分である差分データを取得し(S101)、
     前記差分データが適用される第1のセクタを示す差分適用位置情報を取得し(S102)、
     前記新ソフトウェアに関連するデータである関連データを取得し(S103)、
     前記関連データが保存される第2のセクタを示す関連データ位置情報を取得し(S104)、
     前記差分適用位置情報と前記関連データ位置情報とに基づき、前記第2のセクタに前記差分データが適用されるか否かを示すフラグ情報を生成し(S105)、
     前記差分データ、前記差分適用位置情報、前記関連データ、及び前記フラグ情報を前記差分更新情報として前記ソフトウェア更新装置に送信する(S106)、
     ソフトウェア提供プログラム。
  12.  ソフトウェア提供装置(100)から差分更新情報を受信し、前記差分更新情報を用いてセクタ単位で消去が可能なフラッシュメモリに格納された旧ソフトウェアを更新する、移動体に搭載されたソフトウェア更新装置(200)で実行されるソフトウェア更新方法であって、
     前記ソフトウェア提供装置は、
      新ソフトウェアと前記旧ソフトウェアの差分である差分データを取得する差分データ取得部(101)と、
      前記差分データが適用される第1のセクタを示す差分適用位置情報を取得する差分適用位置情報取得部(102)と、
      前記新ソフトウェアに関連するデータである関連データを取得する関連データ取得部(103)と、
      前記関連データが保存される第2のセクタを示す関連データ位置情報を取得する関連データ位置情報取得部(104)と、
      前記差分適用位置情報と前記関連データ位置情報とに基づき、前記第2のセクタに前記差分データが適用されるか否かを示すフラグ情報を生成するフラグ情報生成部(105)と、
     前記差分データ、前記差分適用位置情報、前記関連データ、及び前記フラグ情報を前記差分更新情報として前記ソフトウェア更新装置に送信する送信部(106)と、を有し、
     当該ソフトウェア更新方法は、
      前記差分更新情報を受信し(S201)、
      前記差分更新情報に含まれる前記差分データ及び前記差分適用位置情報を用いて、前記第1のセクタの前記旧ソフトウェアを更新し(S203~S207)、
      前記フラグ情報が前記第2のセクタに前記差分データが適用されることを示す場合、前記関連データを前記第2のセクタに書き込み(S208,S212)、
      前記フラグ情報が前記第2のセクタに前記差分データが適用されないことを示す場合、前記第2のセクタに書き込まれた前記旧ソフトウェアを退避して前記第2のセクタを消去し、退避した前記旧ソフトウェア及び前記関連データを前記第2のセクタに書き込む(S208~S212)、
     ソフトウェア更新方法。
  13.  ソフトウェア提供装置(100)から差分更新情報を受信し、前記差分更新情報を用いてセクタ単位で消去が可能なフラッシュメモリに格納された旧ソフトウェアを更新する、移動体に搭載されたソフトウェア更新装置(200)で実行可能なソフトウェア更新プログラムであって、
     前記ソフトウェア提供装置は、
      新ソフトウェアと前記旧ソフトウェアの差分である差分データを取得する差分データ取得部(101)と、
      前記差分データが適用される第1のセクタを示す差分適用位置情報を取得する差分適用位置情報取得部(102)と、
      前記新ソフトウェアに関連するデータである関連データを取得する関連データ取得部(103)と、
      前記関連データが保存される第2のセクタを示す関連データ位置情報を取得する関連データ位置情報取得部(104)と、
      前記差分適用位置情報と前記関連データ位置情報とに基づき、前記第2のセクタに前記差分データが適用されるか否かを示すフラグ情報を生成するフラグ情報生成部(105)と、
     前記差分データ、前記差分適用位置情報、前記関連データ、及び前記フラグ情報を前記差分更新情報として前記ソフトウェア更新装置に送信する送信部(106)と、を有し、
     当該ソフトウェア更新プログラムは、
      前記差分更新情報を受信し(S201)、
      前記差分更新情報に含まれる前記差分データ及び前記差分適用位置情報を用いて、前記第1のセクタの前記旧ソフトウェアを更新し(S203~S207)、
      前記フラグ情報が前記第2のセクタに前記差分データが適用されることを示す場合、前記関連データを前記第2のセクタに書き込み(S208,S212)、
      前記フラグ情報が前記第2のセクタに前記差分データが適用されないことを示す場合、前記第2のセクタに書き込まれた前記旧ソフトウェアを退避して前記第2のセクタを消去し、退避した前記旧ソフトウェア及び前記関連データを前記第2のセクタに書き込む(S208~S212)、
     ソフトウェア更新プログラム。
PCT/JP2024/015103 2023-06-08 2024-04-16 ソフトウェア提供装置及びソフトウェア更新装置 Ceased WO2024252794A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202480037570.XA CN121263777A (zh) 2023-06-08 2024-04-16 软件提供装置和软件更新装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2023095050A JP2024176490A (ja) 2023-06-08 2023-06-08 ソフトウェア提供装置及びソフトウェア更新装置
JP2023-095050 2023-06-08

Publications (1)

Publication Number Publication Date
WO2024252794A1 true WO2024252794A1 (ja) 2024-12-12

Family

ID=93795396

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2024/015103 Ceased WO2024252794A1 (ja) 2023-06-08 2024-04-16 ソフトウェア提供装置及びソフトウェア更新装置

Country Status (3)

Country Link
JP (1) JP2024176490A (ja)
CN (1) CN121263777A (ja)
WO (1) WO2024252794A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002342100A (ja) * 2001-05-17 2002-11-29 Matsushita Electric Ind Co Ltd ファームウェアの書き換え方法
US20090113386A1 (en) * 2005-08-18 2009-04-30 Johan Eker Object code generation for increased delta performance

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002342100A (ja) * 2001-05-17 2002-11-29 Matsushita Electric Ind Co Ltd ファームウェアの書き換え方法
US20090113386A1 (en) * 2005-08-18 2009-04-30 Johan Eker Object code generation for increased delta performance

Also Published As

Publication number Publication date
JP2024176490A (ja) 2024-12-19
CN121263777A (zh) 2026-01-02

Similar Documents

Publication Publication Date Title
JP5382131B2 (ja) 車両用ゲートウェイシステム
US20200372157A1 (en) Automatic firmware rollback
US10001988B2 (en) Compatibility module to support an automotive system upgrade
US9015695B2 (en) Information processing apparatus and information processing method
JP6305663B2 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
US20220171611A1 (en) Electronic control unit, software update method, software update program product and electronic control system
EP3818461A1 (en) Vehicular data privacy management systems and methods
US20220171612A1 (en) Electronic control unit, software update method, software update program product and electronic control system
EP2130120B1 (en) Data update system and computer program
JP7065356B2 (ja) 情報処理装置、情報処理方法、およびプログラム
US11841794B2 (en) Memory sub-system write sequence track
CN108876963A (zh) 一种汽车日志的存储方法、装置、微处理器及存储介质
EP4372571B1 (en) Centralized storage device, in-vehicle electronic system including the same, and method of operating the same
WO2024252794A1 (ja) ソフトウェア提供装置及びソフトウェア更新装置
US11734200B2 (en) Method for accessing data in an external memory of a microcontroller
CN117742985A (zh) 多核场景下的内存访问方法、装置、电子设备和存储介质
EP3958154A1 (en) System and method for dynamically securing software
CN115344285A (zh) 协议数据库文件升级方法、装置、存储介质及电子设备
US12524341B2 (en) Receiving executable instructions from volatile memory
KR102658832B1 (ko) 차량 포렌식 분석 방법 및 이를 수행하기 위한 컴퓨팅 장치
JP7815993B2 (ja) 更新制御装置、更新制御方法、及び更新制御プログラム
US12189967B2 (en) Partitioning system data from user data in memory
US20230229678A1 (en) Information processing device, information processing method, storage medium on which an information processing program is stored, and vehicle
JP2013134680A (ja) 情報処理装置、情報処理システム及び情報処理方法
CN118445143A (zh) 进程的应用标识确定方法、装置、设备及计算机介质

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 24819032

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE