WO2018150820A1 - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
WO2018150820A1
WO2018150820A1 PCT/JP2018/002074 JP2018002074W WO2018150820A1 WO 2018150820 A1 WO2018150820 A1 WO 2018150820A1 JP 2018002074 W JP2018002074 W JP 2018002074W WO 2018150820 A1 WO2018150820 A1 WO 2018150820A1
Authority
WO
WIPO (PCT)
Prior art keywords
function
jump table
program
information processing
jump
Prior art date
Application number
PCT/JP2018/002074
Other languages
English (en)
French (fr)
Inventor
朋仁 蛯名
Original Assignee
日立オートモティブシステムズ株式会社
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 日立オートモティブシステムズ株式会社 filed Critical 日立オートモティブシステムズ株式会社
Priority to JP2018568062A priority Critical patent/JP6676791B2/ja
Priority to US16/463,769 priority patent/US20190286447A1/en
Priority to EP18754568.6A priority patent/EP3584697B1/en
Priority to CN201880005431.3A priority patent/CN110312991A/zh
Publication of WO2018150820A1 publication Critical patent/WO2018150820A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

Definitions

  • the present invention relates to a technique for updating a program of an information processing apparatus used for vehicle control or the like.
  • the vehicle control system includes an electronic vehicle control device and an electronic control device that controls the vehicle control device, that is, an ECU (Electronic Control Unit).
  • the ECU and the vehicle control device cooperate with each other through communication to control the vehicle.
  • complicated control such as automatic driving of a vehicle is required for a vehicle control system. Therefore, the ECU is configured to execute a software program by a processor. And the ECU program is complicated and sophisticated.
  • OTA Over The Air
  • the mobile phone is in a state where it cannot make a call while rewriting the program.
  • the ECU cannot control the vehicle while the program is being rewritten. Therefore, it is desirable that the rewriting of the ECU program is completed as quickly as possible.
  • Patent Document 1 discloses a technique for shortening the time required for program update. According to the technique of Patent Document 1, when updating a program that uses a function, it is possible to shorten the program update time by writing only the added function.
  • An object of the present invention is to provide a technique for shortening a time during which control cannot be executed by a program update accompanying a function change in an information processing apparatus.
  • An information processing apparatus includes a storage unit and a processing unit, and the storage unit stores a program including a function and a jump table that defines a call to the function by the program,
  • the processing unit determines the function to be called with reference to the jump table, and in the program update accompanying the change of the function, writes a new function that is a function after the change to the storage unit,
  • the jump table is updated to call a new function.
  • the jump table is updated so as to call the new function, thereby shortening the time during which the control cannot be executed along with the program update. be able to.
  • FIG. 10 is a diagram for explaining function update in the first embodiment.
  • FIG. 10 is a diagram for explaining switching of function jump tables in the first embodiment. It is a figure for demonstrating selection of the function jump table by the jump table selection part in Example 1.
  • FIG. 6 is a flowchart illustrating a jump table selection process according to the first embodiment. It is a figure which shows the arrangement
  • FIG. FIG. 10 is a diagram illustrating an example of function arrangement in a memory 11 according to a second embodiment.
  • FIG. 10 is a diagram for explaining a function update in the third embodiment.
  • FIG. 1 is a conceptual diagram showing a vehicle according to the first embodiment.
  • the vehicle control device 1 is incorporated in the vehicle C of the first embodiment.
  • the vehicle control device 1 is an ECU (electronic control unit) that collects input information from each part of the vehicle C, generates a control signal for controlling each part of the vehicle C based on the input information, and transmits the control signal to each part.
  • ECU electronic control unit
  • FIG. 2 is a block diagram illustrating a hardware configuration of the vehicle control device according to the first embodiment.
  • the vehicle control device 1 includes a processing unit 10, a memory 11, and a function unit 16.
  • the memory 11 is a storage device for recording programs and data, and has a program storage area 17 for storing software programs and a jump table storage area 18 for storing jump tables.
  • the program is composed of a plurality of functions.
  • the jump table is information defining a function call by a program. Information for calling a desired function can be obtained by referring to the jump table.
  • the processing unit 10 includes a processor (not shown), and controls each unit of the vehicle C by executing a software program. In the program execution, the processing unit 10 determines a function to be called with reference to the jump table. In addition, when performing a program update with a function change, the processing unit 10 writes a new function, which is a function after the change, in the program storage area 17 of the memory 11 and creates a jump table so as to call the new function. Update. Although it may take a long time to write a function to the memory 11, according to this embodiment, the vehicle control apparatus 1 updates the jump table so as to call the new function after writing the new function in the program update. Therefore, it is possible to reduce the time during which control cannot be executed by updating the program.
  • the function unit 16 interfaces with each unit of the vehicle C, and acquires input information or transmits a control signal.
  • the vehicle control device 1 operates when the processor executes a program.
  • a program executed by the processor calls a function
  • the address of the called function is included in the instruction sequence for calling the function. For this reason, the address of the called function must be fixed.
  • the ECU Since the ECU is required to be small, light, and low in cost, the ECU often places functions at consecutive addresses without a gap in order to save memory capacity. When one of the functions is modified and the size of the function is changed, the address where another function that has not been modified is arranged is changed.
  • the vehicle control device 1 of the present embodiment can correct the function without changing the instruction sequence of the caller function.
  • the function here can also be referred to as a subroutine or a procedure.
  • FIG. 3 is a configuration diagram in the memory of the vehicle control device according to the first embodiment.
  • the jump table selection unit 15 is realized by the processing unit 10 described above executing a program.
  • the program arranged in the memory 11 of the vehicle control device 1 includes a plurality of functions A121 and B124 that can be called from other functions, and further includes an internal function Aa122 and an internal function Ab123 that are called from the function A121, and a function B124. Contains an internal function Ba125 that is only called.
  • function A calls another function (for example, function B)
  • function A does not call function B directly, but calls function B to be called to jump table selection unit 15. Let them choose.
  • a jump table is provided for the jump table selection unit 15 to select the function B.
  • the jump table includes a function jump table A12 and a function jump table B13 that specify an address of a function to be called, and jump table information 14 indicating a function jump table to be used.
  • the jump table selection unit 15 realized by the processing unit 10 designates the address of the new function while leaving the first function jump table (function jump table A12) for designating the function before change in the jump table update.
  • the second function jump table (function jump table B13) is written in the jump table storage area, and the jump table information 14 is updated so that the function jump table to be used is changed from the function jump table A12 to the function jump table B13.
  • the jump table information 14 is updated so as to use the function jump table B13, so that it is possible to further reduce the time during which control cannot be executed with the program update.
  • the jump table selection unit 15 is used to select one of the function jump tables, and then the function is called by the address indicated in the selected function jump table. To do. For example, when the function A 121 calls the function B 124, the function A 121 first selects the function jump table A 12 or the function jump table B 13 using the jump table selection unit 15 and then displays the function jump table B 13 in the selected function jump table. The function B address 132 or the function new B address 134 is called using the obtained address.
  • the function new B 126 and the internal function new Ba 127 are written in the memory 11 in advance. Also, the function jump table B13 having the function new B address 134 indicating the addresses of the function new B 126 and the internal function new Ba 127 is written into the memory 11. Further, the table B information 142 which is jump table information related to the function jump table B13 is written in the memory 11.
  • the jump table selection unit 15 checks the table A information 141 and the table B information 142, which are jump table information, and determines which is valid.
  • the jump table information indicates whether the function jump table is valid or invalid for each function jump table. If the function jump table B13 and the table B information 142 are correctly written and validated, the jump table selection unit 15 selects the function jump table B13. Therefore, the function A121 calls the function new B126 with reference to the function jump table B13.
  • the jump table information 14 indicates whether the function jump tables 12 and 13 are normally written and valid for each function jump table 12 and 13.
  • the jump table selection unit 15 selects a function jump table to be used from the valid function jump tables. Whether or not each function jump table is valid, that is, whether or not it is a function jump table that can be used, is managed in the function jump table information, so whether or not the function jump table can be used when selecting a function jump table to be used Can be easily determined, and the time during which the control cannot be executed can be reduced.
  • the jump table information is information that can be used to determine which function jump table is the latest.
  • the processing unit 10 When changing the function jump table to be used from the function jump table A12 to the function jump table B13, the processing unit 10 updates the function jump table A12 from the latest state to the function jump table B13. Since the jump table selection unit 15 can easily select the function jump table to be used depending on which function jump table is the latest, the time during which the control cannot be executed can only be the time for updating the jump table information. .
  • the jump table information includes the creation date and time for each function jump table
  • the jump table selection unit 15 may determine which function jump table is the latest based on the creation date and time.
  • FIG. 4 is a diagram for explaining the function update in the first embodiment.
  • the format of the function jump table 21 can be either a format that stores a combination of a jump instruction to a function and a jump destination address, or a format that stores only a jump destination address.
  • the new function is written in the free area 22 of the memory, and the address jumping to the old function is updated to the address jumping to the new function in the function jump table.
  • the function B 224 is updated to a new version of the function new B 226, the new version of the function new B 226 is written in the free area 22 of the memory, and the content of the function B address 232 jumping to the function B 224 in the function jump table 21 is changed to the function new.
  • the function is updated to the new B address 234 that jumps to B226.
  • the updated function new B 226 can be called without correcting the call instruction of the function A 221.
  • FIG. 5 is a diagram for explaining switching of the function jump table in the first embodiment.
  • the function jump table that holds the address of the old function and the function jump table that holds the address of the new function coexist, and the jump table selection unit 15 refers to the jump table information and uses the function jump table. By selecting a table, functions can be switched in a short time.
  • the function jump table A31 that holds the address of the old function and the function jump table B32 that holds the address of the new function are included. Selects the function jump table to be used by referring to the jump table information 35.
  • the function jump table A31 holds the addresses of the function A331, the function B332, and the function C333
  • the function jump table B32 holds the addresses of the function new A334, the function new B335, and the function C333.
  • FIG. 6 is a diagram for explaining selection of a function jump table by the jump table selection unit in the first embodiment.
  • the jump table information 42 includes a table state 421 and table information 422 as information on each function jump table.
  • the state of the function jump table managed in the table state 421 includes “normal operation”, “update in progress”, “operation not confirmed”, “operation confirmation in progress”, and “abnormality occurrence”.
  • the table information 422 includes information on the update date / time or the number of updates or the number of operations as information on the function jump table.
  • the jump table selection unit 15 refers to the table state 421 and the table information 422 to select a function jump table to be used.
  • FIG. 7 is a state transition diagram showing a change in the table state in the first embodiment.
  • the writing of the function to the memory 11 is started from the state of unused 51 where the function jump table is not used, and the state of updating 52 is being executed.
  • the operation is not confirmed 53.
  • the number of operations of the table information 422 is zero.
  • the state of operation unconfirmed 53 is a state in which the function has been written to the memory 11 but has not been operated once. If the operation is not confirmed 53, the jump table selection unit 15 selects the function jump table. Thereafter, the state of the function jump table becomes “being checked” 54 at the timing when the vehicle control device 1 is first turned on.
  • the function jump table is in the normal operation 55.
  • the state of the function jump table becomes the abnormality occurrence 56.
  • the function jump table in which the abnormality occurs 56 is not selected by the jump table selection unit 15.
  • the jump table selection unit 15 calls the function before change when a predetermined failure occurs within a certain time after the jump table is updated so as to call a new function. Return the jump table to its pre-update state.
  • the original state can be quickly restored, and normal control can be maintained as much as possible.
  • FIG. 8 is a flowchart showing the jump table selection process in the first embodiment.
  • the jump table selection processing 61 is executed by the jump table selection unit 15.
  • the jump table selection process 61 is as follows.
  • Step 611 First, it is determined whether or not there is a table of unconfirmed operation 53. If yes, go to step 612; if no, go to step 613. Step 612: It is determined whether or not the number of operations exceeds a predetermined number. If yes, go to step 614; if no, go to step 615. Step 613: It is determined whether or not there are a plurality of function jump tables whose table state 421 is normal operation. If yes, go to step 617; if no, go to step 618. Step 614: The table state 421 is changed to the normal operation 55, and the process proceeds to Step 613.
  • Step 615 Select a function jump table 53 for which operation has not been confirmed 53 or for which operation has been confirmed, and proceed to Step 616.
  • Step 616 One is added to the number of operations of the table information 422, and the process is terminated.
  • Step 617 The most recent function jump table having a plurality of normal operations is selected, and the process is terminated. It can be determined that the latest function jump table refers to the update date and time of the table information 422.
  • Step 618 A function jump table for normal operation is selected and the process is terminated.
  • the operation of the jump table selection unit 15 is shown, but the operation is not limited to this.
  • the operation of the jump table selection unit 15 may vary depending on requirements required for the vehicle control device 1 to be applied.
  • Non-volatile memories used in ECUs cannot be rewritten individually, and can be initialized or erased in a unit of memory block. Therefore, even when a part of the memory is changed, initialization or erasing is performed in units of memory blocks, the same data is written again in the unchanged part, and new data is written in the changed part. Become.
  • the block size depends on the microcomputer design. The time required for rewriting the memory block is proportional to the size of the memory block.
  • FIG. 9 is a diagram illustrating the function jump table and the arrangement of the functions in the memory according to the first embodiment.
  • a plurality of memory blocks having different sizes are formed in the storage area of the memory 11, and the memory blocks of the sizes suitable for the programs and data are provided. It has been done to arrange.
  • two types of memory blocks having different sizes are defined in the memory 11.
  • the larger size is called a large capacity block
  • the smaller size is called a small capacity block.
  • the program storage area is defined as a large capacity block
  • the jump table storage area is defined as a small capacity block.
  • the function jump table is arranged in the small capacity block, and the function is arranged in the large capacity block.
  • the program including the function and the jump table are stored in blocks suitable for the respective data amounts, each block including the large-capacity block and the small-capacity block can be used efficiently.
  • the function jump table is arranged in the memory block 71 which is a small capacity block, and the function is arranged in the memory blocks 72 and 73 which are large capacity blocks.
  • the memory block 72 has no unused portion, and the memory block 73 has an unused portion.
  • the function When writing a modified function to the memory 11, the function writes to an unused part of the memory block 73. Since the memory 11 can be used while the function is being written, for example, an ECU mounted on the automobile can operate. Since the function can be written to the memory 11 even when the automobile is in use, the writing can be executed without restricting the use of the automobile even when a large number of functions are written to the memory 11.
  • the function jump table is arranged in the small capacity block. The rewriting time of the function jump table arranged in the memory block 71 which is a small capacity block is shorter than the writing time to the memory block 72 which is a large capacity block. Therefore, the probability that an abnormality will occur due to unexpected power interruption can be reduced.
  • the processing unit 10 is, for example, a jump table when the vehicle control device 1 is powered on. It is good to update. Since the update of the jump table is completed in a short time as described above at the timing when the power is turned on, the program update can be executed so that there is little influence on the traveling of the vehicle such that the vehicle is not traveling. .
  • the processing unit 10 may update the jump table when the vehicle engine is stopped. Since the update of the jump table is completed in a short time as described above at the timing of stopping the engine, the program can be updated so as not to affect the running of the vehicle.
  • a new function is sequentially added and written in an empty area of the program storage area of the memory. If this method is continued, the free space in the program storage area will gradually decrease, and eventually the function cannot be corrected. However, if the function update is repeated a plurality of times, the old version of the function is no longer used, and the storage area of the memory is unnecessarily occupied.
  • the processing unit 10 is a state where a used function and a non-used function are mixed in the same memory block, and only the used function is used as a copy source and the memory block is defined as the memory block.
  • Another different memory block is duplicated as a duplication destination, and the duplication source memory block is made empty. Since the memory block in which the function to be used exists can be made an empty block, the memory storage area can be used effectively. For example, when the remaining capacity of a memory block used to store a new function is equal to or less than a predetermined value, an empty block process for the memory block may be executed.
  • the vehicle control apparatus is basically the same as that of the first embodiment except for the points described below. Hereinafter, the difference between the second embodiment and the first embodiment will be mainly described.
  • the data on the memory 11 can be deleted only in units of memory blocks. For this reason, a memory block in which even one function used exists cannot erase internal data and cannot free up a storage area of the memory 11.
  • the function jump table to be used and the function jump table after the update are made to coexist and the function jump table to be used is updated from the one before the update.
  • the process of switching to is performed. If an abnormality occurs immediately after the use of the updated function is started, a process of returning to the function before the update is performed.
  • FIG. 10 is a diagram illustrating an example of the arrangement of functions in the memory 11 according to the second embodiment.
  • the function old A811, the function A813, and the function new A814 are a series of functions sequentially updated. Looking at the memory 11 before the empty block processing shown on the left side of FIG. 10, regarding the function A stored in the memory block 81, there are three versions of the function old A811, function A813, and function new A814. The function old A811 is left in the memory without being used.
  • the memory block including the old function A811, which is not used, is to be erased to be an empty block. However, since there is a function B812 that has not been changed, it cannot be erased as it is.
  • the processing unit 10 duplicates the function B812, the function A813, and the function new A814 excluding the unused function old A811, and selects a new memory block. Rewrite function jump table. As a result, the memory block 81 has no function to be used. Therefore, the processing unit 10 erases the data in the memory block 81 and generates a free block 82 as in the memory 11 after the free block processing shown on the right side of FIG. When a function is updated thereafter, a new function can be recorded in the empty block 82.
  • the vehicle control device 1 according to the third embodiment is basically the same as that of the first embodiment except for the points described below.
  • FIG. 11 is a diagram for explaining the function update in the third embodiment.
  • the difference between the third embodiment and the first embodiment will be mainly described.
  • the data on the memory 11 cannot be erased unless the memory block unit, as in the second embodiment.
  • the internal data cannot be erased. Therefore, in the third embodiment, when the function is updated, the function used is not left in the memory block. .
  • the processing unit 10 When correcting the function B224 and the internal function Ba225, first, the processing unit 10 duplicates the unmodified function A221, the internal function Aa222, and the internal function Ab223 into a new memory block, and the function A921, the internal function Aa922, and the internal function Ab 923 is created. Further, the processing unit 10 writes the function new B924 and the internal function new B925 after the update of the function B224 and the internal function Ba225 to the new memory block. Then, the function jump table is switched so that the function A 921 and the function new B 924 of the new memory block are selected.
  • the memory 11 has a plurality of memory blocks
  • the processing unit 10 determines that a function that is not changed in a program update is a memory block that stores a function to be changed. Replicates to a different memory block, and also writes the new function of the function to be changed to the memory block that replicates the function that is not changed.
  • the program update it is possible not to leave the used function in the memory block in the memory block in which the function is stored before the update, and to generate an empty memory block.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)
  • Aviation & Aerospace Engineering (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Automation & Control Theory (AREA)

Abstract

情報処理装置において関数の変更を伴うプログラム更新により制御が実行できない時間を短縮する技術を提供する。情報処理装置は、記憶部と、処理部と、を有し、前記記憶部は、関数を含むプログラムと、前記プログラムによる前記関数の呼び出しを定義するジャンプテーブルと、を記憶し、前記処理部は、プログラム実行においては、前記ジャンプテーブルを参照して呼び出す前記関数を決定し、前記関数の変更を伴うプログラム更新においては、変更後の関数である新関数を前記記憶部に書き込み、前記新関数を呼び出すように前記ジャンプテーブルを更新する。

Description

情報処理装置
 本発明は、車両の制御などに用いる情報処理装置のプログラムを更新する技術に関する。
 車両制御システムは、電子化された車両制御装置と、それを制御する電子制御装置すなわちECU(Electronic Control Unit)で構成されている。ECUと車両制御装置が通信を介して連携し、車両を制御している。近年では車両制御システムに車両の自動運転など複雑な制御が要求される。そのため、ECUは、ソフトウェアのプログラムをプロセッサにより実行する構成である。そして、ECUのプログラムは複雑化し、高度化している。
 また、ECUのプログラムを高い頻度で書き換える要求も強く、車両を整備工場に持ち込まなくても使用者の自宅にある車両のECUのプログラムを書き換える方法としてOTA(Over The Air)技術が注目されている。OTAはECUの他には携帯電話のプログラム書き換えにも用いられている。
 携帯電話はプログラムを書き換え中には通話ができない状態となる。一方、ECUは、プログラムの書き換え中は車両の制御を行えない状態となる。そのため、ECUのプログラムの書き換えは極力迅速に完了することが望ましい。
 特許文献1にはプログラムの更新に要する時間を短縮する技術が開示されている。特許文献1の技術によれば、関数を利用するプログラムを更新するとき、追加される関数のみを書き込むことでプログラム更新時間の短縮を可能としている。
WO2015/083234A1
 しかし、上記の特許文献1では、既存の関数を呼び出す関数を新たに追加することのみを考慮しており、既存の関数を変更する場合にはプログラム更新時間を短縮できない。
 本発明の目的は、情報処理装置において関数の変更を伴うプログラム更新により制御が実行できない時間を短縮する技術を提供することである。
 本発明による情報処理装置は、記憶部と、処理部と、を有し、前記記憶部は、関数を含むプログラムと、前記プログラムによる前記関数の呼び出しを定義するジャンプテーブルと、を記憶し、前記処理部は、プログラム実行においては、前記ジャンプテーブルを参照して呼び出す前記関数を決定し、前記関数の変更を伴うプログラム更新においては、変更後の関数である新関数を前記記憶部に書き込み、前記新関数を呼び出すように前記ジャンプテーブルを更新する。
情報処理装置のプログラム更新において、更新前の関数を残して予め新関数を書き込んだ後に、新関数を呼び出すようにジャンプテーブルを更新することで、プログラム更新に伴って制御を実行できない時間を短縮することができる。
実施例1による車両を示す概念図である。 実施例1による車両制御装置のハードウェア構成を示すブロック図である。 実施例1に係る車両制御装置のメモリ内の構成図である。 実施例1における関数の更新について説明するための図である。 実施例1における関数ジャンプテーブルの切り替えについて説明するための図である。 実施例1におけるジャンプテーブル選択部による関数ジャンプテーブルの選択について説明するための図である。 実施例1におけるテーブル状態の変化を示す状態遷移図である。 実施例1におけるジャンプテーブル選択処理を示すフローチャートである。 実施例1における関数ジャンプテーブルと関数のメモリ内の配置を示す図である。 実施例2におけるメモリ11における関数の配置の一例を示す図である。 実施例3における関数の更新について説明するための図である。
 以下、実施例について図面を用いて説明する。
 図1は、実施例1による車両を示す概念図である。実施例1の車両Cには車両制御装置1が組み込まれている。車両制御装置1は車両Cの各部から入力情報を収集し、それら入力情報に基づいて、車両Cの各部を制御する制御信号を生成し、各部に送信するECU(電子制御ユニット)である。
 図2は、実施例1による車両制御装置のハードウェア構成を示すブロック図である。車両制御装置1は、処理部10、メモリ11、および機能部16と、を有している。
 メモリ11は、プログラムおよびデータを記録する記憶装置であり、ソフトウェアのプログラムを格納するプログラム記憶領域17およびジャンプテーブルを格納するジャンプテーブル記憶領域18を有している。プログラムは複数の関数により構成されている。ジャンプテーブルは、プログラムによる関数の呼び出しを定義した情報である。ジャンプテーブルを参照することで所望の関数を呼び出すための情報を得ることができる。
 処理部10は、不図示のプロセッサを含み、ソフトウェアプログラムを実行することにより車両Cの各部を制御する。処理部10は、プログラム実行においては、ジャンプテーブルを参照して呼び出す関数を決定する。また、処理部10は、関数の変更を伴うプログラム更新を行う場合には、変更後の関数である新関数を、メモリ11のプログラム記憶領域17に書き込み、その新関数を呼び出すようにジャンプテーブルを更新する。メモリ11への関数の書き込みに長時間がかかる場合があるが、本実施例によれば、車両制御装置1はプログラム更新において新関数を書き込んだ後にその新関数を呼び出すようにジャンプテーブルを更新するので、プログラム更新により制御を実行できなくなる時間を短縮することができる。
 また、本実施例では、プログラムを記憶するプログラム記憶領域17とジャンプテーブルを記憶するジャンプテーブル記憶領域18を分離するので、関数を書き込むことには成功したがメモリ不足で関数ジャンプテーブルを更新できないという不都合を低減することができる。
 機能部16は、車両Cの各部とのインタフェースをなし、入力情報の取得あるいは制御信号の送信を行う。
 上述のように車両制御装置1はプロセッサがプログラムを実行することにより動作する。ここで、プロセッサにより実行されるプログラムが関数を呼び出す場合、関数をコールするための命令列内に被呼び出し関数のアドレスが含まれる。そのため、被呼び出し関数のアドレスは確定している必要がある。
 ECUには小型、軽量、低コストが要求されるため、ECUではメモリ容量を節約するため、関数同士を隙間なく連続したアドレスに配置することが多い。いずれかの関数を修正して関数のサイズが変化した場合には、修正していない他の関数を配置するアドレスが変更されることとなる。
 ECUでは一般に、関数を修正すると全ての関数の命令列が変化することとなり、メモリ全体の再書き込みが必要となる。
 これに対して、本実施例の車両制御装置1は、呼び出し元関数の命令列を変化させずに、関数を修正することが可能である。なお、ここでいう関数は、サブルーチン、手続きなどとも言い換えることができる。
 図3は、実施例1に係る車両制御装置のメモリ内の構成図である。ジャンプテーブル選択部15は、上述した処理部10がプログラムを実行することで実現される。車両制御装置1のメモリ11内に配置したプログラムは、他の関数からコールできる複数の関数A121および関数B124を含み、更に、関数A121からコールされる内部関数Aa122および内部関数Ab123と、関数B124からのみコールされる内部関数Ba125を含む。本実施例では、ある関数(例えば関数A)が他の関数(例えば関数B)をコールするとき、関数Aは関数Bを直接コールするのではなく、ジャンプテーブル選択部15にコールする関数Bを選択させる。ジャンプテーブル選択部15が関数Bを選択するためにジャンプテーブルが設けられている。
 ジャンプテーブルは、呼び出す関数のアドレスを指定する関数ジャンプテーブルA12および関数ジャンプテーブルB13と、使用すべき関数ジャンプテーブルを示すジャンプテーブル情報14と、を含んでいる。処理部10により実現されたジャンプテーブル選択部15は、ジャンプテーブルの更新において、変更前の関数を指定する第1関数ジャンプテーブル(関数ジャンプテーブルA12)を残したまま、新関数のアドレスを指定する第2関数ジャンプテーブル(関数ジャンプテーブルB13)をジャンプテーブル記憶領域に書き込み、使用すべき関数ジャンプテーブルを、関数ジャンプテーブルA12から関数ジャンプテーブルB13へ変更するように、ジャンプテーブル情報14を更新する。新たな関数ジャンプテーブルB13を作成した後、その関数ジャンプテーブルB13を使用するようにジャンプテーブル情報14を更新するので、プログラム更新に伴って制御を実行できない時間を更に短縮することができる。
 ある関数が他の関数をコールするとき、まず、ジャンプテーブル選択部15を使用して、いずれかの関数ジャンプテーブルを選択し、次に、選択した関数ジャンプテーブルに示されたアドレスにより関数をコールする。例えば、関数A121が関数B124をコールするとき、関数A121は、まず、ジャンプテーブル選択部15を使用して関数ジャンプテーブルA12あるいは関数ジャンプテーブルB13を選択し、次に、選択した関数ジャンプテーブルに示されたアドレスを用いて関数Bアドレス132あるいは関数新Bアドレス134をコールする。
 関数B124をそれに代わる新たな関数である関数B126に変更し、関数新B126が内部関数新Baをコールするものである場合について説明する。
 まず、予め、関数新B126と内部関数新Ba127をメモリ11に書き込む。また、関数新B126および内部関数新Ba127のアドレスを示す関数新Bアドレス134を有する関数ジャンプテーブルB13をメモリ11に書き込む。さらに、関数ジャンプテーブルB13に関するジャンプテーブル情報であるテーブルB情報142をメモリ11に書き込む。
 その状態で、ジャンプテーブル選択部15は、ジャンプテーブル情報であるテーブルA情報141とテーブルB情報142を確認し、そのどちらが有効か判断する。ジャンプテーブル情報には、関数ジャンプテーブル毎にその関数ジャンプテーブルが有効か無効かが示されている。関数ジャンプテーブルB13およびテーブルB情報142が正しく書き込まれて有効となっていれば、ジャンプテーブル選択部15は、関数ジャンプテーブルB13を選択する。そのため、関数A121は関数ジャンプテーブルB13を参照して関数新B126をコールすることになる。
このように、本実施例では、ジャンプテーブル情報14は、関数ジャンプテーブル12、13毎に、その関数ジャンプテーブル12、13が正常に書き込まれて有効となっているか否かを示している。ジャンプテーブル選択部15は、有効となっている関数ジャンプテーブルの中から使用すべき関数ジャンプテーブルを選択する。関数ジャンプテーブルごとに有効か否か、すなわち使用してよい関数ジャンプテーブルか否かを関数ジャンプテーブル情報にて管理するので、使用すべき関数ジャンプテーブルを選択するとき、使用できる関数ジャンプテーブルか否かを容易に判定することができ、制御を実行できない時間を短縮することができる。また、ジャンプテーブル情報は、どの関数ジャンプテーブルが最新であるかを判別できる情報である。処理部10は、使用すべき関数ジャンプテーブルを、関数ジャンプテーブルA12から関数ジャンプテーブルB13へ変更するとき、関数ジャンプテーブルA12が最新の状態から、関数ジャンプテーブルB13が最新の状態に更新する。ジャンプテーブル選択部15がどの関数ジャンプテーブルが最新かにより、使用する関数ジャンプテーブルを容易に選択することができるので、制御を実行できない時間を、ジャンプテーブル情報を更新する時間だけにすることができる。
具体例としては、ジャンプテーブル情報は、関数ジャンプテーブル毎の作成日時を含んでおり、ジャンプテーブル選択部15は、どの関数ジャンプテーブルが最新であるかを作成日時に基づいて判断すればよい。
 図4は、実施例1における関数の更新について説明するための図である。
 関数ジャンプテーブルの利用の仕方について説明する。
 他の関数からコールされる関数のアドレスは関数ジャンプテーブルに登録しておく。一方、他の関数からコールされず、ある関数みからコールされる内部関数は、関数ジャンプテーブルには登録しない。それにより関数ジャンプテーブルのサイズを小さくすることができる。例えば、他の関数からコールされず、関数A221のみからコールされる内部関数Aa222は、関数ジャンプテーブル21には登録しない。
 関数ジャンプテーブル21の形式としては、関数へのジャンプ命令とジャンプ先アドレスを組み合わせて格納する形式、あるいはジャンプ先アドレスのみを格納する形式のいずれもとりうる。
 関数の更新について説明する。
 旧版の関数をそれに代わる新版の関数に更新する場合、メモリの空き領域22に新版の関数を書き込み、関数ジャンプテーブルにおいて、旧版の関数へジャンプするアドレスを新版の関数へジャンプするアドレスへ更新する。例えば、関数B224を新版の関数新B226に更新する場合、メモリの空き領域22に、新版の関数新B226を書き込み、関数ジャンプテーブル21における、関数B224へジャンプする関数Bアドレス232の内容を関数新B226へジャンプする関数新Bアドレス234へ更新する。
 これにより、関数A221が関数B224をコールするものである場合に、関数A221のコール命令は修正せずに、更新後の関数新B226をコールするようにすることができる。
 図5は、実施例1における関数ジャンプテーブルの切り替えについて説明するための図である。
 車両制御装置1全体として制御動作の整合性を保つため、複数の関数を同じタイミングで更新する必要がある場合がある。そのため、本実施例では、古い関数のアドレスを保持する関数ジャンプテーブルと新しい関数のアドレスを保持する関数ジャンプテーブルとを共存させ、ジャンプテーブル選択部15がジャンプテーブル情報を参照し、使用する関数ジャンプテーブルを選択することで、関数の切り替えを短時間で行えるようにしている。
 例えば、関数A331と関数B332を同じタイミングで更新する必要がある場合、古い関数のアドレスを保持する関数ジャンプテーブルA31と新しい関数のアドレスを保持する関数ジャンプテーブルB32とを持ち、ジャンプテーブル選択部15は、ジャンプテーブル情報35を参照することにより、使用する関数ジャンプテーブルを選択する。
 図5の例では、関数ジャンプテーブルA31は、関数A331、関数B332、関数C333のアドレスを保持し、関数ジャンプテーブルB32は、関数新A334、関数新B335、関数C333のアドレスを保持している。使用する関数ジャンプテーブルを関数ジャンプテーブルA31から関数ジャンプテーブルB32に切り替えると、関数Aと関数Bが更新されることになる。
 図6は、実施例1におけるジャンプテーブル選択部による関数ジャンプテーブルの選択について説明するための図である。
 ここではジャンプテーブル情報42には、各関数ジャンプテーブルに関する情報として、テーブル状態421とテーブル情報422が含まれるものとする。
 テーブル状態421にて管理される関数ジャンプテーブルの状態として、「正常動作」、「更新中」、「動作未確認」、「動作確認中」、「異常発生」という状態がある。
 テーブル情報422は、関数ジャンプテーブルに関する情報として、更新日時あるいは更新回数または動作回数の情報を含む。
 ジャンプテーブル選択部15は、テーブル状態421とテーブル情報422を参照して、使用する関数ジャンプテーブルを選択する。
 図7は、実施例1におけるテーブル状態の変化を示す状態遷移図である。
 関数ジャンプテーブルが使用されていない未使用51の状態から、関数のメモリ11への書き込みが開始され書き込み実行中は更新中52の状態となる。関数のメモリ11への書き込みが完了すると動作未確認53の状態となる。このときテーブル情報422の動作回数は0である。
 動作未確認53という状態は、関数のメモリ11への書き込みは完了しているが、まだ1回も動作させていない状態である。動作未確認53の状態となればジャンプテーブル選択部15はその関数ジャンプテーブルを選択する。その後、最初に車両制御装置1に電源が投入されたタイミングでその関数ジャンプテーブルの状態は動作確認中54となる。
 動作未確認53または動作確認中54の状態から車両制御装置1に電源が投入されたタイミングで、その関数ジャンプテーブルの動作回数には1回が加算される。動作回数が所定回数を超えたら関数ジャンプテーブルの状態は正常動作55となる。一方、動作確認中54の状態で、車両制御装置1に何らかの異常が発生した場合には、その関数ジャンプテーブルの状態は異常発生56となる。異常発生56となった関数ジャンプテーブルはジャンプテーブル選択部15に選択されない。
 上述のように、本実施例では、ジャンプテーブル選択部15は、新関数を呼び出すようにジャンプテーブルが更新された後の一定時間内に所定の不具合が発生したら、変更前の関数を呼び出すようにジャンプテーブルを更新前の状態に戻す。関数の変更により初期不具合が発生した場合に迅速に元の状態に戻し、正常な制御をできるだけ維持するようにすることができる。
 図8は、実施例1におけるジャンプテーブル選択処理を示すフローチャートである。
 ジャンプテーブル選択処理61はジャンプテーブル選択部15により実行される。ジャンプテーブル選択処理61は以下の通りである。
ステップ611:まず動作未確認53のテーブルがあるか否か判定する。Yesの場合はステップ612に進み、Noの場合はステップ613に進む。
ステップ612:動作回数が所定の回数を超えているか否か判定する。Yesの場合はステップ614に進み、Noの場合はステップ615に進む。
ステップ613:テーブル状態421が正常動作の関数ジャンプテーブルが複数あるか否か判定する。Yesの場合はステップ617へ進み、Noの場合はステップ618へ進む。
ステップ614:テーブル状態421を正常動作55に変更し、ステップ613へ進む。ステップ615:動作未確認53または動作確認中54の関数ジャンプテーブルを選択し、ステップ616へ進む。
ステップ616:テーブル情報422の動作回数に1回を加算し、処理を終了する。
ステップ617:複数ある正常動作の関数ジャンプテーブルのうち最新のものを選択し、処理を終了する。最新の関数ジャンプテーブルはテーブル情報422の更新日時を参照することが判断することができる。
ステップ618:正常動作の関数ジャンプテーブルを選択して処理を終了する。
 ここではジャンプテーブル選択部15の動作の一例を示したが、これに限られることはない。ジャンプテーブル選択部15の動作は、適用する車両制御装置1に要求される要件によって異なる場合もある。
 ECUに使用される不揮発性メモリの多くはメモリ内のデータを個々に書き換えることができず、メモリブロックというまとまった単位で初期化あるいは消去が可能である。したがって、メモリの一部を変更する場合でも、メモリブロックを単位として初期化あるいは消去を行い、変更のない部分は同じデータを再び書き込み、変更のある部分は新たなデータを書き込むという処理が必要となる。ブロックのサイズはマイコンの設計に依存する。メモリブロックの書き換えに要する時間はメモリブロックのサイズに比例する。
 図9は、実施例1における関数ジャンプテーブルと関数のメモリ内の配置を示す図である。
 本実施例では、自動車に搭載されるECUではメモリを有効に利用するために、メモリ11の記憶領域にサイズの異なる複数のメモリブロックを構成し、プログラムやデータをそれぞれに適したサイズのメモリブロックに配置することが行われている。具体的には、メモリ11にはサイズの異なる2つのタイプのメモリブロックが定義されている。ここではサイズの大きい方を大容量ブロックと呼び、サイズの小さい方を小容量ブロックと呼ぶことにする。本実施例では、プログラム記憶領域が大容量ブロックに定義され、ジャンプテーブル記憶領域が小容量ブロックに定義される。その結果、関数ジャンプテーブルは小容量ブロックに配置され、関数は大容量ブロックに配置される。関数を含むプログラムとジャンプテーブルをそれぞれのデータ量に適したブロックに格納するので、大容量ブロックと小容量ブロックを含む各ブロックを効率よく利用できる。図9の例では、関数ジャンプテーブルは小容量ブロックであるメモリブロック71に配置され、関数は大容量ブロックであるメモリブロック72、73に配置されている。メモリブロック72には未使用部分が無く、メモリブロック73には未使用部分がある。
 修正された関数をメモリ11に書き込む場合、関数はメモリブロック73の未使用部分に書き込む。なお、関数の書き込み行っている間、メモリ11は使用可能であるため、例えば自動車に搭載されているECUは動作することができる。自動車が使用中であってもメモリ11への関数の書き込みが可能なので、大量の関数をメモリ11に書き込む場合であっても自動車の使用を制限せずに書き込みを実行することができる。一方、上述したように関数ジャンプテーブルは小容量ブロックに配置される。小容量ブロックであるメモリブロック71に配置した関数ジャンプテーブルの書き換え時間は、大容量ブロックであるメモリブロック72への書き込みと比較すると短時間でする。そのため不意の電源断などにより異常が発生する確率を下げることができる。
 ジャンプテーブルを更新するのに好適なタイミングについて説明する。
 本実施例の車両制御装置1は自動車等の車両に搭載され、車両を制御する車両制御装置であるので、処理部10は、一例として、車両制御装置1に電源が投入されたときにジャンプテーブルを更新するのがよい。電源が投入されたタイミングに、しかも上述したように短時間でジャンプテーブルの更新が終了するので、車両が走行中でないような、車両の走行に影響が少ないようにプログラム更新を実行することができる。
 あるいは、処理部10は、車両のエンジンが停止されたときにジャンプテーブルを更新することにしてもよい。エンジン停止のタイミングで、、しかも上述したように短時間でジャンプテーブルの更新が終了するので、車両の走行に影響がないようにプログラム更新を実行することができる。
 実施例1では、関数を変更するとき新たな関数をメモリのプログラム記憶領域の空き領域に順次追加して書き込んでいくことにした。この方法を続けると、プログラム記憶領域の空き領域は徐々に減少していき、いずれは関数の修正ができなくなる。しかし、関数の更新が複数回繰り返されると旧版の関数は既に使用されない状態となっており、メモリの記憶領域を無駄に占有していることになる。
 そこで、実施例2では、関数の修正により使用されなくなった関数と使用されている関数がメモリブロックに混在している場合に、使用されている関数のみを他のメモリブロックに複製することにより、空きのメモリブロックを生じさせる空きブロック化処理の例を示す。空きブロック化処理において、処理部10は、使用される関数と使用されない関数が同じメモリブロックに混在している状態で、使用される関数のみを、そのメモリブロックを複製元としそのメモリブロックとは異なる他のメモリブロックを複製先として複製し、複製元のメモリブロックを空きの状態にする。使用される関数が存在するメモリブロックを空きブロックにすることができるので、メモリの記憶領域を有効利用することができる。例えば、新関数を格納するのに利用するメモリブロックの残り容量が所定値以下となったら、そのメモリブロックの空きブロック化処理を実行することにしてもよい。
 実施例2による車両制御装置は以下に説明する点を除くと基本的に実施例1のものと同様である。以下、実施例2について主に実施例1との相違点を説明する。
 実施例2の車両制御装置1ではメモリ11の上のデータはメモリブロック単位でないと消去できない。そのため、使用される関数が1つでも存在しているメモリブロックは内部のデータを消去できず、メモリ11の記憶領域を空けることができない。
 実施例1に示したように、関数を更新するとき、更新前の関数ジャンプテーブルと更新後の関数ジャンプテーブルを共存させた状態で、使用する関数ジャンプテーブルを更新前のものから更新後のものに切り替えるという処理が行われる。また、更新後の関数の使用を開始した直後に異常が発生したら、更新前の関数に戻すという処理が行われる。これらの処理は更新前と更新後の2つバージョンの関数があれば実現できる。更新前よりも古いバージョンの関数は使用することはなくなる。それぞれが更新前の関数と更新後の関数に対応する2種類のバージョンの関数ジャンプテーブルがメモリ11上に存在していれば、それより古いバージョンの関数はジャンプ先となりえない。
 図10は、実施例2におけるメモリ11における関数の配置の一例を示す図である。図10において、関数旧A811と関数A813と関数新A814が順次更新された一連の関数である。図10の左側に示された空きブロック化処理前のメモリ11を見ると、メモリブロック81に格納している関数Aに関しては、関数旧A811、関数A813、関数新A814の3バージョンある。関数旧A811は使用されないまま、メモリに残された状態である。使用されない関数旧A811を含むメモリブロックを消去して空きブロックにしたいが、変更されていない関数B812が存在するので、そのままでは消去できない。
 そこで、本実施例では、処理部10は、未使用である関数旧A811を除く、関数B812、関数A813、および関数新A814を別のメモリブロックに複製し、新たなメモリブロックを選択するように関数ジャンプテーブルを書き換える。これにより、メモリブロック81には使用する関数が存在しなくなる。そこで、処理部10は、図10の右側に示された空きブロック化処理後のメモリ11にあるように、メモリブロック81内のデータを消去し、空きブロック82を生成する。それ以降に関数を更新する場合に空きブロック82に新たな関数を記録することが可能となる。
 実施例1では、図4に示したように、関数を修正するとき、更新前の関数をメモリ11上に残した状態で更新後の新たな関数をメモリ11に書き込み、更新前と更新後の関数ジャンプテーブルを共存させ、その後、ジャンプテーブル選択部15が選択する関数ジャンプテーブルを、更新前の関数ジャンプテーブルから更新後の関数ジャンプテーブルに切り替えた。実施例3では、この実施例1の処理に一部変更を加えることにより、空きのメモリブロックが生じやすくする例を示す。
 実施例3による車両制御装置1は以下に説明する点を除くと基本的に実施例1のものとと同様である。
 図11は、実施例3における関数の更新について説明するための図である。以下、実施例3について主に実施例1との相違点を説明する。
 実施例3の車両制御装置1ではメモリ11の上のデータは、実施例2と同様、メモリブロック単位でないと消去できない。使用される関数が1つでも存在しているメモリブロックは内部のデータを消去することができないため、実施例3では関数を更新するときにはメモリブロック内に、使用される関数が残らないようにする。
 関数B224および内部関数Ba225を修正する場合、まず、処理部10は、修正されない関数A221、内部関数Aa222、および内部関数Ab223を新たなメモリブロックに複製し、関数A921、内部関数Aa922、および内部関数Ab923を作成する。さらに、処理部10は、関数B224および内部関数Ba225の更新後の関数新B924および内部関数新B925を新たなメモリブロックに書き込む。そして、新たなメモリブロックの関数A921および関数新B924が選択されるように関数ジャンプテーブルを切り替える。
 以上説明したように本実施例によれば、メモリ11は複数のメモリブロックを有し、処理部10は、プログラム更新においては、変更されない関数を、変更される関数が格納されているメモリブロックとは異なるメモリブロックに複製し、更に、変更される関数の新関数を、変更されない関数を複製したメモリブロックに書き込む。プログラム更新において、更新前に関数が格納されていたメモリブロックに、使用されている関数をメモリブロックに残さないようにし、空きのメモリブロックが生じるようにすることができる。
1…車両制御装置、10…処理部、11…メモリ、15…ジャンプテーブル選択部、16…機能部、17…プログラム記憶領域

Claims (12)

  1.  記憶部と、
     処理部と、を有し、
     前記記憶部は、関数を含むプログラムと、前記プログラムによる前記関数の呼び出しを定義するジャンプテーブルと、を記憶し、
     前記処理部は、
     プログラム実行においては、前記ジャンプテーブルを参照して呼び出す前記関数を決定し、
     前記関数の変更を伴うプログラム更新においては、変更後の関数である新関数を前記記憶部に書き込み、前記新関数を呼び出すように前記ジャンプテーブルを更新する、
    情報処理装置。
  2.  前記記憶部は、
     前記プログラムを記憶するプログラム記憶領域と、
     前記ジャンプテーブルを記憶するジャンプテーブル記憶領域と、を有し、
     前記処理部は、
     前記関数の変更を伴うプログラム更新において、前記新関数を前記プログラム記憶領域に書き込み、前記新関数を呼び出すように前記ジャンプテーブル記憶領域の前記ジャンプテーブルを更新する、
    請求項1に記載の情報処理装置。
  3.  前記ジャンプテーブルは、
     呼び出す関数のアドレスを指定する関数ジャンプテーブルと、
     使用すべき関数ジャンプテーブルを示すジャンプテーブル情報と、を含み、
     前記処理部は、前記ジャンプテーブルの更新において、
     変更前の前記関数を指定する第1関数ジャンプテーブルを残したまま、前記新関数のアドレスを指定する第2関数ジャンプテーブルを前記ジャンプテーブル記憶領域に書き込み、
     使用すべき関数ジャンプテーブルを、前記第1関数ジャンプテーブルから前記第2関数ジャンプテーブルへ変更するように、前記ジャンプテーブル情報を更新する、
    請求項2に記載の情報処理装置。
  4.  前記ジャンプテーブル情報は、関数ジャンプテーブル毎に、該関数ジャンプテーブルが正常に書き込まれて有効となっているか否かを示す、
     前記処理部は、使用すべき関数ジャンプテーブルを有効となっている関数ジャンプテーブルから選択する、
    請求項3に記載の情報処理装置。
  5.  前記ジャンプテーブル情報は、どの関数ジャンプテーブルが最新であるかを判別できる情報であり、
     前記処理部は、使用すべき関数ジャンプテーブルを、前記第1関数ジャンプテーブルから前記第2関数ジャンプテーブルへ変更するとき、前記第1関数ジャンプテーブルが最新の状態から、前記第2関数ジャンプテーブルが最新の状態に更新する、
    請求項3に記載の情報処理装置。
  6.  前記ジャンプテーブル情報は、前記関数ジャンプテーブル毎の作成日時を含み、
     前記処理部は、どの関数ジャンプテーブルが最新であるかを前記作成日時に基づいて判断する、
    請求項5に記載の情報処理装置。
  7.  前記処理部は、前記新関数を呼び出すように前記ジャンプテーブルが更新された後の一定時間内に所定の不具合が発生したら、変更前の前記関数を呼び出すように前記ジャンプテーブルを更新前の状態に戻す、
    請求項1に記載の情報処理装置。
  8.  前記記憶部は、所定容量のメモリブロックである大容量ブロックと、前記大容量ブロックよりも容量の小さいメモリブロックである小容量ブロックとを有し、
     前記プログラム記憶領域が前記大容量ブロックに定義され、
     前記ジャンプテーブル記憶領域が前記小容量ブロックに定義される、
    請求項2に記載の情報処理装置。
  9.  前記記憶部は複数のメモリブロックを有し、
     前記処理部は、使用される関数と使用されない関数が同じメモリブロックに混在している状態で、前記使用される関数のみを、前記メモリブロックを複製元とし該メモリブロックとは異なるメモリブロックを複製先として複製し、前記複製元のメモリブロックを空きの状態にする、
    請求項1に記載の情報処理装置。
  10.  前記記憶部は複数のメモリブロックを有し、
     前記処理部は、前記プログラム更新においては、変更されない関数を、変更される関数が格納されているメモリブロックとは異なるメモリブロックに複製し、前記変更される関数の前記新関数を、前記変更されない関数を複製した前記メモリブロックに書き込む、
    請求項1に記載の情報処理装置。
  11.  前記情報処理装置は、車両に搭載され、前記車両を制御する車両制御装置であり、
     前記処理部は、前記情報処理装置に電源が投入されたときに前記ジャンプテーブルを更新する、
    請求項1に記載の情報処理装置。
  12.  前記情報処理装置は、車両に搭載され、前記車両を制御する車両制御装置であり、
     前記処理部は、前記車両のエンジンが停止されたときに前記ジャンプテーブルを更新する、
    請求項1に記載の情報処理装置。
PCT/JP2018/002074 2017-02-17 2018-01-24 情報処理装置 WO2018150820A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2018568062A JP6676791B2 (ja) 2017-02-17 2018-01-24 情報処理装置
US16/463,769 US20190286447A1 (en) 2017-02-17 2018-01-24 Information processing device
EP18754568.6A EP3584697B1 (en) 2017-02-17 2018-01-24 Information processing device
CN201880005431.3A CN110312991A (zh) 2017-02-17 2018-01-24 信息处理装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2017027513 2017-02-17
JP2017-027513 2017-02-17

Publications (1)

Publication Number Publication Date
WO2018150820A1 true WO2018150820A1 (ja) 2018-08-23

Family

ID=63169853

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2018/002074 WO2018150820A1 (ja) 2017-02-17 2018-01-24 情報処理装置

Country Status (5)

Country Link
US (1) US20190286447A1 (ja)
EP (1) EP3584697B1 (ja)
JP (1) JP6676791B2 (ja)
CN (1) CN110312991A (ja)
WO (1) WO2018150820A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022091406A1 (ja) * 2020-11-02 2022-05-05 三菱電機株式会社 ソフトウェア更新装置、ソフトウェア更新方法、及び、ソフトウェア更新プログラム

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04363721A (ja) * 1991-06-11 1992-12-16 Hitachi Ltd プログラム入替え方式
JPH1063497A (ja) * 1996-08-16 1998-03-06 Fuji Electric Co Ltd プログラム更新方法
JPH11265283A (ja) * 1998-03-18 1999-09-28 Hitachi Ltd 記憶装置におけるファームウェアの修正方法及び記憶装置
JP2004341667A (ja) * 2003-05-14 2004-12-02 Yaskawa Electric Corp 制御装置のカスタマイズ方法
JP2006119727A (ja) * 2004-10-19 2006-05-11 Mitsubishi Electric Corp 通信システム、サーバ、通信端末及び通信端末に着脱可能な記憶媒体
JP2007058840A (ja) * 2005-07-29 2007-03-08 Sony Corp 記憶装置、コンピュータシステム、および記憶システム
JP2008225763A (ja) * 2007-03-12 2008-09-25 Fujifilm Corp ファームウェアの更新方法、プログラム及び電子機器
JP2010198307A (ja) * 2009-02-25 2010-09-09 Hitachi Automotive Systems Ltd 自動車用制御装置
WO2015083234A1 (ja) 2013-12-03 2015-06-11 三菱電機株式会社 関数呼び出しテーブル生成装置、プログラム実行装置および実行プログラム
JP2016062311A (ja) * 2014-09-18 2016-04-25 株式会社日立製作所 更新装置及び情報処理方法
JP2016170471A (ja) * 2015-03-11 2016-09-23 日立オートモティブシステムズ株式会社 電子制御装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5210854A (en) * 1989-06-14 1993-05-11 Digital Equipment Corporation System for updating program stored in eeprom by storing new version into new location and updating second transfer vector to contain starting address of new version
JPH07281846A (ja) * 1994-04-14 1995-10-27 Casio Electron Mfg Co Ltd 印字装置
US5727215A (en) * 1995-11-30 1998-03-10 Otis Elevator Company Method for replacing software modules utilizing a replacement address table
US5938766A (en) * 1997-03-21 1999-08-17 Apple Computer, Inc. System for extending functionality of a digital ROM using RAM/ROM jump tables and patch manager for updating the tables
US6205548B1 (en) * 1998-07-31 2001-03-20 Intel Corporation Methods and apparatus for updating a nonvolatile memory
JP2000293376A (ja) * 1999-04-05 2000-10-20 Nec Corp ブートプログラムの切替回路及び切替方法
TW522305B (en) * 2001-08-22 2003-03-01 Inventec Besta Co Ltd Method for upgrading electronic device
CN1169051C (zh) * 2002-07-03 2004-09-29 无敌科技(西安)有限公司 可令电子装置升级的方法
US7886287B1 (en) * 2003-08-27 2011-02-08 Avaya Inc. Method and apparatus for hot updating of running processes
US7657886B1 (en) * 2004-06-03 2010-02-02 Hewlett-Packard Development Company, L.P. Mobile device with a MMU for faster firmware updates in a wireless network
US7398381B2 (en) * 2004-12-10 2008-07-08 Intel Corporation Utilizing paging to support dynamic code updates
EP2148279A1 (fr) * 2008-07-24 2010-01-27 Nagravision S.A. Méthode de mise à jour de données dans des mémoires utilisant une unité de gestion mémoire
CN103885807A (zh) * 2014-04-03 2014-06-25 四川九成信息技术有限公司 设备程序更新方法
US9916151B2 (en) * 2015-08-25 2018-03-13 Ford Global Technologies, Llc Multiple-stage secure vehicle software updating

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04363721A (ja) * 1991-06-11 1992-12-16 Hitachi Ltd プログラム入替え方式
JPH1063497A (ja) * 1996-08-16 1998-03-06 Fuji Electric Co Ltd プログラム更新方法
JPH11265283A (ja) * 1998-03-18 1999-09-28 Hitachi Ltd 記憶装置におけるファームウェアの修正方法及び記憶装置
JP2004341667A (ja) * 2003-05-14 2004-12-02 Yaskawa Electric Corp 制御装置のカスタマイズ方法
JP2006119727A (ja) * 2004-10-19 2006-05-11 Mitsubishi Electric Corp 通信システム、サーバ、通信端末及び通信端末に着脱可能な記憶媒体
JP2007058840A (ja) * 2005-07-29 2007-03-08 Sony Corp 記憶装置、コンピュータシステム、および記憶システム
JP2008225763A (ja) * 2007-03-12 2008-09-25 Fujifilm Corp ファームウェアの更新方法、プログラム及び電子機器
JP2010198307A (ja) * 2009-02-25 2010-09-09 Hitachi Automotive Systems Ltd 自動車用制御装置
WO2015083234A1 (ja) 2013-12-03 2015-06-11 三菱電機株式会社 関数呼び出しテーブル生成装置、プログラム実行装置および実行プログラム
JP2016062311A (ja) * 2014-09-18 2016-04-25 株式会社日立製作所 更新装置及び情報処理方法
JP2016170471A (ja) * 2015-03-11 2016-09-23 日立オートモティブシステムズ株式会社 電子制御装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP3584697A4

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022091406A1 (ja) * 2020-11-02 2022-05-05 三菱電機株式会社 ソフトウェア更新装置、ソフトウェア更新方法、及び、ソフトウェア更新プログラム

Also Published As

Publication number Publication date
JPWO2018150820A1 (ja) 2019-07-18
US20190286447A1 (en) 2019-09-19
EP3584697B1 (en) 2023-06-28
CN110312991A (zh) 2019-10-08
EP3584697A1 (en) 2019-12-25
EP3584697A4 (en) 2020-12-02
JP6676791B2 (ja) 2020-04-08

Similar Documents

Publication Publication Date Title
JP3906825B2 (ja) 計算機システム、計算機システム起動方法およびプログラム
WO2018054261A1 (zh) 存储介质、数据处理方法及采用该方法的盒芯片
JP5019567B2 (ja) メモリ管理方法および携帯端末装置
JP6447469B2 (ja) 書換システム
WO2018150820A1 (ja) 情報処理装置
JP2009048557A (ja) データ更新装置及びデータ更新方法及びデータ更新プログラム
JP6301820B2 (ja) リプログラミングシステム
US6314024B1 (en) Data processing apparatus
JP6526357B2 (ja) 制御装置およびプログラム更新方法
JP5084853B2 (ja) ファームウエア更新装置、通信装置、電子機器、ファームウエア更新システム、ファームウエア更新方法及びプログラム
JP2010009553A (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
JP5158883B2 (ja) ファームウェア更新方法及びファームウェア更新装置
JP2008217202A (ja) ディスクアレイ装置及びファームウェア更新方法
KR20090021695A (ko) 플래쉬 메모리 롤백 시스템 및 그 방법
JPH11282690A (ja) 制御プログラムの書込方法及び情報処理装置並びに情報処理システム
US11137937B2 (en) Information processing device and control method determining valid data in multiple memory areas based on multiple valid flags
WO2021153224A1 (ja) 情報処理装置および情報処理方法
JP2004094628A (ja) フラッシュメモリのメモリ書き換え制御システム、メモリ書き換え制御方法及びメモリ書き換え制御方法の各工程を実行させるプログラム
JP2023170521A (ja) 設備機器
JP2017097404A (ja) マイクロコンピュータ
JP3697735B2 (ja) 情報処理システムおよび方法
JP6242711B2 (ja) ストレージ装置及びデータ管理方法
JP4062421B2 (ja) メモリ書き換え制御方法およびメモリ書き換え制御方法の各工程を実行させるプログラム
CN115686585A (zh) 基于控制系统的用户程序增量下载方法和控制系统
JP2005250882A (ja) 情報処理装置およびプログラムの書き換え方法

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: 18754568

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2018568062

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2018754568

Country of ref document: EP

Effective date: 20190917