JP6526357B2 - 制御装置およびプログラム更新方法 - Google Patents

制御装置およびプログラム更新方法 Download PDF

Info

Publication number
JP6526357B2
JP6526357B2 JP2018553539A JP2018553539A JP6526357B2 JP 6526357 B2 JP6526357 B2 JP 6526357B2 JP 2018553539 A JP2018553539 A JP 2018553539A JP 2018553539 A JP2018553539 A JP 2018553539A JP 6526357 B2 JP6526357 B2 JP 6526357B2
Authority
JP
Japan
Prior art keywords
symbol
program
control
object file
control program
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.)
Active
Application number
JP2018553539A
Other languages
English (en)
Other versions
JPWO2018100633A1 (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JPWO2018100633A1 publication Critical patent/JPWO2018100633A1/ja
Application granted granted Critical
Publication of JP6526357B2 publication Critical patent/JP6526357B2/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
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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
    • 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

Landscapes

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

Description

本発明は、記憶されているプログラムを更新する制御装置およびプログラム更新方法に関する。
従来、電子機器には、制御装置として組み込みマイコンが搭載される場合がある。組み込みマイコンでは、CPU(Central Processing Unit)が、フラッシュROM(Read Only Memory)に格納されたプログラムを実行して各種の制御を行う。ここで、フラッシュROMに記憶されたプログラムは更新することが可能である。特許文献1には、フラッシュROMの書換えプログラムを組み込みマイコン内のRAM(Random Access Memory)にコピーして、RAM上で更新処理プログラムを動作させ、プログラムを書き換える技術が開示されている。
特開平9−69043号公報
しかしながら、上記従来の技術によれば、組み込みマイコンは、新プログラムに更新する処理を担う書換えプログラム、および書換えプログラムをRAMに複写する処理を担う複写プログラムを除いた全プログラム(特許文献1に記載のシステム・プログラムに相当)を一度消去して、プログラムを全面的に書き換える必要がある。フラッシュROMへの書き替えは、一度消去と新規書き込みという作業を必要とするため、処理速度の制約が大きい組み込みマイコンでは、プログラムを更新する際に処理負荷がかかる、という問題があった。
本発明は、上記に鑑みてなされたものであって、処理変更要求の多い一部のプログラムだけを更新することで処理負荷を抑制可能な制御装置を得ることを目的とする。
上述した課題を解決し、目的を達成するために、本発明に係る制御装置は、未解決のシンボルを含むオブジェクトファイルを記憶する第1の記憶部と、更新可能な制御プログラムを記憶する第2の記憶部と、オブジェクトファイルを受信する制御を行い、未解決のシンボルを解決してシンボル解決済みオブジェクトファイルを生成し、シンボル解決済みオブジェクトファイルを使って制御プログラムを更新する演算装置と、を備える。第2の記憶部は、演算装置がオブジェクトファイルに記載されたプログラムによりアクセスする関数および大域変数が定義されたシンボルテーブルを記憶する。演算装置は、シンボルテーブルを用いて未解決のシンボルを解決する。
本発明に係る制御装置は、処理変更要求の多い一部のプログラムだけを更新することで処理負荷を抑制できる、という効果を奏する。
制御システムの構成例を示す図 制御装置の構成例を示すブロック図 制御装置において定義されるメモリマップの例を示す図 制御装置の不揮発性記憶装置が記憶するシンボルテーブルのフォーマットの例を示す図 制御装置において一部の制御プログラムを更新する処理を示すフローチャート
以下に、本発明の実施の形態に係る制御装置およびプログラム更新方法を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
実施の形態.
図1は、本発明の実施の形態に係る制御システム6の構成例を示す図である。制御システム6は、制御プログラムの記述に従って動作する電子機器4と、一部の制御プログラムを更新するためのデータであるオブジェクトファイルを送信する外部機器5と、を備える。電子機器4は、制御対象機器2と、制御プログラムの記述に従って制御対象機器2を制御する制御装置1と、外部機器5と接続する通信ポート3と、を備える。制御装置1は、通信ポート3を介して、外部機器5からオブジェクトファイルを受信する。
外部機器5は、例えば、パーソナルコンピュータなどの情報処理装置である。外部機器5は、電子機器4の制御装置1が記憶している更新対象の制御プログラムのソフトウェア(以下、アプリケーションと称する)のソースコードをコンパイルして得られる実行コード、および未解決のシンボルを含むオブジェクトファイルを生成する。未解決のシンボルとは、宣言されているが定義の無いシンボルのことである。外部機器5は、生成したオブジェクトファイルを電子機器4に送信する。外部機器5は、オブジェクトファイルのサイズが大きい場合、オブジェクトファイルを規定されたサイズ(機能単位たとえばサブルーチン・関数単位)のブロックに分割し、分割したオブジェクトファイルを電子機器4に送信する。
電子機器4は、例えば、エアコンなどの家電機器である。電子機器4が備える制御装置1は、例えば、組み込みマイコンである。制御装置1は、制御対象機器2の動作を制御するための制御プログラムを不揮発性記憶装置13に記憶している。制御装置1において、演算装置11は、不揮発性記憶装置13に記憶されている制御プログラムの記述に従い、スタートアップ処理プログラム132の実行によりRAM12に展開された大域変数を参照すなわちReadおよびWriteし、I/Oインタフェース14を介して制御対象機器2の動作を制御する。また、演算装置11は、通信コントローラ15を制御して外部機器5との通信を行う。演算装置11は、例えば、CPUである。
図2は、本実施の形態に係る制御装置1の構成例を示すブロック図である。制御装置1は、前述のように、演算装置11と、RAM12と、不揮発性記憶装置13と、I/Oインタフェース14と、通信コントローラ15と、を備える。RAM12は第1の記憶部であり、不揮発性記憶装置13は第2の記憶部である。
演算装置11は、プログラム領域131に記憶されたプログラム(スタートアップ処理プログラム132、リンク処理プログラム133、通信制御処理プログラム134、第1の制御プログラム135、および第2の制御プログラム136)を実行する機能、を備える。不揮発性記憶装置13は、プログラム領域131および定義領域137の記憶領域を持つ。不揮発性記憶装置13は、プログラム領域131の記憶領域において、スタートアップ処理プログラム132、リンク処理プログラム133、通信制御処理プログラム134、第1の制御プログラム135、および第2の制御プログラム136を記憶している。また、不揮発性記憶装置13は、定義領域137の記憶領域において、シンボルテーブル138を記憶している。
電子機器4の電源がONすると演算装置11が動作し、演算装置11は、不揮発性記憶装置13のスタートアップ処理プログラム132を実行する。演算装置11は、スタートアップ処理プログラム132の記述に従い、電子機器4内のハードウェアの初期化、新プログラムに更新する処理を担う書換えプログラム、およびプログラム書換え機能を有するリンク処理プログラムをRAM12に複写する処理、各種ソフトウェア機能の起動処理を行う。
演算装置11は、スタートアップ処理プログラム132から複写済みのRAM12上のリンク処理プログラム133を実行する。演算装置11は、リンク処理プログラム133の記述に従い、第2の制御プログラム136の内容を更新する処理を行う。第2の制御プログラム136の更新処理の詳細については後述する。
演算装置11は、スタートアップ処理プログラム132から通信制御処理プログラム134を実行する。演算装置11は、通信制御処理プログラム134の記述に従い、外部機器5との間でデータの送受信を行う。演算装置11は、外部機器5によってソースコードがコンパイルされた実行コード、および未解決のシンボルを含むオブジェクトファイルを外部機器5から受信し、受信したオブジェクトをRAM12上に展開することが可能である。
演算装置11は、不揮発性記憶装置13の第1の制御プログラム135および第2の制御プログラム136を実行する。演算装置11は、第1の制御プログラム135および第2の制御プログラム136の記述に従い、制御対象機器2の制御を行う。第1の制御プログラム135および第2の制御プログラム136をまとめて制御プログラムとする。図2において、第1の制御プログラム135および第2の制御プログラム136を含む領域が制御プログラムとなる。
第1の制御プログラム135は、制御プログラムの本体であり、本実施の形態において、書き換え不可すなわち更新不可のプログラムである。第2の制御プログラム136は、制御プログラム全体のうちの一部の制御プログラムであるが、本実施の形態において、外部機器5によって書き換えすなわち更新することが可能なプログラムである。
シンボルテーブル138は、一部の制御プログラムを更新する処理すなわち第2の制御プログラム136の更新処理で、演算装置11はリンク処理プログラム実行により未解決のシンボルを解決するときに参照するものである。シンボルテーブル138は、オブジェクトファイルに記載されたプログラムによりアクセスされる関数および大域変数が定義されたテーブルである。シンボルテーブル138には、第1の制御プログラム135内の関数、および第1の制御プログラム135が参照するRAM12上に存在する大域変数のうち、第2の制御プログラム136が書き込みおよび読み込みを実行可能なシンボルと、制御装置1のメモリマップにおいて各シンボルの実体が存在するアドレスとの対応の一覧が定義されている。シンボルテーブル138は、定義の無い未解決のシンボルに定義を与えるためのものである。
ここで、制御装置1のメモリマップおよびシンボルテーブル138の構成について図を用いて説明する。
図3は、本実施の形態に係る制御装置1において定義されるメモリマップの例を示す図である。メモリマップは、制御装置1が備える全ての記憶部の記憶領域を通してアドレスを付与したものであって、演算装置11から見えるプログラムなどの記憶領域を示したものである。ここでは、制御装置1のI/Oインタフェース14、不揮発性記憶装置13、およびRAM12の記憶領域がメモリマップとして示される対象となる。図3の例では、メモリマップは、0番地からA−1番地のI/Oインタフェース14のI/O領域、A番地からB−1番地の不揮発性記憶装置13の不揮発性記憶領域、およびB番地から0xFFFFFFFF番地のRAM12のRAM領域の3つの領域から構成される。これらのアドレスは、一般的に、組み込みマイコンすなわち制御装置1毎に固定されている。不揮発性記憶領域は、図2に示す不揮発性記憶装置13が記憶している機能毎のプログラムにアドレスが割り当てられる。
図3において、第1の制御プログラム135の領域には更新不可の制御プログラムが配置されている。第1の制御プログラム135の領域で定義された関数、例えばextfunc1()、extfunc2()の先頭アドレスとシンボル名との対応がシンボルテーブル138に定義されていれば、演算装置11はリンク処理プログラム133実行により第2の制御プログラム136の関数から参照することが可能となる。第1の制御プログラム135の領域で定義された関数、例えば、infunc1()がシンボルテーブル138に定義されていなければ、演算装置11がリンク処理プログラム133を実行しても、第2の制御プログラム136から参照できなくすることが可能となる。
図3において、第2の制御プログラム136の領域には更新可能な第2の制御プログラム136が配置され、固定番地に割り当てられている。図3の例では、1つ目のアプリケーションはX番地を先頭アドレスとする領域に記憶され、2つ目のアプリケーションはY番地を先頭アドレスとする領域に記憶されている。この場合、制御装置1において、演算装置11は、シンボル解決処理を行うことなく、第1の制御プログラム135から第2の制御プログラム136の機能を関数コールすることが可能となる。演算装置11はリンク処理プログラム133実行により、第2の制御プログラム136のプログラムの更新処理において、シンボル解決済みとなったブロック単位のオブジェクトファイルを、ブロック単位のオブジェクトファイルの内容に対応する第2の制御プログラム136の固定アドレスに配置することとする。
図3において、RAM領域には第1の制御プログラム135で定義される大域変数がスタックおよびヒープ領域以外の領域に記憶されている。RAM領域は、スタック領域、ビープ領域、および大域変数領域から構成されている。第1の制御プログラム135で定義される大域変数の領域で定義された大域変数、例えば、extval1、extval2などのアドレスとシンボル名との対応がシンボルテーブル138に定義されていれば、演算装置11がリンク処理プログラム133実行により、第2の制御プログラム136の関数から参照することが可能となる。第1の制御プログラム135で定義される大域変数の領域で定義された大域変数、例えば、inval1のアドレスとシンボル名との対応がシンボルテーブル138に定義されていなければ、演算装置11がリンク処理プログラム133を実行しても、第2の制御プログラム136から参照できなくすることが可能となる。
なお、制御装置1において、演算装置11は、第2の制御プログラム136から第1の制御プログラム135の機能を関数コールする際、図3の例ではvoid extfunc1()およびvoid extfunc2()については、後述するプログラム更新処理のシンボル解決の過程でアクセスすることが可能となる。
図4は、本実施の形態に係る制御装置1の不揮発性記憶装置13が記憶するシンボルテーブル138のフォーマットの例を示す図である。シンボルテーブル138には、第1の制御プログラム135または第2の制御プログラム136に記載されたシンボル名、制御装置1が備える記憶領域にアドレスを付与したメモリマップ内において対応するアドレス、および各シンボルの属性の情報が定義されている。シンボルテーブル138には、演算装置11がリンク処理プログラム133実行による第2の制御プログラム136を更新する処理において、参照が許される関数および大域変数のみが記載されている。
つづいて、制御装置1において、一部の制御プログラム、具体的には第2の制御プログラム136を更新する処理について説明する。図5は、本実施の形態に係る制御装置1において一部の制御プログラムを更新する処理を示すフローチャートである。
まず、制御装置1において、演算装置11はスタートアップ処理プログラム132実行により、電子機器4の電源が投入すなわちONされると(ステップS1)、スタートアップ処理(大域変数のRAM12への展開含む)を実施する(ステップS2)。つぎに、演算装置11がスタートアップ処理プログラム132実行により、RAM12に存在する規定された大域変数の値、具体的にはフラグの状態を読み取り、制御プログラムの更新モードであるか否かを判断する(ステップS3)。
制御プログラムの更新モードであるか否かは、ユーザによりあらかじめ設定されているとする。ここで、ユーザが制御プログラムの更新モードに設定するには、制御装置1が動作中に、以下の(1)または(2)のいずれかの方法により設定する。なお、更新フラグ「1」に設定されても、電子機器4を再起動されない限り、更新動作は実行されない。
(1)ユーザが電子機器4に付属するボタンを押下するなどによって制御装置1を制御プログラムの更新モードに設定する。電子機器4は、図1に示す制御対象機器2の1つとしてボタンを実装しているものとする。電子機器4の電源ONからスタートアップ処理完了までの間にユーザがボタンを押下すると、制御装置1の演算装置11が、I/Oインタフェース14から信号を検知して、RAM12内に存在する規定された大域変数の値を変更し、制御プログラムの更新モードであることを示すフラグを立てる。演算装置11は、例えば、更新モードのフラグの状態を示す値を「1」にする。
(2)ユーザが外部機器5からのメッセージによる指示によって制御装置1を制御プログラムの更新モードに設定する。電子機器4が電源ONからスタートアップ処理完了までの間に外部機器5から前述のメッセージを受信すると、制御装置1の演算装置11が、RAM12内に存在する規定された大域変数の値を変更し、制御プログラムの更新モードであることを示すフラグを立てる。
演算装置11はスタートアップ処理プログラム132実行により、制御プログラムの更新モードではないと判断した場合(ステップS3:No)、通常通り、第1の制御プログラム135および第2の制御プログラム136の記述に従い、制御対象機器2の制御を行う(ステップS4)。演算装置11は、第1の制御プログラム135および第2の制御プログラム136の記述に従い、電子機器4の電源がOFFされるまでは制御対象機器2の制御を行い(ステップS5:No)、電子機器4の電源がOFFされると(ステップS5:Yes)、処理を終了する。
演算装置11はスタートアップ処理プログラム132実行により、制御プログラムの更新モードと判断した場合(ステップS3:Yes)、制御プログラムの更新モードであれば、通信制御処理プログラム134実行により、外部機器5から規定されたサイズ(機能単位。たとえばサブルーチン・関数単位)のブロックに分割されたブロック単位のオブジェクトファイルを受信する(ステップS6)。演算装置11は通信制御処理プログラム134実行により、受信したブロック単位のオブジェクトファイルをRAM12に展開する(ステップS7)。RAM12は、ブロック単位のオブジェクトファイルを記憶する。展開後、演算装置11による通信制御処理プログラム134実行は終了し、演算装置11はリンク処理プログラム133を実行する。
演算装置11はリンク処理プログラム133実行により、受け取ったRAM12上のブロック単位のオブジェクトファイルを確認し、不正なアクセスがあるか否かを判断する(ステップS8)。具体的に、演算装置11は、受け取ったブロック単位のオブジェクトファイルに未解決のシンボルが含まれる場合、未解決のシンボルを解決するため、シンボルテーブル138を参照する。演算装置11は、未解決のシンボルにシンボルテーブル138で定義されていないシンボルが含まれていた場合は不正なアクセスがあると判断する(ステップS8:Yes)。演算装置11は、規定された大域変数(=フラグ)の値を変更し、制御プログラムの更新モードであることを示すフラグを下げて(ステップS9)、処理を終了する。フラグを下げるとは、演算装置11は、例えば、更新モードのフラグの状態を示す値を「0」にする。
演算装置11はリンク処理プログラム133実行により、未解決のシンボルにシンボルテーブル138で定義されていないシンボルが含まれていない場合は不正なアクセスはないと判断する(ステップS8:No)。演算装置11は、シンボルテーブル138を参照し、アドレス情報を取得して未解決のシンボルのシンボル名を実アドレスに置き換え、未解決のシンボルを解決する(ステップS10)。
演算装置11はリンク処理プログラム133実行により、RAM12に展開されているシンボル解決済みとなったブロック単位のオブジェクトファイルから、第2の制御プログラム136の領域内の指定された不揮発性記憶装置13のアドレスに書き込む(配置する)(ステップS11)。演算装置11は、不揮発性記憶装置13において、シンボル解決済みオブジェクトの内容と対応する第2の制御プログラム136の領域に新たなシンボル解決済みオブジェクトを記憶させ、第2の制御プログラム136を更新する。このように、演算装置11は、生成したシンボル解決済みオブジェクトを使って第2の制御プログラム136を更新する。
制御装置1は、受信したブロック単位のオブジェクトファイルが最終ではない場合(ステップS12:No)、ステップS6に戻ってステップS11までの処理を繰り返し実施する。例えば、外部機器5において送信するブロック単位のオブジェクトファイルに分割数および何番目のブロックであるかを示す情報を付与することによって、制御装置1は、受信したブロック単位のオブジェクトファイルが最終か否かを判断できる。
受信したブロック単位のオブジェクトファイルが最終の場合(ステップS12:Yes)、演算装置11はリンク処理プログラム133実行により、規定された大域変数(=フラグ)の値を変更することで、制御プログラムの更新モードであることを示すフラグを下げる(ステップS13)。そして、ステップS4に移行し、演算装置11は、第1の制御プログラム135および第2の制御プログラム136の記述に従い、制御対象機器2の制御を行う(ステップS4)。なお、制御装置1では、ステップS12:Yesの場合、ステップS13の処理後、演算装置11は、ステップS3から処理を行ってもよい。
ここで、制御装置1のハードウェア構成について説明する。制御装置1は、前述のように、組み込みマイコンで実現される。制御装置1では、メモリである不揮発性記憶装置13に記憶されたプログラムをCPUである演算装置11が読み出して実行することにより、各機能を実現する。ここで、CPUは、処理装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサ、またはDSP(Digital Signal Processor)などであってもよい。また、メモリは、例えば、フラッシュメモリであるが、EPROM(Erasable Programmable ROM)、EEPROM(Electrically EPROM)など書き換え可能なものであればよい。
以上説明したように、本実施の形態によれば、制御装置1では、外部機器5から実行コードおよび未解決のシンボルを含むオブジェクトを受信し、未解決のシンボルを解決し、シンボル解決済みのオブジェクトファイルを生成して、制御プログラムのうち更新可能な第2の制御プログラム136を更新することとした。これにより、制御装置1は、一部の制御プログラムだけを更新することが可能となり、一部の制御プログラムを更新するために全ての制御プログラムを更新する場合と比較して、処理負荷を抑制することができる。また、制御装置1は、一部の制御プログラムを更新するために全ての制御プログラムを更新する場合と比較して、一部の制御プログラムを更新する際の更新時間を短縮することができる。
制御装置1は、プログラムの部分更新または追加などで一般的に採用されているダイナミックすなわち動的なシンボル解決処理を実施しない。そのため、制御装置1は、機器制御中に処理負荷がかからず、機器制御についての性能を落とすことが無い。前述の動的なシンボル解決処理とは、例えば、DLL(Dynamic Link Library)、プラグインなどである。また、制御装置1は、DLLなどのアプリケーションを格納しておくためのファイルシステムも不要である。
また、制御装置1は、スタティックすなわち静的な機能を用いて制御プログラムの部分更新または追加を実現する。制御装置1は、更新用の制御プログラムを配置する位置を不揮発性記憶装置13において固定にすること、また、更新用の制御プログラムにアクセスを許可するシンボルの数をシンボルテーブル138によって絞ることでリンカ機能を制限している。リンカ機能をコンパクトにすることで、リンカ機能を制御装置1側に搭載することが可能となる。
リンカ機能を制御装置1側に搭載することで、制御装置1は、未解決のシンボルの解決を制御装置1が記憶しているシンボルテーブル138を用いて実施できる。制御装置1は、制御装置1内のアドレスと関数名および変数名などの各機能との関係を隠ぺいでき、不正なアドレスを参照させる第2の制御プログラム136の使用を防ぐことができる。この結果、制御装置1は、不正使用を防ぐことができ、セキュリティ面で効果を得ることができる。
一方、外部機器5側でシンボルテーブルを持ち未解決のシンボルを解決する場合、外部機器5は、制御装置1の制御プログラムのバージョンを意識してシンボルテーブルを選ぶ必要がある。制御装置1の制御プログラムのバージョンによって、シンボルとアドレスの関係に差がでるためである。そのため、外部機器5は、制御プログラムの部分更新用のオブジェクトファイル作成の際、シンボルテーブルの管理を正確に行わなければならない。仮に、外部機器5は、更新対象の制御装置1の制御プログラムに対応したシンボルテーブルを使用しないでシンボル解決を行うと、制御プログラムの不正アクセスにつながるおそれがある。制御装置1側で未解決のシンボルを解決することで、このような不正動作も防げる。
また、制御装置1における制御プログラムの基本部分、具体的には、スタートアップ処理プログラム132、リンク処理プログラム133、通信制御処理プログラム134、および第1の制御プログラム135は更新を不可とし、第2の制御プログラム136のみを更新可能とする。これにより、制御装置1は、第1の制御プログラム135部分の書き換え失敗による電子機器4の動作不全を防ぐことができる。
また、外部装置5は、規定されたサイズのブロックに分割したオブジェクトファイルを制御装置1に送信する。これにより、制御装置1は、RAM12の容量が小さくてオブジェクトファイル全体を展開できない場合でも、第2の制御プログラム136の部分更新が可能となる。
なお、外部機器5から送信するオブジェクトファイルのサイズが大きい場合、外部機器5がオブジェクトファイルを規定されたサイズのブロックに分割し、分割したオブジェクトファイルを電子機器4に送信していたが、これに限定されるものではない。外部機器5はサイズの大きいオブジェクトファイルを電子機器4に送信し、演算装置11は通信制御処理プログラム134実行により、受信したオブジェクトファイルを、規定されたサイズのブロックに分割してもよい。
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
1 制御装置、2 制御対象機器、3 通信ポート、4 電子機器、5 外部機器、6 制御システム、11 演算装置、12 RAM、13 不揮発性記憶装置、14 I/Oインタフェース、15 通信コントローラ、131 プログラム領域、132 スタートアップ処理プログラム、133 リンク処理プログラム、134 通信制御処理プログラム、135 第1の制御プログラム、136 第2の制御プログラム、137 定義領域、138 シンボルテーブル。

Claims (5)

  1. 未解決のシンボルを含むオブジェクトファイルを記憶する第1の記憶部と、
    更新可能な制御プログラムを記憶する第2の記憶部と、
    前記オブジェクトファイルを受信する制御を行い、前記未解決のシンボルを解決してシンボル解決済みオブジェクトファイルを生成し、前記シンボル解決済みオブジェクトファイルを使って前記制御プログラムを更新する演算装置と、
    を備え
    前記第2の記憶部は、前記演算装置が前記オブジェクトファイルに記載されたプログラムによりアクセスする関数および大域変数が定義されたシンボルテーブルを記憶し、
    前記演算装置は、前記シンボルテーブルを用いて前記未解決のシンボルを解決する、
    制御装置。
  2. 前記第2の記憶部において前記シンボル解決済みオブジェクトファイルが記憶される領域を示すアドレスは固定アドレスとし、
    前記演算装置は、前記第2の記憶部において、前記シンボル解決済みオブジェクトファイルの内容と対応する前記制御プログラムの領域に前記シンボル解決済みオブジェクトファイルを記憶させ、前記制御プログラムを更新する、
    請求項1に記載の制御装置。
  3. 前記演算装置は、規定されたサイズのブロックに分割されたオブジェクトファイルを受信し、前記オブジェクトファイルのブロックに含まれる未解決のシンボルを解決し、ブロック単位のシンボル解決済みのシンボル解決済みオブジェクトファイルを生成して前記第2の記憶部に記憶させる、
    請求項1に記載の制御装置。
  4. 前記第1の記憶部はランダムアクセスメモリであり、
    前記第2の記憶部は不揮発性記憶装置である、
    請求項1に記載の制御装置。
  5. 制御対象機器の制御を行う制御装置におけるプログラム更新方法であって、
    演算装置が、未解決のシンボルを含むオブジェクトファイルを受信する受信ステップと、
    前記演算装置が、前記オブジェクトファイルを記憶する第1の記憶部において、前記未解決のシンボルを解決し、シンボル解決済みのシンボル解決済みオブジェクトファイルを生成する解決ステップと、
    前記演算装置が、更新可能な制御プログラムを記憶する第2の記憶部において、前記シンボル解決済みオブジェクトファイルの内容と対応する前記制御プログラムの領域に前記シンボル解決済みオブジェクトファイルを記憶させ、前記制御プログラムを更新する更新ステップと、
    を含み、
    前記更新ステップにおいて、前記演算装置は、前記第2の記憶部に記憶され、前記オブジェクトファイルに記載されたプログラムによりアクセスする関数および大域変数が定義されたシンボルテーブルを用いて前記未解決のシンボルを解決する、
    プログラム更新方法。
JP2018553539A 2016-11-29 2016-11-29 制御装置およびプログラム更新方法 Active JP6526357B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/085392 WO2018100633A1 (ja) 2016-11-29 2016-11-29 制御装置およびプログラム更新方法

Publications (2)

Publication Number Publication Date
JPWO2018100633A1 JPWO2018100633A1 (ja) 2019-03-14
JP6526357B2 true JP6526357B2 (ja) 2019-06-05

Family

ID=62241336

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018553539A Active JP6526357B2 (ja) 2016-11-29 2016-11-29 制御装置およびプログラム更新方法

Country Status (4)

Country Link
US (1) US10877743B2 (ja)
JP (1) JP6526357B2 (ja)
CN (1) CN110023909B (ja)
WO (1) WO2018100633A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10838657B1 (en) * 2017-05-23 2020-11-17 Moddable Tech, Inc. Reducing RAM usage in a runtime
JP6950634B2 (ja) * 2018-07-03 2021-10-13 オムロン株式会社 制御装置および制御方法

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247678A (en) * 1989-10-12 1993-09-21 Texas Instruments Incorporated Load time linker for software used with a multiprocessor system
US5193180A (en) * 1991-06-21 1993-03-09 Pure Software Inc. System for modifying relocatable object code files to monitor accesses to dynamically allocated memory
US5408665A (en) * 1993-04-30 1995-04-18 Borland International, Inc. System and methods for linking compiled code with extended dictionary support
JPH0969043A (ja) 1995-08-31 1997-03-11 Fuji Electric Co Ltd マイクロコンピュータ組み込み制御装置
US5778231A (en) * 1995-12-20 1998-07-07 Sun Microsystems, Inc. Compiler system and method for resolving symbolic references to externally located program files
US5764989A (en) * 1996-02-29 1998-06-09 Supercede, Inc. Interactive software development system
US5848274A (en) * 1996-02-29 1998-12-08 Supercede, Inc. Incremental byte code compilation system
US6189145B1 (en) * 1997-05-28 2001-02-13 International Business Machines Corporation Concurrent patch to logical partition manager of a logically partitioned system
JP3675166B2 (ja) * 1998-04-08 2005-07-27 松下電器産業株式会社 プログラム処理装置及び記録媒体
US6164542A (en) * 1998-11-03 2000-12-26 Intermec Ip Corp. Method and apparatus for decoding unresolved symbol profiles produced from a reduced data set
US6594783B1 (en) * 1999-08-27 2003-07-15 Hewlett-Packard Development Company, L.P. Code verification by tree reconstruction
US6578194B1 (en) * 1999-09-08 2003-06-10 International Business Machines Corporation System and method using extended relocation types and operations in relocating operations
JP3542529B2 (ja) * 1999-09-27 2004-07-14 Necマイクロシステム株式会社 フラッシュ内蔵マイコンのプログラムリンク方法
JP4076113B2 (ja) 2000-03-24 2008-04-16 株式会社リコー 電子制御装置
US6708330B1 (en) * 2000-06-13 2004-03-16 Cisco Technology, Inc. Performance improvement of critical code execution
US6988263B1 (en) * 2000-07-10 2006-01-17 International Business Machines Corporation Apparatus and method for cataloging symbolic data for use in performance analysis of computer programs
US6766511B1 (en) * 2000-07-10 2004-07-20 International Business Machines Corporation Apparatus and method for performing symbolic resolution of modules using static representations of a trace
JP2003303111A (ja) 2002-04-08 2003-10-24 Nec Corp 通信用端末装置のソフトウェア更新方法及びソフトウェア更新システム
JP4103823B2 (ja) 2004-03-10 2008-06-18 村田機械株式会社 データ処理装置
US7406687B1 (en) * 2004-03-17 2008-07-29 Sun Microsystems, Inc. Sharing runtime representation of software component methods across component loaders
US7644402B1 (en) * 2004-03-17 2010-01-05 Sun Microsystems, Inc. Method for sharing runtime representation of software components across component loaders
US7526760B1 (en) * 2004-03-17 2009-04-28 Sun Microsystems, Inc. Methods for implementing virtual method invocation with shared code
US7506320B2 (en) * 2004-09-09 2009-03-17 International Business Machines Corporation Generating sequence diagrams using call trees
DE602005025385D1 (de) * 2005-12-20 2011-01-27 Ericsson Telefon Ab L M Erstellung inkrementeller Programmaktualisierungen
JP5402930B2 (ja) * 2008-07-23 2014-01-29 富士通株式会社 静的にリンクされた実行形式プログラムファイルにおけるオブジェクトを結合するオブジェクト結合装置、オブジェクトの結合方法およびそのプログラム
US8347273B2 (en) * 2008-10-09 2013-01-01 International Business Machines Corporation Tracing a calltree of a specified root method
JP2010225099A (ja) * 2009-03-25 2010-10-07 Canon Inc 情報処理装置及びその制御方法、並びにプログラム
JP6141242B2 (ja) * 2014-08-28 2017-06-07 三菱重工業株式会社 制御プログラム配信システム及びその方法

Also Published As

Publication number Publication date
JPWO2018100633A1 (ja) 2019-03-14
CN110023909B (zh) 2023-05-05
WO2018100633A1 (ja) 2018-06-07
US10877743B2 (en) 2020-12-29
US20190384590A1 (en) 2019-12-19
CN110023909A (zh) 2019-07-16

Similar Documents

Publication Publication Date Title
KR100584338B1 (ko) 소프트웨어 업데이트 방법 및 시스템
KR101602360B1 (ko) 시스템 고속 부팅 장치 및 방법
KR20050028157A (ko) 부팅 및 부트 코드 업데이트 방법 및 시스템
KR20010070416A (ko) 컴퓨터
WO2017000567A1 (zh) 一种实现bootrom升级的方法及装置
WO1998024021A1 (fr) Systeme de commande de micro-ordinateur
WO2012071852A1 (zh) 引导程序的升级方法和装置
CN110874237A (zh) 软件升级方法、装置、终端以及可读存储介质
JP2011095952A (ja) ファームウェア更新方法および電子機器
JP6526357B2 (ja) 制御装置およびプログラム更新方法
JP2005157528A (ja) メモリ装置
US6738887B2 (en) Method and system for concurrent updating of a microcontroller's program memory
JP2011175352A (ja) ファームウエア更新装置、通信装置、電子機器、ファームウエア更新システム、ファームウエア更新方法及びプログラム
JP2010218103A (ja) 電子機器
JP2007148695A (ja) 情報処理装置およびブートプログラムの書き換え方法
WO2018150820A1 (ja) 情報処理装置
JP7259203B2 (ja) 情報処理装置、情報処理システムおよび方法
TW201526005A (zh) 快閃記憶體燒錄方法與電腦可讀取媒體
JP2005321843A (ja) ファームウェアの書換え方法
JP4910402B2 (ja) 不揮発性メモリの書き換え装置及び書き換え方法
KR101113342B1 (ko) 이동통신 단말기의 부트로더 버전 관리 방법
JP2006126987A (ja) 画像処理装置
KR20070081868A (ko) 이동통신시스템에서 효율적으로 소프트웨어를 업데이트하는방법
JP6662140B2 (ja) Icカード及びicカードにおけるメモリ制御方法
JP2004094628A (ja) フラッシュメモリのメモリ書き換え制御システム、メモリ書き換え制御方法及びメモリ書き換え制御方法の各工程を実行させるプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181107

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181107

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190226

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190322

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190507

R150 Certificate of patent or registration of utility model

Ref document number: 6526357

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250