JP2015115073A - 電子制御装置のメモリ内のソフトウェアを変更する方法 - Google Patents

電子制御装置のメモリ内のソフトウェアを変更する方法 Download PDF

Info

Publication number
JP2015115073A
JP2015115073A JP2014249263A JP2014249263A JP2015115073A JP 2015115073 A JP2015115073 A JP 2015115073A JP 2014249263 A JP2014249263 A JP 2014249263A JP 2014249263 A JP2014249263 A JP 2014249263A JP 2015115073 A JP2015115073 A JP 2015115073A
Authority
JP
Japan
Prior art keywords
routine
memory
bypass
bypass routine
service function
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
JP2014249263A
Other languages
English (en)
Other versions
JP6257506B2 (ja
Inventor
フーフナーゲル トルステン
Thorsten Hufnagel
フーフナーゲル トルステン
ドレスラー マーク
Dressler Marc
ドレスラー マーク
ケラース バスティアン
Kellers Bastian
ケラース バスティアン
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.)
Dspace Digital Signal Processing and Control Engineering GmbH
Original Assignee
Dspace Digital Signal Processing and Control Engineering GmbH
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 Dspace Digital Signal Processing and Control Engineering GmbH filed Critical Dspace Digital Signal Processing and Control Engineering GmbH
Publication of JP2015115073A publication Critical patent/JP2015115073A/ja
Application granted granted Critical
Publication of JP6257506B2 publication Critical patent/JP6257506B2/ja
Expired - Fee Related 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/66Updates of program code stored in read-only memory [ROM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running

Landscapes

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

Abstract

【課題】フラッシュメモリの完全に新たなプログラミングを要することなく、既存のプログラムルーチン又は既存のバイパスルーチンを置換できるようにし、さらに、当該置換を特段の負荷なくいつでも、特にランタイムで行えるようにする。
【解決手段】バイパスルーチンは、制御装置のインタフェースに接続されたコンピュータにより、固体メモリの外部に存在するメモリ領域へ伝送され、バイパスルーチンを開始するアドレスがサービス機能に引き渡される。第1のステップで、サービス機能によるバイパスルーチンの呼び出しを不活性化し、第2のステップで、プロセッサがバイパスルーチンを処理しない時間において、バイパスルーチンを新たなバイパスルーチンによって置換し、第3のステップで、サービス機能による新たなバイパスルーチンの呼び出しを作動し、各ステップはプロセッサがソフトウェアを処理するランタイムで実行される。
【選択図】図4

Description

本発明は、電子制御装置のメモリ内のソフトウェアを変更する方法、すなわち、メモリが、少なくとも1つの固体メモリと、揮発性のデータを記憶する少なくとも1つの作業メモリとを含み、固体メモリは、ソフトウェアの少なくとも一部を形成する複数のオリジナルプログラムルーチンを内部に記憶しており、当該複数のオリジナルプログラムルーチンは制御装置の少なくとも1つのプロセッサによって処理されるものであり、制御装置には、少なくとも1つのオリジナルプログラムルーチンに加えて又はこれに代えて処理されるバイパスルーチンが格納されており、当該バイパスルーチンの処理は、プロセッサによる複数のプログラムステップの処理のフローにおいて、オリジナルプログラムルーチンが少なくとも終了する前にサービス機能の呼び出しを行い、記憶されているテーブル内の所定の位置を指示するポインタを独立変数としてサービス機能に引き渡し、テーブルの当該位置にエントリ(入力値)が存在する場合、当該エントリによって形成されたアドレスのバイパスルーチンを呼び出し、エントリが存在しなかった場合には、バイパスルーチンの呼び出し無しでサービス機能を終了するように行われる方法に関する。
自動車分野では、ソフトウェアを使用することにより、純粋に機械的な手段では実現できないレベルの効率を有する調整機構乃至制御機構が可能となる。したがって、今日の自動車は、複数の電子制御装置ECU(エレクトロニックコントロールユニット)から成るネットワークを有している。各電子制御装置は、種々のプログラムルーチンを処理するそれぞれ少なくとも1つのプロセッサと、作業メモリと、例えばフラッシュメモリによって実現される固体メモリとを含む。
また、全ての制御装置には、センサデータを受信し、アクチュエータを駆動し、相互に通信するためのインタフェースが設けられている。ソフトウェア産業において通常見られるように、ECUプログラミングにおいても既存の手段へのアクセスが行われる。
新たな制御装置の開発の基礎として、既存の制御装置、例えば先行シリーズの機関に対する機関制御装置が用いられる。この場合、個別の機能の選択的修正又は新たな開発が行われるが、旧いコードの大部分が維持される。これに代えて、メーカが特有の要求に応じて自分自身で制御装置を修正できるよう、納品時に完全にプログラミングされている状態の開発制御装置を注文するケースも多い。どちらのシナリオでも、新たに開発される機能を制御装置の現行のバイナリコードに関連づけて、それぞれのオリジナル機能に置き換えなければならない点は共通している。当該関連づけ過程はバイパス化と称される。
機能のバイパス化を実現するために、例えば、サービスベースのバイパス化へのアクセスが行われる。サービス機能とは、制御装置のメモリに存在する特別な機能である。プログラムコードの所定の位置でプログラムコードが呼び出され、バイパスが技術的に実行される。これは、オリジナル機能に加えてもしくはこれに代えてバイパスルーチンを呼び出し、バイパスルーチンへエントリ量を供給し、処理後にバイパスルーチンによって書き込まれた値を制御装置のメモリの適切な位置へ格納することにより、行われる。
基本的には、バイパスルーチンは、外部システムに存在するか又は制御装置そのものに存在する。後者の手段、いわゆる内部バイパス化は、僅かな付加ハードウェアのみで、専用のインタフェースを設けることなく可能である。
開発制御装置は、一般に、機能バイパスの実行のために準備されていなければならない。サービスベースのバイパス化プロセスが適用される場合、これは、置換される機能の前方及び/又は後方又は内部で、サービス機能呼び出しをバイナリコードに組み入れる必要があることを意味する。
理想的には、こうしたサービス機能呼び出しはソースコード平面で構成されているべきである。ただし、実際には、サービス機能呼び出しを直接にオリジナルECUアプリケーションのバイナリコードに組み入れるステップは別のプロセスで行われるため、常に利用可能というわけではない。
新たなバイパスコードの実行は、最近の従来技術によれば、制御装置のフラッシュメモリをそれぞれ全く新たにプログラミングすることを前提としている。しかし、この手法には時間がかかり、実行中のテストシーケンスを中断するだけでなく、物理的に制限された数のメモリ過程しか行えないフラッシュメモリを疲弊させてしまう。
さらなる問題点は、多くの制御装置が妥当性検査を実行しているということである。プログラムコードが破壊されていないことを保証するために、制御装置はそのメモリ内容のチェックサムを形成し、その値が正しい場合にのみ動作を無制限に続行する。こうした機器では、チェックサムが更新される場合にしか内部バイパスコードを実行できない。これはユーザにとってはどのシナリオにおいても不可能である。
従来技術に対応する典型的なサービスベースの内部バイパス化のシナリオでは、固有のプログラムルーチンに加え、専用のバイパスサービス機能をフラッシュメモリに設けている。バイパスのために用意されている任意のプログラム機能fは、サービス機能の2種の呼び出しを拡張している。
ユーザは例えば専用のソフトウェアによりバイパスルーチンをフラッシュメモリにインストールし、当該ソフトウェアがテーブル内のバイパスルーチンのメモリアドレスを入力する。サービス機能の第1の呼び出しは、例えば置換されるべきプログラムルーチンの直前で行われる。サービス機能は独立変数として第1のテーブルエントリに対するインデクスを受け取る。そこにメモリアドレスが存在していれば、サービス機能は当該アドレスのバイパスルーチンを呼び出す。それ以外の場合、サービス機能は受動状態にとどまる。
テーブルは、バイパスルーチンのメモリアドレスを直接に含むことができるか、又は、例えば、システムにインストールされているバイパスルーチンに一義的に割り当て可能な識別番号を含むことによって間接的に伝達することができる。後者の手段は、1つもしくは複数のバイパスルーチンが制御装置のプロセッサからはアドレシングできない外部のメモリ媒体に記憶されている場合に特に有利である。
バイパスルーチンは、実行されている間、実行によって形成される全ての値をバッファメモリへ書き込む。バイパスルーチンの処理後、プロセッサは再び本来のプログラムルーチンへジャンプして戻る。この場合、プログラムルーチンは、バイパス機能が実行されたか否かにかかわらず、終了まで適切に実行される。
プログラムルーチンの実行後、サービス機能の第2の呼び出しが行われる。サービス機能は第2のテーブルエントリに対するインデクスを独立変数として受け取り、その中の上書きルーチンのアドレスを探索する。上書きルーチンはバイパスルーチンに適合するように調整されており、バイパスルーチンとともにインストールされている。上書きルーチンは、バイパスルーチンの結果をバッファメモリから読み出し、これによって、置換されるべきプログラムルーチンが書き込んだ変数を上書きする。
プログラムルーチンによって処理された変数に関する情報は、例えば、制御装置のa2lファイルに由来する。これは、各開発制御装置に添付されている技術的な仕様のファイルである。当該情報は、特に、制御装置上で動作するルーチンからそのつど読み出され書き込まれる変数に対応する第1のブロックと、変数のメモリアドレスを指定する第2のブロックとを含む。バイパス機能の設計については、プログラムルーチンのソースコードが既知である必要はない。
L.Weiss, "Microcode Patch Facility", IBM Technical Disclosure Bulletin USA, Bd.25, Nr.11A, Apr.1983, pp.5624-5625 J.Lyu et al., "A Procedure-Based Dynamic Software Update", Dependable Systems and Networks, 2001
本発明の課題は、フラッシュメモリの完全に新たなプログラミングを要することなく、既存のプログラムルーチン又は既存のバイパスルーチンを置換できるようにし、さらに、当該置換を特段の負荷なくいつでも、特にランタイムで行えるようにすることである。有利には、チェックサムの変更が不要となり、制御装置の停止乃至シャットダウンを要さない迅速なローディング過程が可能になるとよい。なお、置換とは少なくとも1回の機能的置換であればよく、必ずしもオリジナルプログラムルーチンの既存のコードを物理的に置換しなくてよい。
この課題は、電子制御装置のメモリ内のソフトウェアを変更する方法であって、前記メモリは、少なくとも1つの固体メモリと、揮発性のデータを記憶する少なくとも1つの作業メモリとを含み、前記固体メモリは、前記ソフトウェアの少なくとも一部を形成する複数のオリジナルプログラムルーチンを内部に記憶しており、該複数のオリジナルプログラムルーチンは前記制御装置の少なくとも1つのプロセッサによって処理されるものであり、前記制御装置には、少なくとも1つの前記オリジナルプログラムルーチンに加えて又はこれに代えて処理されるバイパスルーチンが格納されており、当該バイパスルーチンの処理は、前記プロセッサによるプログラムステップの処理フローにおいて前記オリジナルプログラムルーチンが少なくとも終了する前にサービス機能の呼び出しを行い、前記サービス機能に付加的にバイパスルーチンのメモリアドレスを引き渡し、メモリアドレスの引き渡しが成功した場合に、前記サービス機能が対応するバイパスルーチンを呼び出し、メモリアドレスの引き渡しが成功しなかった場合には、バイパスルーチンの呼び出し無しで前記サービス機能を終了するように行われ、前記バイパスルーチンは、特に前記制御装置のインタフェースを介して、前記インタフェースに接続されたコンピュータにより、前記固体メモリの外部に存在するメモリ領域へ、特に揮発性の前記作業メモリへ伝送され、前記バイパスルーチンを開始するアドレスが、前記サービス機能に引き渡される、方法において、第1のステップで、前記サービス機能による前記バイパスルーチンの呼び出しを不活性化し、第2のステップで、前記プロセッサが前記バイパスルーチンを処理しない時間において、前記バイパスルーチンを新たなバイパスルーチンによって置換し、第3のステップで、前記サービス機能による前記新たなバイパスルーチンの呼び出しを作動し、前記第1のステップ及び前記第2のステップ及び前記第3のステップを、前記プロセッサが前記ソフトウェアを処理するランタイムで実行することにより、解決される。
従来技術のバイパス化のための開発制御装置を示す図である。 従来技術のサービス機能の動作を示す図である。 仮想のa2lファイルのセクションを示す図である。 本発明のバイパス化のための開発制御装置を示す図である。 本発明のサービス機能の動作を示す図である。 複数のプロセスを表す環境における本発明のサービス機能の動作を示す図である。 サービス呼び出しを開発制御装置の機械コードへ後から組み込む手段を示す図である。 オーバレイメモリを利用してサービス呼び出しをプログラムコードへ後から組み込む手段を示す図である。
本発明の方法では、バイパスルーチンが、特に制御装置のインタフェースを介して、インタフェースに接続されたコンピュータにより、固体メモリの外部に存在するメモリ領域へ、特に揮発性の作業メモリへ伝送され、バイパスルーチンを開始するアドレスがポインタによって定められたテーブル内の位置へ入力される。
バイパスルーチンを固体メモリ(フラッシュメモリ)以外の別のメモリ領域へ書き込むことにより、フラッシュメモリが負荷されず、よって、書き込みサイクルが寿命を低下させるような影響を受けないことが保証される。
また、この場合、サービス機能の各呼び出しは提供者側で既に実現されており、ユーザが後からプログラムコードに組み入れる必要はないという利点が得られる。このため、フラッシュメモリのみに関連する周期的な妥当性検査に付随する問題が生じない。
刊行物L.Weiss, "Microcode Patch Facility", IBM Technical Disclosure Bulletin USA, Bd.25, Nr.11A, Apr.1983, pp.5624-5625には、バイパスルーチンをコンピュータシステムの作業メモリへ伝送すること、及び、バイパスルーチンのメモリアドレスをサービス機能へ引き渡すことによってバイパスルーチンを作動することが開示されている。
さらに、従来技術から、プロセッサによる処理の期間中、置換されるべきコードにプロセッサがアクセスを試みた場合にプロセスを停止するウォッチポイントを置換されるべきプログラムルーチンの前方にセットすることによってプログラムコードを変更することが公知である(J.Lyu et al., "A Procedure-Based Dynamic Software Update", Dependable Systems and Networks, 2001)。
本発明の重要な利点は、オリジナルプログラムルーチンの置換又は既存のバイパスルーチンの置換にバイパスルーチンを利用でき、その際に制御装置を停止させなくて済むということである。したがって、有利には、バイパスルーチンが作業メモリに記憶される場合に、当該バイパスルーチンの記憶を、プロセッサによるソフトウェアの処理のランタイムで行うことができる。
先行のバイパスルーチンが記憶されていない場合、本発明では、ユーザ又は使用されているソフトウェアが、バイパスルーチンを、最初にポインタが指示しているフラッシュメモリ以外(例えば作業メモリ)のそれまで空だった位置へ記憶した後、バイパスルーチンのアドレスをテーブル内へ記憶する。上述した構成のごとくバイパスルーチンに加えて上書きルーチンが設けられている場合、ポインタが指示している、それまで空だったテーブル位置に対しても、この記憶が同様に行われる。なお、ポインタは、上書きルーチンを呼び出すための独立変数としてサービス機能に引き渡される。
これに対して、既にバイパスルーチン及び/又は上書きルーチンが構成されている場合、つまり、各テーブル位置が各アドレスのエントリによって占有されている場合、本発明の実施形態によれば、既存のバイパスルーチンを新たなバイパスルーチンによって置換する前に、ポインタによって定められたテーブル内の位置に存在するエントリが消去されるか又は不活性化される。なお、当該置換は、プロセッサが既存のバイパスルーチンを処理しない時間中に行われる。同様に、既存の上書きルーチンが置換されるケースでも、既存の上書きルーチンが処理されない時間において置換を行うと有利である。
後者のケースでは、交換前に、バイパスルーチン及び上書きルーチンのアドレスを含む2つのテーブルエントリが消去及び/又は不活性化される。その後、サービス機能呼び出しにより、後続の全てのプログラムサイクルにおいて、そのつど空のエントリが探索され、これらは受動状態に留められる。つまり、制御装置コードがオリジナルプログラムルーチンによって実行される。
その後、バイパスルーチンは、時間的に非クリティカルに、すなわち、時間的な危険なしで、消去可能であり、新たなバイパスルーチンによって置換される。また、このことは上書きルーチンにも当てはまる。バイパスルーチンコードが完全に作業メモリへ書き込まれる場合、バイパスルーチン開始の作業メモリのアドレスは、テーブル内のポインタが定めている位置で入力され、当該バイパスルーチンコードが独立変数としてサービス機能へ引き渡される。上書きルーチンが設けられる場合、同じことが上書きルーチンでも同様に行われる。
これに代えて、旧いバイパスルーチンの消去を行わないこともできる。旧いバイパスルーチンに少なくとも機能的に置き換わる新たなバイパスルーチンを、旧いバイパスルーチンに加えて、作業メモリの空き領域にインストールしてもよい。このことも同様に上書きルーチンにも当てはまる。テーブルエントリは、インストール完了後に、そのつど新たな妥当なアドレスにしたがって変更される。
本発明の有利な実施形態によれば、バイパスルーチンが実行されない状態となってから既存のバイパスルーチンへのアクセスが行われることが保証されるように行われる。まさに実行されているルーチンを消去もしくは操作してしまうと、制御装置が機能エラーを起こし、テスト用自動車もしくはテスト台が損壊するほどの重大な影響が生じうるからである。
上記の点を保証するために、本発明の方法の実施形態では、バイパスルーチン、特に全てのバイパスルーチンにそれぞれステータスレジスタが割り当てられ、各ステータスレジスタは、割り当てられたバイパスルーチンが実行される場合にセットされ、それ以外の場合に消去される。ここで、置換は、テーブル内の既存のエントリが消去され、かつ、置換されるべきバイパスルーチンのステータスレジスタが消去された場合にのみ行われる。
別の実施形態によれば、特にサービス機能によってバイパスルーチンが呼び出されるたびにカウンタが増分され、バイパスルーチンが終了される際に当該カウンタが減分される。さらに、テーブル内の既存のエントリが消去され、かつ、カウンタがゼロとなった場合にのみ、置換が行われる。この実施形態は、制御装置上に並行処理される多数のプロセスが存在しており、相互の中断がありうるために種々の優先度を付してプロセスを実行するケースで有利であり、これにより、同じバイパスルーチンもしくは代替的なバイパスルーチンの中断及び新たな実行、又は、同一もしくは複数のバイパスルーチンの複数回の同時処理が可能となる。カウンタ値がゼロであることは、所定の時点で動作しているプロセスのいずれもが、所定のバイパスルーチンもしくは別の構造段に存在しているバイパスルーチンのいずれかをその時点で実行していないことを意味する。なお、ステータスレジスタ及びカウンタは、バイパスルーチンだけでなく、バイパスルーチンに接続されている上書きルーチンに設けることもできる。この場合、プロセッサが1つもしくは2つのルーチンの置換時点でバイパスルーチン及び上書きルーチンの双方を実行しないことが保証される。
また、ステータスレジスタ及びカウンタを全てのバイパスルーチン及び上書きルーチンに対して設けてもよい。この場合、プロセッサによって既存のバイパスルーチンもしくは上書きルーチンのいずれも実行されないことが保証される。
本発明の有利な実施形態では、インタフェースを介して接続されているコンピュータ上のソフトウェアによりテーブルエントリが消去され、カウンタ及び/又はレジスタへの問合せが行われ、カウンタ状態及び/又はレジスタ状態に応じてテーブルへの新たな入力が行われる。
バイパスルーチンの呼び出しに作用するサービス機能呼び出しは、有利には、ソースコード平面で制御装置コード内に準備されることにより実現される。
これに対して、本来は行われないが、オリジナルプログラムルーチンをバイパスルーチンによって置換したいという場合には、本発明の別の実施形態により、サービス機能呼び出しを後から制御装置のプログラムコード内に構成するとよい。
本発明によれば、プログラムルーチンのための固体メモリに本来存在していないサービス機能呼び出しを構成するために、有利な第1の実施形態として、バイパスルーチンを記憶するプログラムルーチンの少なくとも一部を、固体メモリのオリジナルのメモリ領域から別のメモリ領域(特には同じ固体メモリの別のメモリ領域)へ移し替えることができる。オリジナルのメモリ領域に残っているプログラムルーチン部分と移し替えられたプログラムルーチン部分との間にはプログラム分岐が設けられる。この場合、少なくとも1つのサービス機能呼び出しが、残っているプログラムルーチン部分に続いて、又は、移し替えられたプログラムルーチン部分に続いて、オリジナルのメモリ領域のうちローディングによって空いた一部の領域に記憶される。ここで「移し替えられたプログラムルーチン部分に続いて」とは、開始部に続いても終了部に続いてもよい。
上述したプログラム分岐は、例えば、所定のアドレスでの処理を続行するようにプロセッサをトリガするジャンプ命令によって行われる。当該アドレスは、ジャンプ命令において指示されており、移し替えられたプログラムルーチン部分又は先行して置換されたサービス機能呼び出しがどこに記憶されているかを表している。
移し替えに関連して、さらに、移し替えのために設けられているプログラムルーチン部分のアドレスデータを検査して当該アドレスデータを移し替えの前もしくは後に適合化するか、又は、アドレスデータを含まないが適合化は必要なプログラムルーチン部分のみを移し替えるように構成できる。アドレスデータの適合化は、例えば、移し替えのために設けられているプログラムルーチン部分の内部のアドレスに関連する絶対アドレスデータが移し替え後にも移し替えられたプログラムルーチン内で同じ値もしくは同じ命令を指示するように行われる。反対に、当該適合化を、移し替えのために設けられているプログラムルーチン部分以外のアドレスに関連する相対アドレスデータが移し替え後にも移し替えられたプログラムルーチン外で同じ値もしくは同じ命令を指示するように行ってもよい。
フラッシュメモリの所定領域への移し替えが行われる場合、本発明によれば、この移し替えは、プロセッサがソフトウェアを処理する制御装置のランタイム以外で行われる。また、作業メモリの部分領域への移し替えが行われる場合も、これは、移し替えられるべき部分を含むプログラムルーチンがプロセッサによって現に処理されていないことが保証されないかぎり、ランタイムでは行うことができない。このために、例えば、現に処理されているメモリ領域を指示しているプロセッサポインタについて、当該メモリ領域が部分的に置換すべきルーチンのメモリ領域であるか否かが検査される。
サービス機能呼び出しを後から実現する別の手段として、固体メモリでプログラムルーチンに対しては本来設けられていないサービス機能呼び出しを構成するために、制御装置のオーバレイメモリが利用される。オーバレイメモリのメモリアドレスは、割り当て情報により、固体メモリ内の置換されるべきプログラムルーチンのプログラムルーチン命令のメモリアドレスに割り当てられる。これにより、プロセッサは、固体メモリ内のアドレスのプログラムルーチン命令に代えて、オーバレイメモリ内の対応するアドレスの命令を処理し、オーバレイメモリ内の対応するアドレスに、作業メモリの所定のアドレス以降のプログラム処理を続行するようにプロセッサをトリガするジャンプ命令を記憶させる。なお、ここでの所定のアドレスはジャンプ命令によって識別される。さらに、当該アドレス以降作業メモリのメモリ領域には、サービス機能呼び出し、及び、少なくとも1つのプログラムルーチン命令の再構成、及び、オリジナルプログラムルーチンに戻る旨のジャンプ命令が記憶される。
ここで、本発明は、既知の構造の制御装置にオーバレイメモリと称されるメモリ領域が存在しており、制御装置のオーバレイ機能がスイッチオンされた場合に、固体メモリのアドレス位置の命令に代えて、固体メモリのアドレスの割り当て情報によって対応づけられているオーバレイメモリのアドレスの命令が実行されるという事実を利用している。
割り当て情報は、プロセッサレジスタもしくは記憶されているテーブルの内容によって定めることができる。
このように行われる割り当てにより、固体メモリのアドレスに存在するプログラムルーチン命令が無視され、これに代えて、オーバレイメモリの対応アドレスのジャンプ命令が実行される。当該ジャンプ命令は、プロセッサに対し、これによって識別される作業メモリ内のアドレスへの分岐をトリガする。当該アドレス以降の領域には、上述したバイパスルーチンの処理をトリガするサービス機能呼び出しと、「重畳」プログラムルーチン命令の再構成とが存在しており、これにより、置換されるべきプログラムルーチンの全てのオリジナル命令が実行されることが保証される。ここで、サービス機能呼び出しは、再構成されるプログラムルーチン命令の前または後で書き込まれる。その後には、オリジナルプログラムルーチンへ戻る旨のジャンプ命令、すなわち、重畳されたアドレスへジャンプする旨のジャンプ命令が生じる。
このように、サービス機能呼び出しの挿入は、1回だけでなく複数回行うことができる。よって、例えば、場合により設けられる上書きルーチンに対してサービス機能呼び出しを実現することができる。
固体メモリ内の少なくとも1つのメモリアドレスをオーバレイメモリ内の少なくとも1つの対応アドレスへ重畳させてサービス機能呼び出しを統合するこうした手法は、固体メモリの操作が完全に禁止されるという利点を有する。固体メモリの操作禁止は、予め定められたプログラムルーチン部分の移し替えが行われる場合に要求される。
有利には、本発明の方法の別の実施形態において、まず制御装置でスイッチオンされているオーバレイ機能を遮断し、続いて任意の順序で、オーバレイメモリにジャンプ命令を記憶し、ジャンプ命令が指示する作業メモリに、サービス機能呼び出しと重畳命令の再構成とを統合することができる。これらが行われてから、制御装置のオーバレイ機能がスイッチオンされる。
本発明の別の実施形態によれば、バイパスルーチンが制御装置外のメモリ領域へ書き込まれるように構成できる。例えば、当該メモリ領域は、別の制御装置のメモリ、又は、他の制御装置をシミュレートするコンピュータのメモリであって、特にはラピッドコントロールプロトタイプシステムである。また、唯一のサービス機能呼び出ししか必要なく、これは、上述したように、メーカ側で置換されるべきプログラムルーチン内に既に構成されていてもよいし、又は、事後的に本発明の方法によって実現されてもよい。
後者のケースでは、サービス機能の独立変数が示しているテーブル内の位置の内容は、制御装置内のメモリでなく外部のメモリを指示しているので、制御装置又はプロセッサは、バイパスルーチンの実行に必要なデータを外部メモリの制御装置又は外部メモリを有するシミュレーションコンピュータに送信し、そこに記憶されているバイパスルーチンを実行するようにトリガされる。当該送信は、1つもしくは複数の制御装置とシミュレーションコンピュータとの間のインタフェース及び通信経路を介して行われる。その後、バイパスルーチンの結果が、特に当該結果によってオリジナルプログラムルーチンの結果を上書きするために、通信によってサービス機能呼び出しを実行する制御装置へ返送される。このために、返送されてくる結果は制御装置のテーブルへ入力され、特には上書きルーチンをトリガするサービス機能によって、当該上書きルーチンを実行するために再び読み出される。
以下に、本発明の実施例を図に則して詳細に説明する。
図1には、サービスベースの内部機能バイパス化の基本方式が示されている。開発制御装置ECUには、固体メモリSP1(一般的にはフラッシュメモリ)と、作業メモリRAMとが設けられている。固体メモリSP1には機械言語で符号化されたプログラムが存在しており、このプログラムは複数のプログラムルーチン、例えばルーチンf1,engine_idle_rev,f3を含んでいる。ルーチンの個数はここでは図示の簡単化のために大幅に低減されている。実際の制御装置プログラムは典型的には数百の個別ルーチンから成る。
実際の適用例では、制御装置ECUは機関制御装置であり、ルーチンengine_idle_revはアイドリング回転数を制御するためのルーチンである。燃料消費量を低減するには、機関のアイドリング回転数をできるだけ低く保つことが有意である。言い換えれば、必要充分な回転数に機関動作を密に関連させて維持すべきである。
ただし、ここでの値は、機関モデルごとに設定された定数ではなく、種々の可変要素によって定められる可変値である。なお、ここでの可変要素には、機関モデルに加え、例えばバッテリの充電レベル、又は、電気負荷による瞬時バッテリ負荷、又は、機関温度などが含まれる。
多くの影響要因が定量化可能であってそれぞれ大きな重みを有するため、最適化できる可能性も大きい。プログラマであれば、アイドリング回転数を制御する機能の確実な手段が設けられることを所望するはずである。
1つのシナリオとして、提供者に機関制御装置を注文した自動車メーカが、当該提供者に対して、アイドリング回転数を制御する機能を試験したい旨を伝達するケースが考えられる。別のシナリオでは、制御装置の機能拡張が所望されるかもしれない。例えば、自動車が停止した場合の自動遮断機能を自動車モデルに設けたいというケースなどである。制御装置上に存在するアイドリング回転数の制御機能は、こうした機能を有していないので、ユーザは自分自身で置換を行いたいという要望を提供者に伝達する。
提供者側は、これに応じて、バイパスサービス機能ZをフラッシュメモリSP1の空きメモリ領域に格納し、場合により置換されるべき機能engine_idle_revの前後でサービスの呼び出しを実行する。
引き渡される独立変数id1,id2は、機能アドレステーブルADにおける制御装置機能のメモリアドレスの位置を指示するポインタである。サービス機能Zは、引き渡されたポインタの指示しているテーブル位置がメモリアドレスのエントリを有しているか否かを検査する。エントリが存在している場合には、サービス機能は当該アドレスでid1のバイパスルーチン又はid2の上書きルーチンを待機し、これらを呼び出す。そうでない場合には、サービス機能Zは受動状態のままに留められる。
フラッシュメモリSP1に記憶されている機能engine_idle_revを新たな機能eir_bypによって置換しようとするユーザは、当該新たな機能eir_bypを従来技術から周知の手法でフラッシュメモリSP1の空き領域に格納し、そのアドレスを機能アドレステーブルADの位置id1へ入力する。また、ユーザは、上書き機能eir_byp_owrをフラッシュメモリSP1の別の空き領域に格納し、そのアドレスを機能アドレステーブルADの別の位置id2へ入力する。
バイパス機能eir_bypは固有のプログラムコードを含む。ただし、バイパス機能eir_bypは、自身が書き込んだ全ての値をまずバッファメモリVARへ格納する。ここでの値は、eir_byp以外の他の機能に関連しない定義されたグローバル変数のセットから成る。オリジナル機能engine_idle_revが適切に実行された後、eir_byp_owrは、engine_idle_revが書き込んだ変数を、eir_bypが作成したバッファメモリVARの値で上書きする。
上書き機能eir_byp_owrはバイパス機能eir_byp専用に作成されているので、当該上書き機能にとっては、バッファメモリVARのどの変数がプログラムコードのどの変数を上書きしなければならないかは既知である。フラッシュメモリSP1上に1つだけでなく複数のバイパス機能がインストールされる場合、各バイパス機能はそれぞれ固有の上書き機能を受け取る。オリジナル機能engine_idle_revがどの変数を処理するかという情報、及び、そのメモリアドレスの情報は、制御装置に添付されたa2lファイルから取り出される。
上書き機能を呼び出す第2のサービス呼び出しZ(id2)は、engine_idle_revにおいて全ての変数書き込みアクセスが行われた後、当該変数が別のフローで使用されるまでに行われなければならない。そうでないとプログラムフローの一貫性が保持されないからである。ここで、engine_idle_revのリターンによって何らの値も引き渡されない場合には、呼び出しを当該リターン指示の直後に行うことができる。それ以外の場合、呼び出しはリターン指示より前の機能の内部で行われなければならない。
上述したシナリオでは、オリジナル機能もバイパス機能も完全に実行される。ただし、制御装置ECUが例えば時間的にクリティカルな機能を実行する別のシナリオでは、機能engine_idle_revが完全に不活性化されることもありうる。このシナリオでは、バイパス機能がその値をバッファメモリVARへ書き込むのではなく、プログラムコードへ直接に書き込む。第2のサービス呼び出しは省略され、サービス機能Zは、アドレスf3又はこのアドレスf3が記憶されているテーブル位置を指示するポインタを、第2の独立変数として受け取る。なお、サービス機能Zは、バイパス機能の呼び出し後にf3へのジャンプを行うこともできる。
図2には、従来技術によるバイパスサービス機能の基本機能のフローチャートが示されている。呼び出しの際には、サービスに、機能アドレステーブルAD内の位置を表す独立変数idnが引き渡される。サービスは、当該位置において、所定のメモリアドレス又は空きエントリ乃至妥当でないアドレスを表す値を探索し、探索結果に応じて空きエントリをマークする。
エントリが空である場合、サービスを終了するリターン指示が直接に行われる。メモリアドレスが発見された場合には、当該位置で所定の機能が待機され、当該機能の呼び出しが実行される。適切な機能が当該アドレスにまさに存在することは、使用されるバイパスインプリメンテーションソフトウェアによって保証される。
図3には、仮想a2lファイルのセクションが示されている。このファイルは、制御装置ソフトウェアの技術的仕様を含んだ、開発制御装置の提供者データの一部である。図3には、機能の仕様を含むセクションの一部が示されている。この場合、機能engine_idle_revに対するバイパス機能を書き込もうとするプログラマは、当該機能が、変数var4,var13,var2を読み込み、かつ、変数var8,var2,var14,var11,var22を書き込み、かつ、設定値rcp_n_3568,scri_896,elec_m_cswによってパラメータ化されていることを読み出す。なお、a2lファイルの別のセクションには、上記各変数のメモリアドレスが挙げられている。
図4には、本発明にしたがって構成された制御装置で図1のバイパスシナリオが実行される様子が示されている。バイパス機能全体、すなわち、バイパスルーチンeir_byp及び上書きルーチンeir_byp_owrの双方が、フラッシュメモリSP1ではなく作業メモリRAMにロードされる。
作業メモリRAMは揮発性メモリであるため、その内容は制御装置の遮断後には保持されない。このため、迅速かつ任意の頻度での書き込みが可能である。本発明によれば、制御装置を停止させて新たなプログラミングを行う必要なく、所望に応じてバイパスルーチンを交換もしくは拡張できる。
このために、有利な構成では、まず、機能アドレステーブルAD内のエントリid1,id2が消去される。この消去に応じて、サービス機能Zは、次の呼び出しによって開始されるまで、受動状態にとどまる。制御装置コードは、オリジナル機能engine_idle_revを考慮してプラン通りに処理される。バイパスルーチンは消去され、新たなルーチンによって置換される。新たなバイパスルーチンがロードされると、相応のアドレスが機能アドレステーブルAD内の独立変数id1,id2が示す位置へ書き込まれる。
また、旧いバイパスルーチンを消去することなく、新たなバイパスルーチンを補充的にロードすることもできる。この場合、テーブルエントリの予めの消去は抑圧される。補充コードは有利には先行するバイパスルーチンの実行されない時間にインストールされるので、エントリは単純に上書きされる。これにより、全般的に書き込みが行われたことを確認できる。
作業メモリRAMにコードがインストールされることにより、妥当性検査に付随する問題が発生しない。妥当性検査は固体メモリSP1においてしか行われないからである。別の態様として、本発明の全ての実施例において、インタフェースを介して外部から書き込まれる制御変数により、バイパスコードを実行すべきか否かをサービス機能に伝達することもできる。このために、サービス機能は、制御変数の値を検査し、検査された条件乃至値が存在する場合にのみ、独立変数が指示するアドレスへのジャンプを行う。
本発明の方法によれば、既存のバイパスルーチンが実行期間中に消去乃至上書きされないことが必然的に保証される。
このために、図5では、サービス関数Zに制御機能が拡張されている。制御変数BypCodeActiveは、本明細書の従来技術の欄に言及した意味での仮想スイッチ又はステータスレジスタとして機能する。当該制御変数は、バイパスルーチンの実行前は1にセットされ、終了後に0にセットされる。使用されるバイパスインプリメンテーションソフトウェアは制御装置ECUのインタフェースを介して値BypCodeActiveを読み出し、この値が1である場合に、バイパスルーチンへのアクセスすなわち上書きを拒絶するように構成されている。
サービス機能は、上述した主機能のほか、他の機能を担当することもできる。例えば、制御装置ECUの遮断前に作業メモリRAMに存在するコードを抹消することにより、制御装置の次回のスタート後に破損したコードが実行されないことを保証できる。
別の実施例では、サービス機能は、バイパスルーチンがダウンロード又は交換された後、遅くとも第1のバイパスルーチンの実行が要求されるまでに、新たなルーチンがダウンロードされたけれども未だ初期化されていないことを識別し、エントリid0によって構成される機能アドレスを呼び出す。機能アドレスid0には、有利には、バイパスインプリメンテーションソフトウェアによってダイナミックにダウンロードされた機能が存在しており、この機能は、バイパスルーチンが参照している要素、例えば複数のグローバル変数の初期化を行う。したがって、サービス機能は、バイパスルーチンでの新たなセットの第1の呼び出しの前にまず初期化機能が実行されることを保証する。
上述した制御機能はどのようなシナリオにおいても充分でない。例えば、動作しているバイパスルーチンがより高い優先度を有する第2のプロセスによって中断されることがある。この場合、第2のプロセスも同様にバイパスルーチンを実行するので、実行後にはBypCodeActive=0がセットされるが、保持されているバイパスコードは未だ終了していない。このように、複数のプロセスが同時に複数のバイパスルーチンを実行するシナリオでは、いずれのプロセスにおいてもバイパスルーチンがアクティブとならないことが保証されなければならない。
この問題は、図6に示されている態様によって解決される。ここではBypCodeActiveはバイナリ値でない。つまり、この値はステータスレジスタではなく、バイパスルーチンが実行される前にアトミックに増分され、終了後にアトミックに減分される整数である。
理論的には各整数値はゼロ以上の値を取ることができ、この値によってどれだけの個数のバイパスルーチンが実際に処理されるかを表している。置換のためのバイパスルーチンへのアクセスは、BypCodeActiveがゼロである場合にのみ行われる。
図7には、サービス機能呼び出しがメーカ側又は供給者側で準備されていないケースにおいて、こうしたサービス機能呼び出しを後から機械コードに組み入れる実施例が示されている。
図7の左方には制御装置の固体メモリが示されている。ここには3つのルーチンfcn1,fcn2,fcn3から成るプログラムが記憶されている。また、固体メモリにはバイパスサービス機能Zが存在している。これは、提供者又はユーザ自身が固体メモリにインストールしたものである。図7の右方には、fcn2にサービス呼び出しが配置された後の同じ固体メモリが示されている。
ここでは、fcn2のコードの一部が所望のサービス呼び出しの位置から固体メモリの充分に大きな空きメモリ領域へ移されており、サービス呼び出しがその前方に書き込まれている。移動によって空いたfcn2のメモリ領域には、サービス呼び出しを指示するジャンプ命令が書き込まれている。さらに、別のジャンプ命令が移動されたfcn2部分の後方に書き込まれ、前方のプログラムフローへ戻っている。
バイパスサービス機能Zは、制御装置の提供者側で予めインストール可能である。ユーザは、上述した方法により、ソフトウェア内の所望の位置にバイパスサービス機能の呼び出しが構成されるように制御できる。ユーザがソフトウェアのソースコードにアクセスして提供者との協働作業を行う必要はない。
ふつう、サービス機能Zを呼び出すために後から構成されたコードは、制御装置に適合させなければならない。プログラム機能に独立変数を引き渡す具体的な様式は、プロセッサアーキテクチャや使用されるプログラミング言語又は使用されるコンパイラなどに依存して変化する。よって、本発明の方法の実行に用いられるバイパスインプリメンテーションソフトウェアは、例えば専用の仕様ファイルを介して各制御装置に関する情報を読み込み、新たに構成された機能呼び出しを相応に適合化する制御を行わなければならない。
本発明の方法の別の実施例では、実行されるソフトウェアが、移動されるコードのアドレスデータを移動前に検査し、必要に応じて移動の前又は後にこのアドレスデータを当該移動に合うように適合化する。当該適合化は、特に、移動されるコード以外のアドレスを指示する相対アドレスデータと、移動されるコード内のアドレスを指示する絶対アドレスデータとを必要とする。例えば、或るメモリ命令に対して「現在位置−20」という位置指示が受け取られ、当該メモリ命令が移動されなかった場合、コードそのものを修正することなくコードの位置を変更することは許されない。これを行うとプログラムを正しく動作させることができなくなってしまうからである。ソフトウェアはこの場合には移動の実行を拒絶するか、又は、別の実施例として、所定の領域において移動可能な代替コードシーケンスを探索する。さらに別の実施例として、移動されるコード部分における相対アドレスデータを相応に適合化したり、又は、同じ機能を有する新たなコード乃至新たなコードシーケンスによって置換したりしてもよい。
選択的に、開発制御装置で利用可能な各機能を利用して、フラッシュメモリ上に存在する機械コードを操作することなく、必要なサービス機能呼び出しをプログラムコードに一時的に結合することもできる。このことは図8に示されている。
例えば、オーバレイメモリOV、すなわち、多くの開制御装置に存在している、メモリ内容に他の内容を一時的に重畳させる装置を利用することができる。また、物理メモリアドレスを論理メモリアドレスに新たに割り当てるメモリマネジメントユニットMMUも利用可能である。メモリマネジメントユニットMMUは本発明ではオーバレイメモリと同様に利用できる。オーバレイメモリと同様、メモリマネジメントユニットMMUは多数の開発制御装置でプロセッサ機能の一部となっている。
ここで、本発明の方法を実行する際には、機械コードの充分に長いコードシーケンスに、作業メモリRAMの所定のアドレスを指示するジャンプ命令が重畳される。当該アドレスは、重畳されたコードの再構成とサービス機能呼び出しとを含むコードシーケンスの開始部を表しており、サービス機能呼び出しは再構成されたコードの前又は後に行われる。コードシーケンスはジャンプ命令で終了するが、このジャンプ命令は、重畳されたコードシーケンスに直接に後続する機械命令に続いている。サービス機能はバイパスルーチンと同様に作業メモリRAMへ書き込まれる。
ただし、制御装置コードが周期的な妥当性検査を含む場合、この手法ではコードのチェックサムが変更される。
さらに、ウォッチポイントの利用も可能である。これは、多くの開発制御装置で利用可能な機能である(ただし1回に利用できる制御装置の数は限られる)。ブレイクポイントとは異なり、ウォッチポイントは、制御装置を単純に所定の開発制御装置モデル内の所望の位置にあるものと捉えず、代わりに設けられたメモリに書き込まれるコードを実行する。これにより、例えばユーザは、所定の条件(例えばif(x>4)break;)に停止を関連づけることができる。こうした監視コードはサービス呼び出しからも形成可能である。
ECU 開発制御装置、 SP1 固体メモリ、 f1,engine_idle_rev,f3 ルーチン、 Z バイパスサービス機能、 id1,id2 位置、 eir_byp アドレス、 eir_byp_owr 上書きルーチン、 RAM 作業メモリ、 AD 機能アドレステーブル、 VAR バッファメモリ

Claims (9)

  1. 電子制御装置(ECU)のメモリ内のソフトウェアを変更する方法であって、
    前記メモリは、少なくとも1つの固体メモリ(SP1)と、揮発性のデータを記憶する少なくとも1つの作業メモリ(RAM)とを含み、
    前記固体メモリは、前記ソフトウェアの少なくとも一部を形成する複数のオリジナルプログラムルーチンを内部に記憶しており、該複数のオリジナルプログラムルーチンは前記制御装置の少なくとも1つのプロセッサによって処理されるものであり、
    前記制御装置には、少なくとも1つの前記オリジナルプログラムルーチンに加えて又はこれに代えて処理されるバイパスルーチンが格納されており、
    当該バイパスルーチンの処理は、前記プロセッサによるプログラムステップの処理フローにおいて前記オリジナルプログラムルーチンが少なくとも終了する前にサービス機能(Z)の呼び出しを行い、前記サービス機能に付加的にバイパスルーチンのメモリアドレスを引き渡し、メモリアドレスの引き渡しが成功した場合に、前記サービス機能が対応するバイパスルーチンを呼び出し、メモリアドレスの引き渡しが成功しなかった場合には、バイパスルーチンの呼び出し無しで前記サービス機能を終了するように行われ、
    前記バイパスルーチンは、特に前記制御装置のインタフェースを介して、前記インタフェースに接続されたコンピュータにより、前記固体メモリ(SP1)の外部に存在するメモリ領域へ、特に揮発性の前記作業メモリ(RAM)へ伝送され、
    前記バイパスルーチンを開始するアドレスが、前記サービス機能に引き渡される、
    方法において、
    第1のステップで、前記サービス機能による前記バイパスルーチンの呼び出しを不活性化し、
    第2のステップで、前記プロセッサが前記バイパスルーチンを処理しない時間において、前記バイパスルーチンを新たなバイパスルーチンによって置換し、
    第3のステップで、前記サービス機能による前記新たなバイパスルーチンの呼び出しを作動し、
    前記第1のステップ及び前記第2のステップ及び前記第3のステップを、前記プロセッサが前記ソフトウェアを処理するランタイムで実行する、
    ことを特徴とする方法。
  2. 前記サービス機能への前記バイパスルーチンのメモリアドレスの引き渡しは、記憶されているテーブル(AD)内の所定の位置を指示するポインタを前記サービス機能(Z)に引き渡し、前記テーブル(AD)内の前記所定の位置にエントリが存在する場合、当該エントリによって形成されるアドレスのバイパスルーチンを呼び出し、前記テーブル(AD)内の前記所定の位置にエントリが存在しない場合もしくは当該エントリが妥当でないことが標示されている場合、バイパスルーチンの呼び出し無しで前記サービス機能(Z)を終了するように行われる、
    請求項1記載の方法。
  3. 前記バイパスルーチンの記憶は、前記プロセッサが前記ソフトウェアを処理するランタイムで実行される、
    請求項1記載の方法。
  4. 既存のバイパスルーチンを新たなバイパスルーチンによって置換する前に、前記ポインタによって定められた前記テーブル(AD)内の位置の既存のエントリが消去されるか又は妥当でないものとして標示される、
    請求項2又は3記載の方法。
  5. バイパスルーチン、特に全てのバイパスルーチンにそれぞれステータスレジスタが割り当てられ、各ステータスレジスタは、割り当てられたバイパスルーチンが実行される場合に第1の値へセットされ、それ以外の場合に第2の値へセットされるか又は消去され、
    前記置換は、前記テーブル(AD)内の既存のエントリが消去されるか又は妥当でないものとして標示され、かつ、置換されるべきバイパスルーチンのステータスレジスタが第2の値にセットされたか又は消去された場合にのみ行われる、
    請求項4記載の方法。
  6. カウンタにより、所定の時点でバイパスルーチン、特に置換されるべきバイパスルーチンを処理するプロセスの数が監視され、
    有利には、特にサービス機能(Z)によってバイパスルーチンが呼び出されるたびに前記カウンタが増分され、バイパスルーチンが終了される際に前記カウンタが減分され、さらに、テーブル内の既存のエントリが消去されるか又は妥当でないものとして標示され、かつ、前記カウンタが基本値、有利にはゼロとなっている場合にのみ、置換が行われる、
    請求項4記載の方法。
  7. ソフトウェア及び/又はハードウェア、特に制御装置により、前記テーブルのエントリが消去され、前記カウンタ又は前記レジスタへの問合せが行われ、カウンタ状態又はレジスタ状態に応じて前記テーブルへの新たなエントリが行われる、
    請求項4又は5記載の方法。
  8. 固体メモリ(SP1)内でプログラムルーチンに対しては本来設けられていないサービス機能呼び出しを構成するために、前記制御装置のオーバレイメモリが利用され、
    該オーバレイメモリの少なくとも1つのメモリアドレスが、割り当て情報により、前記固体メモリ内で置換されるべきプログラムルーチンのプログラムルーチン命令のメモリアドレスに割り当てられ、
    これにより、前記プロセッサが、
    ・前記固体メモリ内の前記アドレスの前記プログラムルーチン命令に代えて、前記オーバレイメモリ内の対応するアドレスの命令を処理し、
    ・前記オーバレイメモリ内の前記対応するアドレスに、揮発性もしくは不揮発性の作業メモリ(RAM)内の所定のアドレス以降のプログラム処理を続行するように前記プロセッサをトリガするジャンプ命令を記憶させ、なお、前記所定のアドレスは前記ジャンプ命令によって識別され、
    ・前記所定のアドレス以降の前記作業メモリのメモリ領域に、少なくとも、サービス機能呼び出し、及び、プログラムルーチン命令の再構成、及び、オリジナルプログラムルーチンに戻る旨のジャンプ命令を記憶させる、
    請求項1から7までのいずれか1項記載の方法。
  9. 電子制御装置(ECU)のメモリ内のソフトウェアを変更する方法であって、
    前記メモリは、少なくとも1つの固体メモリ(SP1)と、揮発性のデータを記憶する少なくとも1つの作業メモリ(RAM)とを含み、
    前記固体メモリは、前記ソフトウェアの少なくとも一部を形成する複数のオリジナルプログラムルーチンを内部に記憶しており、該複数のオリジナルプログラムルーチンは前記制御装置(ECU)の少なくとも1つのプロセッサによって処理されるものであり、
    前記制御装置には、少なくとも1つの前記オリジナルプログラムルーチンに加えて又はこれに代えて処理される第1のバイパスルーチンが格納されており、
    当該第1のバイパスルーチンの処理は、前記プロセッサによるプログラムステップの処理フローにおいて前記オリジナルプログラムルーチンが少なくとも終了する前にサービス機能の呼び出しを行い、前記サービス機能に付加的にバイパスルーチンのメモリアドレスを引き渡し、メモリアドレスの引き渡しが成功した場合、前記サービス機能が対応するバイパスルーチンを呼び出し、メモリアドレスの引き渡しが成功しなかった場合には、バイパスルーチンの呼び出し無しで前記サービス機能を終了するように行われ、
    前記第1のバイパスルーチンは、特に前記制御装置のインタフェースを介して、前記インタフェースに接続されたコンピュータにより、前記固体メモリ(SP1)の外部に存在するメモリ領域へ、特に揮発性の前記作業メモリ(RAM)へ伝送され、
    前記第1のバイパスルーチンを開始するアドレスが前記サービス機能に引き渡される、
    方法において、
    前記プロセッサが前記ソフトウェアを処理するランタイムで、前記第1のバイパスルーチンに加えて、第2のバイパスルーチンが、前記固体メモリ(SP1)の外部に存在するメモリ領域へ、特に揮発性の前記作業メモリ(RAM)へ伝送され、
    前記第2のバイパスルーチンを開始するアドレスが前記サービス機能に引き渡される、
    ことを特徴とする方法。
JP2014249263A 2013-12-09 2014-12-09 電子制御装置のメモリ内のソフトウェアを変更する方法 Expired - Fee Related JP6257506B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP13196209.4 2013-12-09
EP13196209.4A EP2881858B1 (de) 2013-12-09 2013-12-09 Verfahren zur Änderung der Software im Speicher eines elektronischen Steuergerätes

Publications (2)

Publication Number Publication Date
JP2015115073A true JP2015115073A (ja) 2015-06-22
JP6257506B2 JP6257506B2 (ja) 2018-01-10

Family

ID=49724514

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014249263A Expired - Fee Related JP6257506B2 (ja) 2013-12-09 2014-12-09 電子制御装置のメモリ内のソフトウェアを変更する方法

Country Status (4)

Country Link
US (1) US20150160940A1 (ja)
EP (1) EP2881858B1 (ja)
JP (1) JP6257506B2 (ja)
CN (1) CN104699453B (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108139723A (zh) 2015-11-19 2018-06-08 帝斯贝思数字信号处理和控制工程有限公司 用于运行控制器的方法以及设置用于外部旁路的控制器
US10528479B2 (en) * 2017-06-02 2020-01-07 Huawei Technologies Co., Ltd. Global variable migration via virtual memory overlay technique for multi-version asynchronous dynamic software update
EP3590037A4 (en) 2017-07-25 2020-07-08 Aurora Labs Ltd CONSTRUCTION OF DELTA SOFTWARE UPDATES FOR VEHICLE ECU SOFTWARE AND TOOL CHAIN DETECTION
US10503485B2 (en) 2017-11-30 2019-12-10 Dspace Digital Signal Processing And Control Engineering Gmbh Method and system for generating program code
CN107894899B (zh) * 2017-12-06 2021-04-06 北京联盛德微电子有限责任公司 Rom程序升级系统及升级方法
EP3908947A1 (en) * 2019-03-25 2021-11-17 Aurora Labs Ltd Generating and signing a line-of-code behavior and relation model
CN113574839B (zh) * 2020-02-28 2024-04-09 华为技术有限公司 一种软件版本回滚方法、装置及系统

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6116302A (ja) * 1984-05-25 1986-01-24 ロ−ベルト・ボツシユ・ゲゼルシヤフト・ミツト・ベシユレンクテル・ハフツング 自動車の機能制御装置
JPH07152551A (ja) * 1993-11-30 1995-06-16 Toshiba Corp コンピュータシステムおよびプログラム実行方法
JPH0895771A (ja) * 1994-09-21 1996-04-12 N T T Data Tsushin Kk サ−ビス処理システム
JPH08137514A (ja) * 1994-11-15 1996-05-31 Nippondenso Co Ltd エンジン制御装置
US6260157B1 (en) * 1999-02-16 2001-07-10 Kurt Schurecht Patching of a read only memory
JP2008102761A (ja) * 2006-10-19 2008-05-01 Mitsubishi Electric Corp 組み込みファームウェアの更新方法
US20080148250A1 (en) * 2005-10-28 2008-06-19 Giovanni Motta Update package generation employing matching technique with controlled number of mismatches

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1327851C (en) * 1988-06-22 1994-03-15 Amy S. Christopher Reconfigurable printer
DE69738646T2 (de) * 1996-08-28 2008-11-13 Hitachi, Ltd. Verfahren zur Ausführung eines Prozesses und Betriebsmittelzugriffsverfahren in einem Computer-System
US6009512A (en) * 1997-10-27 1999-12-28 Advanced Micro Devices, Inc. Mechanism for forwarding operands based on predicated instructions
US6314566B1 (en) * 1998-09-29 2001-11-06 Apple Computer, Inc. Method and apparatus for “Just-in-Time” dynamic loading and unloading of computer software libraries
US20020073398A1 (en) * 1998-12-14 2002-06-13 Jeffrey L. Tinker Method and system for modifying executable code to add additional functionality
US6438664B1 (en) * 1999-10-27 2002-08-20 Advanced Micro Devices, Inc. Microcode patch device and method for patching microcode using match registers and patch routines
US7784044B2 (en) * 2002-12-02 2010-08-24 Microsoft Corporation Patching of in-use functions on a running computer system
US6891765B2 (en) * 2003-08-05 2005-05-10 Via Telecom, Inc. Circuit and/or method for implementing a patch mechanism for embedded program ROM
DE10352172A1 (de) * 2003-11-05 2005-06-09 Robert Bosch Gmbh Verfahren und Vorrichtung zur Anpassung von Funktionen zur Steuerung von Betriebsabläufen
US7415705B2 (en) * 2004-01-14 2008-08-19 International Business Machines Corporation Autonomic method and apparatus for hardware assist for patching code
US9292274B2 (en) * 2004-08-31 2016-03-22 Smith Micro Software, Inc. Efficient method and system for reducing the time to apply update package
US7343599B2 (en) * 2005-01-03 2008-03-11 Blue Lane Technologies Inc. Network-based patching machine
US7984432B2 (en) * 2006-05-30 2011-07-19 Infineon Technologies Ag Method for patching a read-only memory and a data processing system comprising a means of patching the read-only memory based on patch contexts
US7882336B2 (en) * 2007-02-01 2011-02-01 International Business Machines Corporation Employing a buffer to facilitate instruction execution
US20090259999A1 (en) * 2008-04-11 2009-10-15 Oracle International Corporation Method and system for applying a patch during application execution
US20120047322A1 (en) * 2010-08-20 2012-02-23 Chung Shine C Method and System of Using One-Time Programmable Memory as Multi-Time Programmable in Code Memory of Processors
US20120265946A1 (en) * 2011-04-12 2012-10-18 Appsense, Limited Bypassing user mode redirection

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6116302A (ja) * 1984-05-25 1986-01-24 ロ−ベルト・ボツシユ・ゲゼルシヤフト・ミツト・ベシユレンクテル・ハフツング 自動車の機能制御装置
JPH07152551A (ja) * 1993-11-30 1995-06-16 Toshiba Corp コンピュータシステムおよびプログラム実行方法
JPH0895771A (ja) * 1994-09-21 1996-04-12 N T T Data Tsushin Kk サ−ビス処理システム
JPH08137514A (ja) * 1994-11-15 1996-05-31 Nippondenso Co Ltd エンジン制御装置
US6260157B1 (en) * 1999-02-16 2001-07-10 Kurt Schurecht Patching of a read only memory
US20080148250A1 (en) * 2005-10-28 2008-06-19 Giovanni Motta Update package generation employing matching technique with controlled number of mismatches
JP2008102761A (ja) * 2006-10-19 2008-05-01 Mitsubishi Electric Corp 組み込みファームウェアの更新方法

Also Published As

Publication number Publication date
CN104699453A (zh) 2015-06-10
US20150160940A1 (en) 2015-06-11
EP2881858A1 (de) 2015-06-10
CN104699453B (zh) 2018-07-13
EP2881858B1 (de) 2016-04-06
JP6257506B2 (ja) 2018-01-10

Similar Documents

Publication Publication Date Title
JP6257506B2 (ja) 電子制御装置のメモリ内のソフトウェアを変更する方法
JP4006337B2 (ja) 共有ライブラリを使用して実行可能ファイルの実行を修正する方法
US9678867B2 (en) Method for changing the software in the memory of an electronic control unit
US9348730B2 (en) Firmware ROM patch method
CN102902556B (zh) 一种嵌入式设备的多级引导加载方法
US20050268195A1 (en) Apparatus and method for improving emulation speed of high-level languages in on-chip emulation systems
US7546596B2 (en) Non-disruptive method, system and program product for overlaying a first software module with a second software module
US20190095187A1 (en) Incremental updates in static libraries
JP2017142794A (ja) プログラマブルコントローラシステム、そのコントローラ、支援装置、hci装置、二重化コントローラシステム
CN110007935B (zh) 一种程序升级的处理方法、装置及设备
US6925522B2 (en) Device and method capable of changing codes of micro-controller
US9262301B2 (en) Observability control with observability information file
JP4931711B2 (ja) カーネル更新方法、情報処理装置、プログラムおよび記憶媒体
US9223697B2 (en) Computer reprogramming method, data storage medium and motor vehicle computer
US9501434B2 (en) Microcomputer
CN102073522A (zh) 面向嵌入式系统的应用程序在线自我更新方法
JPH07152551A (ja) コンピュータシステムおよびプログラム実行方法
JP2007257271A (ja) メモリ診断方法、マイクロコンピュータシステム及びプログラム
JP6676791B2 (ja) 情報処理装置
CN112527365A (zh) 应用程序更新方法、非易失存储器、存储介质及家用电器
US20120017035A1 (en) Runtime reprogramming of a processor code space memory area
JPH08137748A (ja) コピーバックキャッシュを有するコンピュータ及びコピーバックキャッシュ制御方法
US20060136711A1 (en) Disk device using disk to rewrite firmware and firmware determination method
JP2020004448A (ja) 自動車用電子制御装置
Wu et al. Design and Implementation of AMT Boot Subsystem

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160420

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170327

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170623

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170724

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171023

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171205

R150 Certificate of patent or registration of utility model

Ref document number: 6257506

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees