(57)【要約】【課題】制御システムにおいて、主記憶メモリのメモリ容量を削減することを目的とする。【解決手段】主記憶メモリに格納されているソフトウェアを中央処理装置で実行して制御対象装置を制御する制御システムにおいて、前記中央処理装置で前記ソフトウェアの実行中に、前記主記憶メモリにおける前記ソフトウェアの一部を書き替える書き替え部を有する。【選択図】    図７
2014092850.tif 000002
【特許請求の範囲】
【請求項１】
主記憶メモリに格納されているソフトウェアを中央処理装置で実行して制御対象装置を制御する制御システムにおいて、
前記中央処理装置で前記ソフトウェアの実行中に、前記主記憶メモリにおける前記ソフトウェアの一部を書き替える書き替え部を
有することを特徴とする制御システム。
【請求項２】
請求項１記載の制御システムにおいて、
前記主記憶メモリは、前記中央処理装置と前記書き替え部からアクセス可能なデュアルポート構成であることを特徴とする制御システム。
【請求項３】
請求項２記載の制御システムにおいて、
前記制御対象装置で発生した事象を検出する事象検出部を有し、
前記書き替え部は、前記事象検出部で検出した事象に応じて前記ソフトウェアの一部であるジャンプ命令を書き替えて分岐先を変更することを特徴とする制御システム。
【請求項４】
請求項３記載の制御システムにおいて、
前記書き替え部は、前記事象検出部で検出した事象に応じて前記ソフトウェアの一部である１又は複数の制御命令を書き替えて制御内容を変更することを特徴とする制御システム。
【請求項５】
請求項３記載の制御システムにおいて、
前記書き替え部は、外部入力によって前記ソフトウェアの一部であるジャンプ命令を書き替えて分岐先を変更することを特徴とする制御システム。
【請求項６】
請求項４記載の制御システムにおいて、
前記書き替え部は、前記外部入力によって前記ソフトウェアの一部である１又は複数の制御命令を書き替えて制御内容を変更することを特徴とする制御システム。
【請求項７】
請求項４記載の制御システムにおいて、
前記書き替え部が書き替える対象のアドレスを設定する書き替え対象アドレス設定部を有し、
前記書き替え対象アドレス設定部は、前記ソフトウェアのコンパイル時に取得された書き替え対象のアドレスを前記中央処理装置から設定されることを特徴とする制御システム。
【請求項８】
請求項４記載の制御システムにおいて、
前記書き替え部が書き替える対象のアドレスを設定する書き替え対象アドレス設定部を有し、
前記ソフトウェアのコンパイル時に取得された書き替え対象のアドレスは前記制御システムを構成するＦＰＧＡにおける前記書き替え対象アドレス設定部の回路情報に組み込まれ、前記ＦＰＧＡで前記制御システムを構成する際に前記書き替え対象のアドレスが書き込まれた前記書き替え対象アドレス設定部が生成されることを特徴とする制御システム。
【請求項９】
主記憶メモリに格納されているソフトウェアを中央処理装置で実行して制御対象装置を制御する制御システムのソフトウェア書き替え方法において、
前記中央処理装置で前記ソフトウェアの実行中に、前記主記憶メモリにおける前記ソフトウェアの一部を書き替える
ことを特徴とするソフトウェア書き替え方法。
【請求項１０】
請求項９記載のソフトウェア書き替え方法において、
前記主記憶メモリは、前記中央処理装置と前記ソフトウェアの一部を書き替える書き替え部からアクセス可能なデュアルポート構成であることを特徴とするソフトウェア書き替え方法。
【請求項１１】
請求項１０記載のソフトウェア書き替え方法において、
前記制御対象装置で発生した所定の事象を検出し、
検出した事象に応じて前記ソフトウェアの一部であるジャンプ命令を書き替えて分岐先を変更することを特徴とするソフトウェア書き替え方法。
【請求項１２】
請求項１１記載のソフトウェア書き替え方法において、
検出した事象に応じて前記ソフトウェアの一部である１又は複数の制御命令を書き替えて制御内容を変更することを特徴とするソフトウェア書き替え方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御システム及びソフトウェア書き替え方法に関する。
【背景技術】
【０００２】
一般に、電子機器装置などのリアルタイム制御を行う場合、電子機器のハードウェアに対する応答性を向上させるため、ＣＰＵに対するハードウェア割り込みを用いることが多い。外部端子入力などからＣＰＵに割り込みが生じると、ＣＰＵは現在実行している命令を一時停止して割り込みハンドラと呼ばれる予め準備されたルーチンに処理を移す。
【０００３】
その際、割り込みハンドラ実行後、割り込み直前の処理に戻れるように処理中のアドレスやフラグ、レジスタの内容をスタック領域に保存しておく。割り込み発生時にはアドレスやフラグ、レジスタの退避及び復旧などＣＰＵに対して少なからずオーバーヘッドが発生するため、割り込みの頻度が多くなると応答性や全体的なパフォーマンスの低下が発生する。
【０００４】
これと共に、アドレスやレジスタの退避のため、図１に示す主記憶メモリ１にスタック領域４を余分に割り当てる必要がある。図１は主記憶メモリにおけるデータ格納イメージの一例を示しており、主記憶メモリ１にはプログラムメモリ領域２、データメモリ領域３、スタック領域４が設けられている。
【０００５】
一方、割り込みを使用しない場合には、電子機器のハードウェアの状態を認識するためにポーリング行う。この場合、ハードウェアに対するポーリング周期を短くすることでリアルタイム性を確保する方法があるが、ポーリングによってハードウェアの状態を認識するには、以下の手順が必要である。第１にハードウェアよりの通知が割り当てられたアドレスからデータを読みこむ。第２にデータをアキュムレータに格納してマスク、演算命令を実施する。第３に演算結果からＣＰＵのステータスレジスタを参照して条件付きジャンプ命令つまり条件付き分岐命令を実行する。
【０００６】
これら第１から第３の処理ステップの増加により処理速度が低下すると共に、主記憶メモリにプログラムを格納するため、図１に示すプログラムメモリ領域２を余分に割り当てる必要がある。
【０００７】
ここで、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）やＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）に内蔵されたプロセッサを使用するＳＯＣ（Ｓｙｓｔｅｍ  Ｏｎ  ａ  Ｃｈｉｐ）のシステムでリアルタイム制御を行うことを考える。ＳＯＣシステムにおいては、コスト削減のためＣＰＵの主記憶メモリに関してもＡＳＩＣやＦＰＧＡに内蔵されたメモリを使用することが多い。その場合、使用可能なメモリ量は制限されるため、ファームウェアで使用する主記憶メモリ量を極力削減する必要がある。
【０００８】
以下に、リアルタイム制御において割り込みを使用しない複数のケースについて説明する。
【０００９】
図２にリアルタイム制御を行う制御システムの一例のブロック図を示す。図２において、ＣＰＵバス１１はＣＰＵ１２に直接入出力するバスを表す。主記憶メモリ１３はＣＰＵ１２で動作するファームウェア及びデータが格納されている。制御対象装置１４はＣＰＵバス１１に接続されたレジスタＸ１５を持ち、ＣＰＵ１２からのレジスタＸ１５に対するリード／ライトアクセスによって、ＣＰＵ１２との通信を行う。事象検出回路１６は制御対象装置１４に事象Ｙが発生したことを検出するとレジスタＸ１５に第１の所定値を書き込み、また、制御対象装置１４に事象Ｚが発生したことを検出するとレジスタＸ１５に第１の所定値とは異なる第２の所定値を書き込む。
【００１０】
図３にＣＰＵ１２が実行する第１処理のフローチャートと主記憶メモリ１３内のプログラム格納イメージを示す。ＣＰＵ１２はステップＳ１で処理Ａを行い、更にステップＳ２で制御対象装置１４がアクセス可能なレジスタＸ１５を監視する。そして、ステップＳ３で制御対象装置１４に事象Ｙが発生しているか否かを判別し、事象Ｙが発生していたらステップＳ４で処理Ｂを行う。
【００１１】
なお、レジスタＸ１５の値の読み出しは、レジスタＸ１５の値をＣＰＵ１２内の例えばＡレジスタにロードすることである。また、事象Ｙが発生するとレジスタＸ１５の値が０ｘ００（なお、０ｘは１６進表示を表す）以外の第１の所定値となるので、ＣＰＵ１２はレジスタＸの値から事象Ｙが発生しているか否かを判断し、処理Ｂを行うか処理Ａの先頭にジャンプするかを決定する。
【００１２】
図４にＣＰＵ１２が実行する第２処理のフローチャートと主記憶メモリ１３内のプログラム格納イメージを示す。ＣＰＵ１２はステップＳ１１で処理Ａを行い、更にステップＳ１２で制御対象装置１４がアクセス可能なレジスタＸ１５を監視する。そして、ステップＳ１３で制御対象装置１４に事象Ｙが発生しているか否かを判別し、事象Ｙが発生していたらステップＳ１４で処理Ｂを行う。一方、制御対象装置１４に事象Ｙが発生していない場合にはステップＳ１５で制御対象装置１４に事象Ｚが発生しているか否かを判別し、事象Ｙが発生していたらステップＳ１６で処理Ｃを行う。
【００１３】
図５にＦＰＧＡによるリアルタイム制御を行う制御システムの一例のブロック図を示す。図５において、ＦＰＧＡ２０内のＣＰＵバス２１はＣＰＵ２２に直接入出力するバスを表す。主記憶メモリ２３はＣＰＵ２２で動作するファームウェア及びデータが格納されている。制御対象装置３０はＣＰＵバス２１に接続されたレジスタＸ２５，レジスタＹ２６のライトアクセスを行う。ＣＰＵ２２からのレジスタＸ２５，レジスタＹ２６に対するリード／ライトアクセスによって、制御対象装置３０とＣＰＵ２２との通信を行うことができる。
【００１４】
制御対象装置３０は例えば伝送装置において伝送路から供給される光信号を終端して電気信号に変換すると共に、伝送装置の出力する電気信号を光信号に変換して伝送路に送出する物理層回路（Ｐｈｙ  Ｃｈｉｐ）である。制御対象装置３０はＬＯＳ（Ｌｏｓｓ  Ｏｆｆ  Ｓｉｇｎａｌ）を検出するとレジスタＸ２５の値を０ｘ００以外の値（例えば０ｘ１０）に設定し、未検出時は０ｘ００に設定する。また、ＬＯＦ（Ｌｏｓｓ  Ｏｆ  Ｆｒａｍｅ）を検出するとレジスタＸ２６の値を０ｘ００以外の値（例えば０ｘ０１）に設定し、未検出時は０ｘ００に設定する。
【００１５】
図６にＦＰＧＡ２０が実行する第３処理のフローチャートと主記憶メモリ２３内のプログラム格納イメージを示す。ＣＰＵ２２はステップＳ２１で制御対象装置３０の初期化処理を行い、更にステップＳ２２で制御対象装置３０が接続する相手と最適な通信を行うために通信速度や通信モードを切り替えるＡｕｔｏ  Ｎｅｇｏｔｉａｔｉｏｎ処理を起動する。
【００１６】
次に、ステップＳ２３でＣＰＵ２２は制御対象装置３０がアクセス可能なレジスタＸ２５を監視する。そして、ステップＳ２４で制御対象装置３０にＬＯＳが発生しているか否かを判別し、ＬＯＳが発生していたらステップＳ２１に進んで制御対象装置３０の初期化処理から処理をやり直す。
【００１７】
一方、ＬＯＳが発生していなければステップＳ２５でＣＰＵ２２は制御対象装置３０がアクセス可能なレジスタＹ２６を監視する。そして、ステップＳ２６で制御対象装置３０にＬＯＦが発生しているか否かを判別し、ＬＯＦが発生していたらステップＳ２２に進んで制御対象装置３０のＡｕｔｏ  Ｎｅｇｏｔｉａｔｉｏｎ処理から処理をやり直す。
【００１８】
また、ＬＯＦが発生していなければステップＳ２７に進んで制御対象装置（Ｐｈｙ  Ｃｈｉｐ）３０の状態を読み出し、その後、ステップＳ２３からステップＳ２７の処理を繰り返す。
【００１９】
ところで、割り込み処理機能を持たないプロセッサでの割り込みを外部から可能とするよう、ジャンプ命令を強制挿入する技術が提案されている（例えば特許文献１参照）。また、ジャンプ命令を命令レジスタに強制設定する技術が提案されている（例えば特許文献２参照）。また、割り込み用命令レジスタを通常処理用命令レジスタと切替え使用する技術が提案されている（例えば特許文献３参照）。
【先行技術文献】
【特許文献】
【００２０】
【特許文献１】特開昭６１−２２００３５号公報
【特許文献２】特開平４−３６７９４１号公報
【特許文献３】特開平１１−２４９４２号公報
【発明の概要】
【発明が解決しようとする課題】
【００２１】
図３に示す第１例では、事象Ｙの発生有無の判定のためには、レジスタＸ１５に割り当てられたアドレスからＣＰＵ１２内部の判定処理用のＡレジスタ（アキュムレータ）にデータを一旦ロードし、必要であれば上記データのビットのマスク処理等を行った後に、条件付ジャンプ命令によってプログラムカウンタ（ＰＣ）を書き替えるという処理ステップが必要となり、プログラムメモリ領域が大きくなり処理速度が遅くなるという問題があった。
【００２２】
また、図４に示す第２例では、第１例の場合に比べ、処理Ｃのプログラム内容を格納するためのメモリ領域が必要となる。図６に示す第３例も同様に制御対象装置（Ｐｈｙ  Ｃｈｉｐ）３０の状態読み出し処理のプログラムを格納するためのメモリ領域が必要となり、プログラムメモリ領域が大きくなるという問題があった。
【００２３】
開示の制御システムは、主記憶メモリのメモリ容量を削減することを目的とする。
【課題を解決するための手段】
【００２４】
開示の一実施形態による制御システムは、主記憶メモリに格納されているソフトウェアを中央処理装置で実行して制御対象装置を制御する制御システムにおいて、
前記中央処理装置で前記ソフトウェアの実行中に、前記主記憶メモリにおける前記ソフトウェアの一部を書き替える書き替え部を有する。
【発明の効果】
【００２５】
本実施形態によれば、主記憶メモリのメモリ容量を削減することができる。
【図面の簡単な説明】
【００２６】
【図１】主記憶メモリにおけるデータ格納イメージの一例を示す図である。
【図２】制御システムの一例のブロック図である。
【図３】第１処理のフローチャートとプログラム格納イメージを示す図である。
【図４】第２処理のフローチャートとプログラム格納イメージを示す図である。
【図５】ＦＰＧＡによる制御システムの一例のブロック図である。
【図６】第３処理のフローチャートとプログラム格納イメージを示す図である。
【図７】制御システムの第１実施形態のブロック図である。
【図８】第１実施形態における第１処理のフローチャートとプログラム格納イメージを示す図である。
【図９】第１実施形態における第２処理のフローチャートとプログラム格納イメージを示す図である。
【図１０】制御システムの第２実施形態のブロック図である。
【図１１】第２実施形態における第３処理のフローチャートとプログラム格納イメージを示す図である。
【図１２】制御システムの第１実施形態の変形例のブロック図である。
【図１３】ライト対象アドレス設定方法の第１実施形態を説明するための図である。
【図１４】ライト対象アドレス設定方法の第２実施形態を説明するための図である。
【発明を実施するための形態】
【００２７】
以下、図面に基づいて実施形態を説明する。
【００２８】
＜第１実施形態＞
図７にリアルタイム制御を行う制御システムの第１実施形態のブロック図を示す。図７において、ＣＰＵバス４１はＣＰＵ（中央処理装置）４２に直接入出力するバスを表し、ＣＰＵバス４１にはＣＰＵ４２、主記憶メモリ４３、制御対象装置４４、ライト対象アドレス設定回路４５が接続されている。上記のＣＰＵバス４１、ＣＰＵ４２、主記憶メモリ４３、ライト対象アドレス設定回路４５、及び後述する事象検出回路４７それぞれは例えばＦＰＧＡにて構成されている。
【００２９】
主記憶メモリ４３は例えばデュアルポートＲＡＭであり、ＣＰＵ４２から主記憶メモリ４３のリード／ライトが可能であると共に、主記憶メモリライト回路４６から主記憶メモリ４３のライトが可能である。主記憶メモリ４３にはＣＰＵ４２で動作するソフトウェアの一種であるファームウェア及びデータが格納される。制御対象装置４４はＣＰＵバス４１に接続されており、制御対象装置４４はＣＰＵ４２によって制御される。
【００３０】
主記憶メモリライト回路４６は発生した事象に応じて主記憶メモリ４３上のプログラム領域の内容つまりプログラムを書き替える。なお、主記憶メモリライト回路４６は書き替える内容つまりプログラムについては自回路に保持している。プログラム領域中の書き替え対象となるアドレスはプログラムを変更する毎に変わる場合があるため、ＣＰＵ４２から上記書き替え対象となるアドレスをライト対象アドレス設定回路４５に書き込む。また、事象検出回路４７は制御対象装置４４に事象Ｙ又は事象Ｚが発生したことを検出すると、事象Ｙ又は事象Ｚの検出信号を主記憶メモリライト回路４６に供給する。
【００３１】
＜第１処理＞
図８に第１実施形態におけるＣＰＵ４２が実行する第１処理のフローチャートと主記憶メモリ４３内のプログラム格納イメージを示す。初期状態では図８（Ａ）に示すようにＣＰＵ４２はステップＳ３１の処理Ａを繰り返すように、主記憶メモリ４３のアドレス（ｂ）には、アドレス（ａ）への無条件ジャンプ命令つまり無条件分岐命令が書き込まれている。ここで、処理Ａの開始アドレスであるアドレス（ａ）＝０ｘ００とすると、上記の無条件ジャンプ命令は、ニーモニックコード「ＪＰ  ００００」であり、アセンブラコード「Ｃ３」，「００」，「００」である。
【００３２】
次に、事象Ｙが発生すると、事象検出回路４７の事象Ｙの検出により主記憶メモリライト回路４６は、主記憶メモリ４３のアドレス（ｂ）にＮＯＰ（Ｎｏ  ＯＰｅｒａｔｉｏｎ）命令を書き込んで、図８（Ｂ）に示す状態とする。なお、ＮＯＰ命令はＣＰＵ４２に何も処理をさせない命令である。上記ＮＯＰ命令は、ニーモニックコード「ＮＯＰ」であり、アセンブラコード「００」，「００」，「００」である。これにより、ＣＰＵ４２はステップＳ３１，Ｓ３２の処理Ａ及び処理Ｂを繰り返す。
【００３３】
こののち、事象Ｙが解除すると、事象検出回路４７の事象Ｙの未検出により主記憶メモリライト回路４６は、主記憶メモリ４３のアドレス（ｂ）にアドレス（ａ）への無条件ジャンプ命令を書き込んで、図８（Ａ）に示す状態とする。
【００３４】
これにより、ＣＰＵ４２は従来必要であったレジスタＸの読み出し処理や事象Ｙの検出判定を行うことなく、処理Ｂの有無を切り替えることが可能となる。そのため、ＣＰＵ４２の処理ステップが減少し、より高速な処理が可能となる。
【００３５】
＜第２処理＞
図９に第１実施形態におけるＣＰＵ４２が実行する第２処理のフローチャートと主記憶メモリ４３内のプログラム格納イメージを示す。初期状態では図９（Ａ）に示すようにＣＰＵ４２はステップＳ３１の処理Ａを繰り返すように、主記憶メモリ４３のアドレス（ｂ）には、アドレス（ａ）への無条件ジャンプ命令が書き込まれている。
【００３６】
次に、事象Ｙが発生すると、事象検出回路４７の事象Ｙの検出により主記憶メモリライト回路４６は主記憶メモリ４３のアドレス（ｂ）にＮＯＰ命令を書き込み、アドレス（ｃ）からアドレス（ｄ）の直前までに処理Ｂの制御命令を書き込み、アドレス（ｄ）にアドレス（ａ）への無条件ジャンプ命令を書き込む。これにより、図９（Ｂ）に示す状態となり、ＣＰＵ４２はステップＳ３１，Ｓ３２の処理Ａ及び処理Ｂを繰り返す。
【００３７】
こののち、事象Ｙが解除すると、事象検出回路４７の事象Ｙの未検出により主記憶メモリライト回路４６は、主記憶メモリ４３のアドレス（ｂ）にアドレス（ａ）への無条件ジャンプ命令を書き込んで、図９（Ａ）に示す状態とする。
【００３８】
また、図９（Ａ）に示す状態において事象Ｚが発生すると、事象検出回路４７の事象Ｚの検出により主記憶メモリライト回路４６は主記憶メモリ４３のアドレス（ｂ）にＮＯＰ命令を書き込み、アドレス（ｃ）からアドレス（ｄ）の直前までに処理Ｃの制御命令を書き込み、アドレス（ｄ）にアドレス（ａ）への無条件ジャンプ命令を書き込む。これにより、図９（Ｃ）に示す状態となり、ＣＰＵ４２はステップＳ３１，Ｓ３２の処理Ａ及び処理Ｃを繰り返す。
【００３９】
こののち、事象Ｚが解除すると、事象検出回路４７の事象Ｙの未検出により主記憶メモリライト回路４６は、主記憶メモリ４３のアドレス（ｂ）にアドレス（ａ）への無条件ジャンプ命令を書き込んで、図９（Ａ）に示す状態とする。
【００４０】
この第２処理の場合には主記憶メモリ４３書き替えの期間、事象Ｙ，事象Ｚに対する反応時間が遅くなってしまうが、主記憶メモリ４３の領域を増加させずに処理Ｂ，Ｃを切り替えることが可能となる。
【００４１】
＜第２実施形態＞
図１０にリアルタイム制御を行う制御システムの第２実施形態のブロック図を示す。図１０において、ＦＰＧＡ５０内にＣＰＵバス５１、ＣＰＵ５２、主記憶メモリ５３、ライト対象アドレス設定回路５５、レジスタＸ５７、レジスタＹ５８が構成される。ＣＰＵバス５１はＣＰＵ５２に直接入出力するバスを表し、ＣＰＵバス５１にＣＰＵ５２、主記憶メモリ５３、ライト対象アドレス設定回路５５、制御対象装置６０が接続されている。
【００４２】
主記憶メモリ５３は例えばデュアルポートＲＡＭであり、ＣＰＵ５２から主記憶メモリ５３のリード／ライトが可能であると共に、主記憶メモリライト回路５６から主記憶メモリ５３のライトが可能である。主記憶メモリ５３はＣＰＵ５２で動作するソフトウェアの一種であるファームウェア及びデータが格納されている。制御対象装置６０はＣＰＵバス５１に接続されており、制御対象装置６０はＣＰＵ５２によって制御される。
【００４３】
主記憶メモリライト回路５６は発生した事象に応じて主記憶メモリ５３上のプログラム領域の内容つまりプログラムを書き替える。なお、主記憶メモリライト回路５６は書き替える内容つまりプログラムについては自回路に保持している。プログラム領域中の書き替え対象となるアドレスはプログラムを変更する毎に変わる場合があるため、ＣＰＵ５２から上記書き替え対象となるアドレスをライト対象アドレス設定回路５５に書き込む。
【００４４】
制御対象装置６０は例えば伝送装置において伝送路から供給される光信号を終端して電気信号に変換すると共に、伝送装置の出力する電気信号を光信号に変換して伝送路に送出する物理層回路（Ｐｈｙ  Ｃｈｉｐ）である。なお、制御対象装置６０としては伝送装置の他の回路部分であっても良く、伝送装置に限らない電子機器装置のリアルタイム制御を行う回路部分であっても良い。物理層回路（Ｐｈｙ  Ｃｈｉｐ）としての制御対象装置６０はＬＯＳを検出するとレジスタＸ５７の値を０ｘ００以外の値（例えば０ｘ１０）に設定し、未検出時は０ｘ００に設定する。また、制御対象装置６０はＬＯＦを検出するとレジスタＸ５８の値を０ｘ００以外の値（例えば０ｘ０１）に設定し、未検出時は０ｘ００に設定する。
【００４５】
なお、ライト対象アドレス設定回路５５には、レジスタＸ５７の値が０ｘ００又は０ｘ１０の場合、レジスタＸ５８の値が０ｘ００又は０ｘ０１の場合、それぞれにおける主記憶メモリ５３の書き替え対象のアドレスがＣＰＵ５２から予め設定されている。
【００４６】
＜第３処理＞
図１１に第２実施形態におけるＣＰＵ５２が実行する第３処理のフローチャートと主記憶メモリ５３内のプログラム格納イメージを示す。初期状態では図１１（Ａ）に示すようにＣＰＵ５２はステップＳ４１で制御対象装置６０の初期化処理を行い、更にステップＳ４２で制御対象装置３０が接続する相手と最適な通信を行うために通信速度や通信モードを切り替えるＡｕｔｏ  Ｎｅｇｏｔｉａｔｉｏｎ処理を起動する。その後、ＣＰＵ５２はステップＳ４３，Ｓ４４でＮＯＰ命令を実行し、ステップＳ４５で制御対象装置（Ｐｈｙ  Ｃｈｉｐ）３０の状態を読み出す。その後は、ステップＳ４５の制御対象装置３０の状態読み出しを繰り返す。このため、主記憶メモリ５３のアドレス（ｃ），（ｄ）にはＮＯＰ命令が書き込まれており、アドレス（ｆ）にはアドレス（ｃ）への無条件ジャンプ命令が書き込まれている。
【００４７】
次に、図１１（Ａ）に示す状態において、ＬＯＳが発生するとレジスタＸ５７の値が０ｘ１０となり、主記憶メモリライト回路５６は主記憶メモリ５３のアドレス（ｃ）にアドレス（ａ）への無条件ジャンプ命令を書き込むことで図１１（Ｂ）に示す状態とする。これにより、ＣＰＵ５２はステップＳ４１，Ｓ４２の制御対象装置６０の初期化処理とＡｕｔｏ  Ｎｅｇｏｔｉａｔｉｏｎ処理を繰り返す。
【００４８】
こののち、ＬＯＳが解除するとレジスタＸ５７の値が０ｘ００となり、主記憶メモリライト回路５６は主記憶メモリ５３のアドレス（ｃ）にＮＯＰ命令を書き込むことで図１１（Ａ）に示す状態とする。
【００４９】
また、図１１（Ａ）に示す状態において、ＬＯＦが発生するとレジスタＹ５８の値が０ｘ０１となり、主記憶メモリライト回路５６は主記憶メモリ５３のアドレス（ｄ）にアドレス（ｂ）への無条件ジャンプ命令を書き込むことで図１１（Ｃ）に示す状態とする。これにより、ＣＰＵ５２はステップＳ４２のＡｕｔｏ  Ｎｅｇｏｔｉａｔｉｏｎ処理を繰り返す。
【００５０】
こののち、ＬＯＳが解除するとレジスタＹ５８の値が０ｘ００となり、主記憶メモリライト回路５６は主記憶メモリ５３のアドレス（ｄ）にＮＯＰ命令を書き込むことで図１１（Ａ）に示す状態とする。
【００５１】
この第３処理では、繰り返し制御対象装置３０の状態読み出しを行う際に、レジスタＸ５７とレジスタＹ５８の読み出しを行わないため、ＬＯＳ／ＬＯＦ非検出時の動作速度が向上すると共に、条件付きジャンプ命令よりも無条件ジャンプ命令のほうが、処理に要するアセンブラコードのステップ数が少ないことからＬＯＳ／ＬＯＦ検出時の処理の切り替えを高速化することができる。また、ソフトウェア全体のコード量を削減できるため、主記憶メモリ５３の容量の削減が可能となる。
【００５２】
＜変形例＞
ところで、図１２に示すように、制御システムの主記憶メモリライト回路４６にインタフェース回路４８を接続し、オペレータが操作するパーソナルコンピュータ４９を、上記インタフェース回路４８を介して主記憶メモリライト回路４６に接続する。図９（Ａ）に示す状態で、オペレータは主記憶メモリライト回路４６を用いて、主記憶メモリ４３のアドレス（ｂ）にＮＯＰ命令を書き込み、アドレス（ｃ）からアドレス（ｄ）の直前までに処理Ａの一部を変更した処理Ａ'を書き込み、アドレス（ｄ）にアドレス（ｃ）への無条件ジャンプ命令を書き込んでも良い。この場合、当初は、ＣＰＵ４２は処理Ａを繰り返して実行するが、主記憶メモリ４３に処理Ａ'を書き込んだ後、ＣＰＵ４２は処理Ａ'を繰り返して実行する。つまり、運用中のＣＰＵ４２を停止することなく、処理Ａを処理Ａ'に更新するプログラムバージョン変更などを行う場合に好適である。
【００５３】
＜ライト対象アドレス設定方法＞
図１３にライト対象アドレス設定方法の第１実施形態を説明するための図を示す。図１３において、制御システムの第１実施形態のＣＰＵ４２で実行されるファームウェアのソースファイル７１はコンパイラ７２でコンパイルされてファームウェアコード７３に変換される。この際に、書き替え対象のアドレス（ｂ），（ｃ）などは、ＣＰＵ４２からライト対象アドレス設定回路４５に対する初期設定データとしてファームウェアコード７３に組み込まれる。このファームウェアコード７３は主記憶メモリ４３に書き込まれる。
【００５４】
電源投入による制御システムの立上げ時に、ＣＰＵ４２は主記憶メモリ４３からファームウェアを読み出して実行することで、書き替え対象のアドレス（ｂ），（ｃ）をライト対象アドレス設定回路４５に書き込む。
【００５５】
図１４にライト対象アドレス設定方法の第２実施形態を説明するための図を示す。図１４において、制御システムの第１実施形態のＣＰＵ４２で実行されるファームウェアのソースファイル７１はコンパイラ７２でコンパイルされてファームウェアコード７４に変換される。ファームウェアコード７４はファームウェアコード７３から初期設定データを除いたものである。
【００５６】
また、ＣＰＵバス４１、ＣＰＵ４２、主記憶メモリ４３、ライト対象アドレス設定回路４５、事象検出回路４７を有する制御システムはＦＰＧＡで構成される。このＦＰＧＡのハードウェア記述ファイル８１は論理合成ソフトウェア８２において回路情報データ８３に変換される。
【００５７】
ファームウェアコード７３に変換された際に得られた書き替え対象のアドレス（ｂ），（ｃ）は、回路情報データ８３のライト対象アドレス設定回路４５に対応する部分に反映されて組み込まれる。これにより、電源投入によりＦＰＧＡで制御システムを構成する際に、書き替え対象のアドレス（ｂ），（ｃ）が書き込まれたライト対象アドレス設定回路４５が生成される。また、ファームウェアコード７４は主記憶メモリ４３に書き込まれる。なお、この実施形態ではＣＰＵ４２は書き替え対象のアドレスをライト対象アドレス設定回路４５に書き込む必要はない。
【００５８】
上記の各実施形態によれば、主記憶メモリ４３，５３をデュアルポート構成とし、ハードウェアの主記憶メモリライト回路４６，５６によって主記憶メモリ４３，５３を書き替えることで、ＣＰＵ４２，５２がリードアクセスするまでのタイムラグが抑えられると共に、ＣＰＵ４２，５２の処理ステップ数を減少させることができ、高速動作が可能となる。また、条件分岐に応じた処理内容や処理パラメータを主記憶メモリライト回路４６，５６によって書き替えることで、ソフトウェアを格納する主記憶メモリ４３，５３の容量を削減できる。
（付記１）
主記憶メモリに格納されているソフトウェアを中央処理装置で実行して制御対象装置を制御する制御システムにおいて、
前記中央処理装置で前記ソフトウェアの実行中に、前記主記憶メモリにおける前記ソフトウェアの一部を書き替える書き替え部を
有することを特徴とする制御システム。
（付記２）
付記１記載の制御システムにおいて、
前記主記憶メモリは、前記中央処理装置と前記書き替え部からアクセス可能なデュアルポート構成であることを特徴とする制御システム。
（付記３）
付記２記載の制御システムにおいて、
前記制御対象装置で発生した事象を検出する事象検出部を有し、
前記書き替え部は、前記事象検出部で検出した事象に応じて前記ソフトウェアの一部であるジャンプ命令を書き替えて分岐先を変更することを特徴とする制御システム。
（付記４）
付記３記載の制御システムにおいて、
前記書き替え部は、前記事象検出部で検出した事象に応じて前記ソフトウェアの一部である１又は複数の制御命令を書き替えて制御内容を変更することを特徴とする制御システム。
（付記５）
付記３記載の制御システムにおいて、
前記書き替え部は、外部入力によって前記ソフトウェアの一部であるジャンプ命令を書き替えて分岐先を変更することを特徴とする制御システム。
（付記６）
付記４記載の制御システムにおいて、
前記書き替え部は、前記外部入力によって前記ソフトウェアの一部である１又は複数の制御命令を書き替えて制御内容を変更することを特徴とする制御システム。
（付記７）
付記４記載の制御システムにおいて、
前記書き替え部が書き替える対象のアドレスを設定する書き替え対象アドレス設定部を有し、
前記書き替え対象アドレス設定部は、前記ソフトウェアのコンパイル時に取得された書き替え対象のアドレスを前記中央処理装置から設定されることを特徴とする制御システム。
（付記８）
付記４記載の制御システムにおいて、
前記書き替え部が書き替える対象のアドレスを設定する書き替え対象アドレス設定部を有し、
前記ソフトウェアのコンパイル時に取得された書き替え対象のアドレスは前記制御システムを構成するＦＰＧＡにおける前記書き替え対象アドレス設定部の回路情報に組み込まれ、前記ＦＰＧＡで前記制御システムを構成する際に前記書き替え対象のアドレスが書き込まれた前記書き替え対象アドレス設定部が生成されることを特徴とする制御システム。
（付記９）
主記憶メモリに格納されているソフトウェアを中央処理装置で実行して制御対象装置を制御する制御システムのソフトウェア書き替え方法において、
前記中央処理装置で前記ソフトウェアの実行中に、前記主記憶メモリにおける前記ソフトウェアの一部を書き替える
ことを特徴とするソフトウェア書き替え方法。
（付記１０）
付記９記載のソフトウェア書き替え方法において、
前記主記憶メモリは、前記中央処理装置と前記ソフトウェアの一部を書き替える書き替え部からアクセス可能なデュアルポート構成であることを特徴とするソフトウェア書き替え方法。
（付記１１）
付記１０記載のソフトウェア書き替え方法において、
前記制御対象装置で発生した所定の事象を検出し、
検出した事象に応じて前記ソフトウェアの一部であるジャンプ命令を書き替えて分岐先を変更することを特徴とするソフトウェア書き替え方法。
（付記１２）
付記１１記載のソフトウェア書き替え方法において、
検出した事象に応じて前記ソフトウェアの一部である１又は複数の制御命令を書き替えて制御内容を変更することを特徴とするソフトウェア書き替え方法。
（付記１３）
付記１１記載のソフトウェア書き替え方法において、
外部入力によって前記ソフトウェアの一部であるジャンプ命令を書き替えて分岐先を変更することを特徴とするソフトウェア書き替え方法。
（付記１４）
付記１２記載のソフトウェア書き替え方法において、
前記外部入力によって前記ソフトウェアの一部である１又は複数の制御命令を書き替えて制御内容を変更することを特徴とするソフトウェア書き替え方法。
（付記１５）
付記１２記載のソフトウェア書き替え方法において、
前記主記憶メモリにおける書き替え対象のアドレスは、前記ソフトウェアのコンパイル時に取得された書き替え対象のアドレスが前記中央処理装置から設定されることを特徴とするソフトウェア書き替え方法。
（付記１６）
付記１２記載のソフトウェア書き替え方法において、
前記ソフトウェアのコンパイル時に取得された書き替え対象のアドレスは前記制御システムを構成するＦＰＧＡにおける前記主記憶メモリの書き替え対象のアドレスを設定する書き替え対象アドレス設定部の回路情報に組み込まれ、前記ＦＰＧＡで前記制御システムを構成する際に前記書き替え対象のアドレスが書き込まれた状態で、前記書き替え対象アドレス設定部が生成されることを特徴とするソフトウェア書き替え方法。
【符号の説明】
【００５９】
４１，５１  ＣＰＵバス
４２，５２  ＣＰＵ
４３，５３  主記憶メモリ
４４，６０  制御対象装置
４５，５５  ライト対象アドレス設定回路
４６，５６  主記憶メモリライト回路
４７  事象検出回路
５７  レジスタＸ
５８  レジスタＹ
７１  ソースファイル
７２  コンパイラ
７３  ファームウェアコード
８１  ハードウェア記述ファイル
８２  論理合成ソフトウェア
８３  回路情報データ
【図１】
2014092850.tif 000003
【図２】
2014092850.tif 000004
【図３】
2014092850.tif 000005
【図４】
2014092850.tif 000006
【図５】
2014092850.tif 000007
【図６】
2014092850.tif 000008
【図７】
2014092850.tif 000009
【図８】
2014092850.tif 000010
【図９】
2014092850.tif 000011
【図１０】
2014092850.tif 000012
【図１１】
2014092850.tif 000013
【図１２】
2014092850.tif 000014
【図１３】
2014092850.tif 000015
【図１４】
2014092850.tif 000016