JPWO2018150820A1 - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JPWO2018150820A1
JPWO2018150820A1 JP2018568062A JP2018568062A JPWO2018150820A1 JP WO2018150820 A1 JPWO2018150820 A1 JP WO2018150820A1 JP 2018568062 A JP2018568062 A JP 2018568062A JP 2018568062 A JP2018568062 A JP 2018568062A JP WO2018150820 A1 JPWO2018150820 A1 JP WO2018150820A1
Authority
JP
Japan
Prior art keywords
function
jump table
program
information processing
processing apparatus
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018568062A
Other languages
English (en)
Other versions
JP6676791B2 (ja
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.)
Hitachi Astemo Ltd
Original Assignee
Hitachi Automotive Systems Ltd
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 Hitachi Automotive Systems Ltd filed Critical Hitachi Automotive Systems Ltd
Publication of JPWO2018150820A1 publication Critical patent/JPWO2018150820A1/ja
Application granted granted Critical
Publication of JP6676791B2 publication Critical patent/JP6676791B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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

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に記載の情報処理装置。
JP2018568062A 2017-02-17 2018-01-24 情報処理装置 Active JP6676791B2 (ja)

Applications Claiming Priority (3)

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

Publications (2)

Publication Number Publication Date
JPWO2018150820A1 true JPWO2018150820A1 (ja) 2019-07-18
JP6676791B2 JP6676791B2 (ja) 2020-04-08

Family

ID=63169853

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018568062A Active JP6676791B2 (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)

Families Citing this family (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 記憶装置におけるファームウェアの修正方法及び記憶装置
JP2000293376A (ja) * 1999-04-05 2000-10-20 Nec Corp ブートプログラムの切替回路及び切替方法
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 自動車用制御装置
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
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
WO2015083234A1 (ja) 2013-12-03 2015-06-11 三菱電機株式会社 関数呼び出しテーブル生成装置、プログラム実行装置および実行プログラム
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 記憶装置におけるファームウェアの修正方法及び記憶装置
JP2000293376A (ja) * 1999-04-05 2000-10-20 Nec Corp ブートプログラムの切替回路及び切替方法
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 自動車用制御装置
JP2016062311A (ja) * 2014-09-18 2016-04-25 株式会社日立製作所 更新装置及び情報処理方法
JP2016170471A (ja) * 2015-03-11 2016-09-23 日立オートモティブシステムズ株式会社 電子制御装置

Also Published As

Publication number Publication date
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
WO2018150820A1 (ja) 2018-08-23
JP6676791B2 (ja) 2020-04-08

Similar Documents

Publication Publication Date Title
KR20050028173A (ko) 소프트웨어 업데이트 방법 및 시스템
JP2009521044A (ja) ブロック消去可能なメモリ位置およびポインタ情報を有するブロックを見つけ出すポインタのリンク付けしたチェーンを備えるメモリ
US20060200815A1 (en) Electronic Device and Method for Updating Related Programs
JP6257506B2 (ja) 電子制御装置のメモリ内のソフトウェアを変更する方法
KR20010070416A (ko) 컴퓨터
WO2020158675A1 (ja) 電子制御装置及びプログラム更新方法
CN105814545A (zh) 电子设备
JP6676791B2 (ja) 情報処理装置
US6314024B1 (en) Data processing apparatus
JP2016103261A (ja) ファームウェアのダウンロード方法及びファームウェア組込機器
JP5084853B2 (ja) ファームウエア更新装置、通信装置、電子機器、ファームウエア更新システム、ファームウエア更新方法及びプログラム
JP6526357B2 (ja) 制御装置およびプログラム更新方法
JP5158883B2 (ja) ファームウェア更新方法及びファームウェア更新装置
JP2001053891A (ja) 携帯端末装置のプログラム更新方法およびその装置
JP7089423B2 (ja) 情報処理装置及び制御方法
JP3697735B2 (ja) 情報処理システムおよび方法
JP2023170521A (ja) 設備機器
JP2024016516A (ja) 電子制御装置
JP2020052960A (ja) 車両制御装置および車両制御方法
KR101188711B1 (ko) 트렁크 브이오아이피 게이트웨이 시스템에서 멀티 이미지 구동 장치 및 이를 이용한 구동방법
JP2005250882A (ja) 情報処理装置およびプログラムの書き換え方法
JP2020004448A (ja) 自動車用電子制御装置
JP2005332228A (ja) プログラム切替え制御装置
JP2021060747A (ja) マイクロコンピュータ
JP2008108048A (ja) コンピュータ及びそのファームウェア更新方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190404

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191224

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200214

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200303

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200312

R150 Certificate of patent or registration of utility model

Ref document number: 6676791

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250