Patent Description:
Japanese Patent Application Laid-Open (<CIT> discloses an onboard updating device that updates programs and data of an onboard device installed in a vehicle. <CIT> discloses apparatuses, methods and computer programs for updating one or more software components of a vehicle.

There are cases in which a control program that controls an onboard device, and an application program that operates on the onboard device, are installed in the onboard device.

However, if the recording media on which the control program and the program of the application are recorded are different, at the time of updating the control program and the program of the application, the updates are carried out at different opportunities, and updating of the programs is not always carried out efficiently.

An object of the present disclosure is to provide an onboard device, a vehicle, a control method, and a non-transitory recording medium on which an onboard program is recorded, which can update programs efficiently.

An onboard device of a first aspect is defined in claim <NUM>.

The onboard device of the first aspect acquires an update package that includes at least one of a control program that controls the onboard device, and an application program that carries out processing on the onboard device. The onboard device carries out updating of the control program and the application program that are recorded in the onboard device, in accordance with the update package.

Namely, in accordance with this onboard device, by acquiring the update package, updating of the control program and of the application program are carried out upon the same occasion. Due thereto, the programs can be updated efficiently. In addition, even in a case in which updating fails, the control program can be returned to the control program that is before the updating.

In an onboard device of a second aspect, in the onboard device of the first aspect, in a case in which a third program that updates another program stored in another onboard device is further included in the update package, the updating section transmits the third program to the another onboard device and carries out updating of the another program.

In accordance with the onboard device of the second aspect, the programs of the onboard device at the vehicle can be updated upon the same occasion.

In an onboard device of a third aspect, in the onboard device of the first aspect or the second aspect, the acquiring section acquires the update package via wireless communication.

In accordance with the onboard device of the third aspect, the update package can be acquired easily.

A vehicle of a fourth aspect includes: the onboard device of any one of the first aspect through the fourth aspect; and at least one other onboard device that is connected to the onboard device.

In accordance with the vehicle of the fourth aspect, the programs of the onboard device that is installed in the vehicle can be updated.

A control method of a fifth aspect is defined in claim <NUM>.

In accordance with the control method of the fifth aspect, an update package, which includes at least one of a control program that controls the onboard device and an application program that carries out processing on the onboard device, is acquired. Updating of the control program and of the application program that are recorded in the onboard device are carried out in accordance with the update package. Namely, in accordance with this control method, by acquiring the update package, updating of the control program and of the application program are carried out upon the same occasion. Due thereto, the programs can be updated efficiently.

A sixth aspect is a non-transitory computer-readable recording medium storing an onboard program, as defined in claim <NUM>.

The computer, at which is executed the onboard program that is stored in the non-transitory recording medium of the seventh aspect, updates the control program and the application program that are recorded in the onboard device. The computer acquires an update package that includes at least one of a control program that controls the onboard device, and an application program that carries out processing on the onboard device. The computer carries out updating of the control program and the application program that are recorded in the onboard device, in accordance with the update package. Namely, in accordance with the computer at which this onboard program is executed, by acquiring the update package, updating of the control program and of the application program are carried out upon the same occasion. Due thereto, the programs can be updated efficiently.

In accordance with the present disclosure, programs can be updated efficiently.

An onboard system that includes a vehicle, in which the onboard device of the present disclosure is installed, and a central server is described. The onboard system updates a control program and an application program that are recorded in the onboard device, by using an update package acquired from the central server.

As illustrated in <FIG>, an onboard system <NUM> of embodiments of the present disclosure is structured to include a vehicle <NUM> and a central server <NUM>. An onboard unit <NUM> serving as the onboard device is installed in the vehicle <NUM>. The onboard unit <NUM> and the central server <NUM> are connected to one another through network N.

The onboard unit <NUM> acquires (OTA: Over the Air), from the central server <NUM> and via the network N which uses wireless communications or the like, a control program that controls the onboard unit <NUM>, and an application program that carries out processing on the onboard unit. The onboard unit <NUM> carries out updating of the respective programs recorded in the onboard unit <NUM> by using the control program and the application program that are included in the acquired update package. Here, the onboard unit <NUM> is an example of the "onboard device". Further, the control program included in the update package is an example of the "first program", and the application program included in the update package is an example of the "second program".

As an example, as illustrated in <FIG>, the onboard unit <NUM> has a CPU (Central Processing Unit) 20A, a ROM (Read Only Memory) 20B and a storage 20D which are described later. Here, the ROM 20B is an example of the "first recording medium", and the storage 20D is an example of the "second recording medium".

The CPU 20A that is installed in the onboard unit <NUM> functions as an OTA client <NUM>, a UCM (Update and Configuration Management) master <NUM>, and a UCM sub <NUM>. Further, a control program <NUM> that is described later is stored in the ROM 20B, and an application program <NUM> that is described later is stored in the storage 20D.

As illustrated in <FIG>, the OTA client <NUM> acquires an update package from the central server <NUM>, and inputs the update package to the UCM master <NUM>. The UCM master <NUM> manages the updating of programs relating to the ECUs (Electronic Control Units) that are installed in the vehicle <NUM>. The UCM sub <NUM> manages the updating of the programs at the onboard unit <NUM>. In accordance with the programs that are included in the inputted update package, the UCM master <NUM> distributes and updates the respective programs.

For example, in a case in which the control program <NUM> and the application program <NUM> that are described later are included in the update package, these respective programs are inputted to the UCM sub <NUM>. The UCM sub <NUM> updates the control program <NUM> stored in the ROM 20B of the onboard unit <NUM> and the application program <NUM> stored in the storage 20D, by using the acquired control program <NUM> and application program <NUM>. Further, in a case in which a program relating to another ECU that is different than the onboard unit <NUM> (hereinafter called "another program") is included in the update package, the UCM master <NUM> distributes the another program to that another ECU and updates the another program.

Note that the one vehicle <NUM> that includes the onboard unit <NUM> is illustrated with respect to the one central server <NUM> in <FIG> and <FIG>. However, the numbers of the vehicle <NUM>, the onboard unit <NUM> and the central server <NUM> are not limited to these. Further, a form is described in which the onboard unit <NUM> relating to the present embodiment acquires the update package by using wireless communication. However, the present disclosure is not limited to this. The update package may be acquired via an interface. For example, the update package may be acquired via an interface from an external recording device such as an SD (Secure Digital) memory card, a USB (Universal Serial Bus) memory, or the like.

As illustrated in <FIG>, the vehicle <NUM> relating to the present embodiment is structured to include the onboard unit <NUM>, plural ECUs <NUM>, and plural onboard equipment <NUM>.

The onboard unit <NUM> is structured to include the CPU 20A, the ROM 20B, a RAM (Random Access Memory) 20C, the storage 20D, an in-vehicle communication I/F (interface) 20E, and a wireless communication I/F 20F. The CPU 20A, the ROM 20B, the RAM 20C, the storage 20D, the in-vehicle communication I/F 20E and the wireless communication I/F 20F are connected so as to be able to communicate with one another via an internal bus <NUM>.

The CPU 20A is a central computing processing unit, and executes various programs and controls the respective sections. Namely, the CPU 20A reads-out programs from the ROM 20B, and executes the programs by using the RAM 20C as a workspace.

The ROM 20B records various programs and various data. An onboard program <NUM> that updates respective programs is recorded in the ROM 20B of the present embodiment. Accompanying the execution of the onboard program <NUM>, the onboard unit <NUM> acquires an update package, and executes processing of updating the control program <NUM> and the application program <NUM> that are described later. Further, the control program <NUM> that carries out control of the onboard unit <NUM>, and a control flag <NUM> that indicates the control program <NUM> that is currently being executed, are recorded in the ROM 20B. The RAM 20C temporarily records programs and data as a workspace.

The storage 20D that serves as a memory is structured by an HDD (Hard Disk Drive), an SSD (Solid State Drive), or an eMMC (Embedded Multi Media Card), and various programs and various data are recorded therein. The application program <NUM> and an update package <NUM> are recorded in the storage 20D of the present embodiment.

The in-vehicle communication I/F 20E is an interface for connecting the respective ECUs <NUM>. Communication standards in accordance with CAN protocol are used at this interface. The in-vehicle communication I/F 20E is connected to an external bus <NUM>.

The wireless communication I/F 20F is a wireless communication module for communicating with the central server <NUM>. Communication standards such as, for example <NUM>, LTE, Wi-Fi®, or the like are used at this wireless communication module. The wireless communication I/F 20F is connected to the network N.

The ECUs <NUM> are electronic control modules for controlling the onboard equipment <NUM> that are installed in the vehicle <NUM>. The ECUs <NUM> are, for example, an ADAS (Advanced Driver Assistance System) ECU, a steering ECU, an engine ECU, and the like. Here, each of the ECUs <NUM> records a program (hereinafter called "another program") for controlling the onboard equipment connected thereto, and, by executing that another program, executes processing that controls the onboard equipment <NUM> connected thereto. Here, the ECU <NUM> is an example of the "another onboard device".

As illustrated in <FIG>, at the onboard unit <NUM> of the present embodiment, due to the CPU 20A executing the onboard program <NUM>, the CPU 20A functions as an acquiring section <NUM>, an updating section <NUM>, and a recording section <NUM>.

The acquiring section <NUM> has the functions of acquiring the update package <NUM> from the central server <NUM>, and acquiring the control flag <NUM> from the ROM 20B. Here, the update package <NUM> includes at least one of the control program <NUM> or the application program <NUM>. Note that, in the present embodiment, description is given of a form in which the update package <NUM> includes at least one of the control program <NUM> or the application program <NUM>. However, the present disclosure is not limited to this. The update package <NUM> may include other programs.

The updating section <NUM> has the function of updating the respective programs in accordance with the programs included in the update package <NUM>. Specifically, in a case in which the control program <NUM> is included in the acquired update package <NUM>, the updating section <NUM>, by using this control program <NUM>, updates the control program <NUM> that is recorded in the ROM 20B. The updating section <NUM> refers to the acquired control flag <NUM> and updates the control program <NUM>.

Here, the ROM 20B relating to the present embodiment records the control program <NUM> that is currently being executed, and the control program <NUM> that is one generation before the control program <NUM> that is currently being executed. Further, the control flag <NUM> indicates the recording region in which the control program <NUM> that is currently being executed is recorded. Specifically, the ROM 20B has two recording regions, which are recording region A and recording region B. The control flag <NUM> indicates the recording region in which the control program <NUM> that is currently being executed is recorded. For example, in a case in which the control flag <NUM> is "<NUM>", the control flag <NUM> expresses that the control program <NUM> that is currently being executed is recorded in recording region A. In a case in which the control flag <NUM> is "<NUM>", the control flag <NUM> expresses that the control program <NUM> that is currently being executed is recorded in recording region B. Note that, in the following description, the recording region in which the control program <NUM> that is currently being executed is recorded is called the "active bank". The recording region in which the control program <NUM>, which is the object of updating and which is different than the control program <NUM> that is currently being executed, is recorded is called the "updating bank". Namely, the control flag <NUM> indicates the active bank. Here, the control program in the active bank is an example of the "control program that is after updating", and the control program in the updating bank is an example of the "control program that is before updating".

At the time of updating the control program <NUM>, the updating section <NUM> updates the control program <NUM> that is recorded in the updating bank, which is different than the active bank indicated by the control flag <NUM>. For example, in a case in which the control flag <NUM> is "<NUM>", the updating bank is "recording region B", and therefore, the updating section <NUM> updates the control program <NUM> that is recorded in recording region B. In a case in which the control flag <NUM> is "<NUM>", the updating bank is "recording region A", and therefore, the updating section <NUM> updates the control program <NUM> that is recorded in recording region A.

Further, the updating section <NUM> has the function of updating the control flag <NUM> after updating the control program <NUM>. Specifically, after updating the control program <NUM>, in a case in which the control flag <NUM> is "<NUM>", the updating section <NUM> updates the control flag <NUM> to "<NUM>", and, in a case in which the control flag <NUM> is "<NUM>", the updating section <NUM> updates the control flag <NUM> to "<NUM>".

Further, in a case in which the application program <NUM> is included in the update package <NUM>, the updating section <NUM>, by using that application program <NUM>, updates the application program <NUM> that is recorded in the storage 20D. In a case in which another program is included in the update package <NUM>, the updating section <NUM> transmits that another program to the ECU <NUM> that relates to that another program, and updates that another program.

The recording section <NUM> has the functions of recording the updated control program <NUM> in the ROM 20B, and recording the updated application program <NUM> in the storage 20D. Further, the recording section <NUM> records the acquired update package <NUM> in the storage 20D.

Before describing the operation of the onboard system <NUM>, the flow of data at the onboard unit <NUM> that serves as the onboard device will be described next with reference to <FIG> is a data flow diagram illustrating an example of the flow of data at the onboard unit <NUM>.

The acquiring section <NUM> illustrated in <FIG> functions as the OTA client <NUM> of <FIG>. The acquiring section acquires the update package <NUM>, which includes the control program <NUM> and the application program <NUM>, from the central server <NUM>, and inputs the update package <NUM> to the updating section <NUM>. Further, the acquiring section <NUM> acquires the control flag <NUM> from the recording section <NUM>, and inputs the control flag <NUM> to the updating section <NUM>.

The updating section <NUM> illustrated in <FIG> functions as the UCM master <NUM> and the UCM sub <NUM> of <FIG>. By using the programs included in the inputted update package <NUM>, the updating section <NUM> updates the control program <NUM> and the application program <NUM> that are recorded in the recording section <NUM>.

In a case of updating the control program <NUM>, the updating section <NUM> updates control program 110A of the updating bank in accordance with the inputted control flag <NUM>. For example, after updating the control program 110A of the updating bank, the updating section <NUM> updates the control flag <NUM> so as to indicate the control program 110A of the updating bank. By updating the control flag <NUM>, control program 110B of the active bank which was not updated is updated on the occasion of the next updating.

The flow of processing executed at the onboard system <NUM> of the present embodiment is described by using the flowchart of <FIG>. The processing at the onboard unit <NUM> is executed due to the CPU 20A of the onboard unit <NUM> functioning as the acquiring section <NUM>, the updating section <NUM> and the recording section <NUM>. The updating processing illustrated in <FIG> is executed, for example, in a case in which an instruction to execute the processing of updating the respective programs is inputted.

In step S101, the CPU 20A judges whether or not the update package <NUM> has been acquired from the central server <NUM>. In a case in which the update package <NUM> has been acquired (step S101: YES), the CPU 20A moves on to step S102. On the other hand, in a case in which the update package <NUM> has not been acquired (step S101: NO), the CPU 20A stands-by until the update package <NUM> is acquired.

In step S102, the CPU 20A judges whether or not the acquired update package <NUM> contains the control program <NUM>. In a case in which the control program <NUM> is included (step S102: YES), the CPU 20A moves on to step S103. On the other hand, in a case in which the control program <NUM> is not included (step S102: NO), the CPU 20A moves on to step S107.

In step S103, the CPU 20A acquires the control flag <NUM> from the ROM 20B.

In step S104, the CPU 20A acquires the control program <NUM> from the update package <NUM>.

In step S105, the CPU 20A updates the control program <NUM>, which is recorded in the updating bank of the ROM 20B, by using the acquired control program <NUM>.

In step S106, the CPU 20A updates the control flag <NUM>.

In step S107, the CPU 20A judges whether or not the acquired update package <NUM> includes the application program <NUM>. In a case in which the application program <NUM> is included (step S107: YES), the CPU 20A moves on to step S108. On the other hand, in a case in which the application program <NUM> is not included (step S107: NO), the CPU 20A moves on to step S110.

In step S108, the CPU 20A acquires the application program <NUM> from the update package <NUM>.

In step S109, the CPU 20A updates the application program <NUM>, which is recorded in the storage 20D, by using the acquired application program <NUM>.

In step S110, the CPU 20A judges whether or not to end the updating processing. In a case of ending the processing (step S110: YES), the CPU 20A ends the processing. On the other hand, in a case of not ending the processing (step S110: NO), the CPU 20A moves on to step S101.

The onboard unit <NUM> of the present embodiment acquires the update package <NUM>, and carries out updating of the control program <NUM> and the application program <NUM> in accordance with the programs included in the acquired update package.

As described above, in accordance with the present embodiment, the programs can be updated efficiently.

The first embodiment describes a form in which the control program <NUM> and the application program <NUM> that are recorded in the onboard unit <NUM> are updated. The second embodiment describes a form in which another program that is recorded in the ECU <NUM> also is updated.

Note that the structure of the onboard system (see <FIG> and <FIG>), the example of the hardware structures of the vehicle <NUM> (see <FIG>), the example of the functional structures of the onboard unit <NUM> (see <FIG>) and the example of the data flow (see <FIG>) relating to the present embodiment are similar to those of the first embodiment, and therefore, description thereof is omitted. The points that differ from the first embodiment are described hereinafter. Further, the same structures are denoted by the same reference numerals, and description thereof is omitted.

The update package <NUM> relating to the present embodiment further includes another program that is recorded in the ECU <NUM>. The onboard unit <NUM> updates the another program that is recorded in the ECU <NUM>, by using the update package <NUM>.

The flow of processing that is executed at the onboard system <NUM> of the present embodiment is described by using the flowchart of <FIG>. The processing at the onboard unit <NUM> is executed due to the CPU 20A of the onboard unit <NUM> functioning as the acquiring section <NUM>, the updating section <NUM> and the recording section <NUM>. The updating processing illustrated in <FIG> is executed, for example, in a case in which an instruction to execute the processing of updating the respective programs is inputted. Note that, in <FIG>, steps that are the same as those of the updating processing illustrated in <FIG> are denoted by the same step numbers as in <FIG>, and description thereof is omitted.

In step S111, the CPU 20A judges whether or not the acquired update package <NUM> contains another program that is recorded in the ECU <NUM>. In a case in which another program is included (step S111: YES), the CPU 20A moves on to step S112. On the other hand, in a case in which another program is not included (step S111: NO), the CPU 20A moves on to step S110.

In step S112, the CPU 20A acquires the another program from the update package <NUM>.

In step S113, the CPU 20A transmits the acquired another program to the ECU <NUM>, and updates the another program that is recorded in the ECU <NUM>.

The onboard unit <NUM> of the present embodiment acquires the update package <NUM>, and carries out updating of another program that is recorded in the ECU <NUM> in accordance with the another program that is included in the acquired update package.

Note that the above embodiments describe forms in which the acquisition of the update package <NUM> is used as the occasion for updating the respective programs. However, the present disclosure is not limited to this. The occasion upon which the respective programs are updated may be controlled. For example, after the update package <NUM> is acquired, the respective programs that are included in the update package <NUM> may be updated in a case in which the engine or the like is stopped and the vehicle <NUM> is stopped.

Further, the above embodiments describe forms in which the control program <NUM> that is recorded in the recording region is updated in accordance with the control flag <NUM> that is stored in the ROM 20B. However, the present disclosure is not limited to this. The application program <NUM> may be updated in accordance with the control flag. For example, the storage 20D may have plural recording regions and a flag indicating the active bank, and the application program <NUM> may be recorded in the respective recording regions. The updating section <NUM> may judge the updating bank of the storage 20D in accordance with the flag, and update the application program <NUM> of the updating bank.

Note that any of various types of processors other than a CPU may execute the various processing that are executed due to the CPU 20A reading-in software (a program) in the above-described embodiments. Examples of processors in this case include PLDs (Programmable Logic Devices) whose circuit structure can be changed after production such as FPGAs (Field-Programmable Gate Arrays) and the like, and dedicated electrical circuits that are processors having circuit structures that are designed for the sole purpose of executing specific processing such as ASICs (Application Specific Integrated Circuits) and the like, and the like. Further, the above-described respective processing may be executed by one of these various types of processors, or may be executed by a combination of two or more of the same type or different types of processors (e.g., plural FPGAs, or a combination of a CPU and an FPGA, or the like). Further, the hardware structures of these various types of processors are, more specifically, electrical circuits that combine circuit elements such as semiconductor elements and the like.

The above embodiments describe forms in which the respective programs are stored in advance (are installed) in a non-transitory, computer-readable recording medium. For example, the onboard program <NUM> at the onboard unit <NUM> is stored in advance in the ROM 20B. However, the present disclosure is not limited to this. The respective programs may be provided in forms of being recorded in a non-transitory recording medium such as a CD-ROM (Compact Disc Read Only Memory), a DVD-ROM (Digital Versatile Disc Read Only Memory), a USB (Universal Serial Bus) memory, or the like. Further, the programs may be in a form of being downloaded from an external device over a network.

Claim 1:
An onboard device comprising:
a recording section (<NUM>) that, at an onboard device (<NUM>) installed at a vehicle (<NUM>), is configured to record a control program (<NUM>) to be recorded in a first recording medium (20B) and configured to carry out processing for controlling the onboard device (<NUM>), and an application program (<NUM>) to be recorded in a second recording medium (20D) different than the first recording medium (20B) and configured to carry out processing on the onboard device (<NUM>);
an acquiring section (<NUM>) configured to acquire an update package (<NUM>) including at least one of a first program configured to update the control program (<NUM>), or a second program configured to update the application program (<NUM>); and
an updating section (<NUM>) configured to carry out, upon the same occasion, updating of the control program (<NUM>) in the first recording medium and the application program (<NUM>) in the second recording medium in accordance with the acquired update package (<NUM>) in a case in which the acquired update package (<NUM>) contains the first program and the second program, wherein
the recording section (<NUM>) is configured to record, as the control program (<NUM>) at the first recording medium (20B), a control program (110B) to be currently executed, in a second recording region (B), and a control program (110A) that is one generation before the control program (110B) to be currently executed, in a first recording region (A), and
the updating section (<NUM>) is configured to update the control program (110A) that is one generation before the control program to be executed in a case in which a flag (<NUM>) indicates the first recording region (A) and to update the control program (110B) to be currently executed in a case in which the flag (<NUM>) indicates the second recording region (B).