説明

組込制御装置

【課題】DMA装置を停止させることなく、データ整合性を維持しつつ記憶装置のデータ整合性診断を簡易な構成で実施することのできる組込制御装置を提供する。
【解決手段】データ転送装置102が記憶装置103にデータを書き込み、またはデータを読み取っている記憶領域501のアドレスは、データ転送装置102が備えるレジスタに格納されている。演算装置101は、そのレジスタから記憶領域501のアドレスを知ることができるので、これを避けてデータ整合性診断を実施する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、組込制御装置に関するものである。
【背景技術】
【0002】
組込制御装置は、制御対象機器を電子的に制御する装置であり、制御プログラムを実行する演算装置(CPU:Central Processing Unit)、データを格納するメモリまたはハードディスク装置、DMA(Direct Memory Access)装置などを備える。
【0003】
DMA装置は、CPUが実行するプログラムの動作によらず、記憶装置間または記憶装置とI/Oデバイスの間で直接データを転送する装置である。DMA装置はCPUを介さずに独立して記憶装置にアクセスするため、CPUとの間で排他制御を実施しないと、DMA装置とCPUがそれぞれ記憶装置にアクセスし、アクセス競合によって記憶装置内のデータが破壊されたり、DMA装置またはCPUが意図していないデータが転送されたりする可能性がある。上記のような不都合を防止するため、DMA装置がアクセスする記憶領域は、他の装置(主にCPU)がアクセスしないように設計する必要がある。
【0004】
一方、記憶装置に故障などが生じていないかを診断するため、記憶装置上のデータを汎用レジスタに一旦退避し、記憶装置に診断用のデータを格納し、そのデータを再度読み出して、格納したデータと読み出したデータが整合するか否かを検証することにより、記憶装置の診断を実施する場合がある。
【0005】
この診断は全記憶領域に対して実施するのが通常であるため、DMA装置がデータを読み取っている記憶領域に対して、診断を実施するCPUがデータを書き込んだり、CPUが診断を実施している記憶領域に対して、DMA装置がデータを書き込んだりする可能性がある。これらが生じると、DMA装置または診断処理いずれかが正常に動作できなくなってしまう。
【0006】
下記特許文献1では、上記のような不都合を解決するため、DMA装置が停止しているときにメモリ診断を実施するか、またはメモリ診断を実施する前にDMA装置を停止させている。
【0007】
また下記特許文献2では、メモリ診断をする際に、メモリにアクセスするためのデータ経路である通信バスの制御権を取得し、メモリ診断を実施する際にDMA装置が通信バスを利用してメモリにアクセスすることができないようにしている。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2000−66965号公報
【特許文献2】特開平3−100736号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
上記特許文献1に記載されている技術は、メモリ診断を実施する前にDMA装置を停止する必要があるため、DMA装置を停止することができない制御装置、DMA装置を停止すると性能低下を招く制御装置などでは採用することが難しい。また、上記特許文献2に記載されている技術は、CPUが通信バスの制御権を取得することができる機能が備わっていない制御装置では実現できない。
【0010】
本発明は、上記のような課題を解決するためになされたものであり、DMA装置を停止させることなく、データ整合性を維持しつつ記憶装置のデータ整合性診断を簡易な構成で実施することのできる組込制御装置を提供することを目的とする。
【課題を解決するための手段】
【0011】
本発明に係る組込制御装置において、演算装置は、データ転送装置がアクセスしていない記憶領域に対してデータ整合性診断を実施する。
【発明の効果】
【0012】
本発明に係る組込制御装置は、データ転送装置がアクセスしていない記憶領域に対してデータ整合性診断を実施するので、データ転送装置の動作を停止することなく、安全に診断を実施することができる。また、演算装置が診断を実施する条件を制御することによってデータ破壊を防止するので、特殊な構成を設ける必要がなく、コストや実装面積などの観点でも有利である。
【図面の簡単な説明】
【0013】
【図1】実施形態1に係る組込制御装置100の機能ブロック図である。
【図2】データ転送装置102が記憶装置103にデータを書き込む動作例を示す図である。
【図3】データ転送装置102が記憶装置103からデータを読み取る動作例を示す図である。
【図4】演算装置101が記憶装置103上の記憶領域に対してデータ整合性診断を実施する従来の処理フローを示す図である。
【図5】データ転送装置102がアクセスしている記憶領域を避けて演算装置101がデータ整合性診断を実施する原理を説明する図である。
【図6】演算装置101が記憶装置103に対してデータ整合性診断を実施する処理フローを示す図である。
【図7】実施形態2における記憶装置103上の記憶領域の構成例を示す図である。
【図8】実施形態2において演算装置101が記憶装置103に対してデータ整合性診断を実施する処理フローを示す図である。
【発明を実施するための形態】
【0014】
<実施の形態1>
図1は、本発明の実施形態1に係る組込制御装置100の機能ブロック図である。組込制御装置100は、制御対象機器を電子的に制御する装置であり、演算装置101、データ転送装置102、記憶装置103を備える。これらはバス104で接続されている。
【0015】
演算装置101は、制御対象機器を制御するための制御演算処理を記述した制御プログラムを実行する。また、記憶装置103が正常動作しているか否かをチェックするためのデータ整合性診断を実施する。データ整合性診断の詳細は後述の図4で説明する。
【0016】
データ転送装置102は、演算装置101の指示によらず独立して記憶装置103にアクセスし、記憶装置103に対してデータを読み書きする。上述のDMA装置などがデータ転送装置102に相当する。データ転送装置102は、現在アクセスしている記憶装置103上のアドレスを格納するレジスタを備える。演算装置101は、このレジスタが格納しているアドレスを参照することにより、データ転送装置102が現在アクセスしている記憶装置103上のアドレスを知ることができる。
【0017】
記憶装置103は、例えばRAM(Random Access Memory)、ROM(Read Only Memory)、ハードディスク装置、フラッシュROMなどのデータ記憶装置である。
【0018】
演算装置101は、制御プログラムを実行する過程で、記憶装置103にデータを書き込み、または記憶装置103が格納しているデータを読み取る。一方、データ転送装置102は、演算装置101が実行する制御プログラムの動作に依拠しない回路部品などが記憶装置103にデータを書き込み、またはデータを読み取る際に用いられる。
【0019】
図2は、データ転送装置102が記憶装置103にデータを書き込む動作例を示す図である。ここでは、AD変換器202による変換結果をレジスタから記憶装置103に転送する動作例を説明する。
【0020】
図2において、タイマ201は所定周期でイベント信号を生成する機能を備えている。このイベント信号がAD変換器202に到達すると、AD変換器202はAD変換を開始する。AD変換器202は、AD変換の結果をAD変換結果レジスタ203に格納する。
【0021】
AD変換器202は、AD変換の結果をAD変換結果レジスタ203に格納するとともに、データ転送装置102に対してデータ転送要求を発行する。
【0022】
データ転送装置102は、データ転送要求を受け取ると、AD変換結果レジスタ203からAD変換結果を読み取り、そのAD変換結果を記憶装置103に転送して書き込む。格納先アドレスは転送を実施する毎に順次加算される。すなわち、データ転送装置102は記憶装置103に順次アクセスする。データ転送装置102は、データ転送を所定回数実施すると、格納先アドレスを記憶装置103の先頭アドレスに戻す。
【0023】
図3は、データ転送装置102が記憶装置103からデータを読み取る動作例を示す図である。ここでは通信装置301が記憶装置103に格納されているデータを他の通信装置に送信する動作例を説明する。
【0024】
通信装置301は、他の通信装置に送信するデータを記憶装置103から順次読み出すようにデータ転送装置102へ要求する。データ転送装置102は、記憶装置103にアクセスして送信データを読み取り、送信用レジスタ302に転送する。通信装置301は送信用レジスタ302が格納している送信データを宛先に送信する。通信装置301は、送信が完了すると、次の送信データを読み出すようにデータ転送装置102へ要求する。データ転送装置102は、記憶装置103に対するアクセス先アドレスを加算し、次の送信データを読み取る。データ転送を所定回数実施すると、格納先アドレスを記憶装置103の先頭アドレスに戻す。
【0025】
図4は、演算装置101が記憶装置103上の記憶領域に対してデータ整合性診断を実施する従来の処理フローを示す図である。データ整合性診断は、記憶装置103から読み取ったデータが先に書き込んだデータと整合するか否かにより、記憶装置103の記憶領域にエラーが生じていないかを診断するための処理である。以下、図4の各ステップについて説明する。
【0026】
(図4:ステップS400)
演算装置101は、所定のタイミングで本処理フローを開始する。例えば、所定周期毎に本処理フローを実施する、組込制御装置100の電源がOFFになってから所定時間経過した後に改めて組込制御装置100を起動して本処理フローを実施する、などのタイミングが考えられる。
【0027】
(図4:ステップS401)
演算装置101は、診断対象とする記憶装置103上の記憶領域に格納されているデータを、別の記憶装置(例えばRAM、ROMなど)に退避する。
【0028】
(図4:ステップS402)
演算装置101は、診断対象とする記憶装置103上の記憶領域に、テスト用の値を書き込む。
【0029】
(図4:ステップS403)
演算装置101は、ステップS402で書き込んだテスト用の値を、診断対象とする記憶装置103上の記憶領域から読み取る。
【0030】
(図4:ステップS404)
演算装置101は、ステップS402で書き込んだ値とステップS403で読み取った値が一致するか否かにより、両者の整合性を確認する。一致する場合はステップS405へ進み、一致しない場合はステップS406へ進む。
【0031】
(図4:ステップS405〜S406)
演算装置101は、ステップS404でデータが整合することを確認した場合は診断対象領域が正常であると判定し(S405)、データが整合しなかった場合は診断対象領域にエラーが生じていると判定する(S406)。また、判定結果をRAMなどの適当な記憶装置に格納しておく。
【0032】
(図4:ステップS407)
演算装置101は、ステップS401で退避したデータを、元の記憶領域に書き戻す。また、必要に応じて、診断結果を適当な上位装置などに報告する。
【0033】
以上、演算装置101が記憶装置103を診断する手順について説明した。次に、診断途中にデータ転送装置102が診断対象領域にアクセスした際に生じる不都合について説明する。
【0034】
図2において、演算装置101がステップS402を実行してからステップS403を実行し終えるまでの間に、データ転送装置102が、記憶装置103の診断対象領域にデータを書き込む可能性がある。このとき、演算装置101は、ステップS404でデータが整合していないとみなし、記憶装置103にエラーが生じていると誤判断してしまう。さらには、データ転送装置102が書き込んだデータを、ステップS407で演算装置101が上書きしてしまう。
【0035】
図3において、演算装置101がステップS402を実行してからステップS407を実行し終えるまでの間に、データ転送装置102が、記憶装置103の診断対象領域からデータを読み取る可能性がある。このとき、演算装置101が書き込んだテスト用の値が送信用レジスタ302に転送されることになるので、通信装置301は誤ったデータを送信してしまう。
【0036】
すなわち、記憶装置103の記憶領域のうち、データ転送装置102がデータを書き込み、またはデータを読み取っている記憶領域に対して演算装置101が整合性診断を実施すると、本来意図していたデータとは異なるデータを誤使用してしまう可能性がある。そこで演算装置101は、データ転送装置102がデータを書き込んでおらず、またはデータを読み取っていない記憶領域に対して、整合性診断を実施する必要がある。
【0037】
図5は、データ転送装置102がアクセスしている記憶領域を避けて演算装置101がデータ整合性診断を実施する原理を説明する図である。以下、図5にしたがってデータ整合性診断を実施する対象領域を定める手法を説明する。
【0038】
データ転送装置102が記憶装置103にデータを書き込み、またはデータを読み取っている記憶領域501のアドレスは、データ転送装置102が備えるレジスタに格納されている。演算装置101は、そのレジスタから記憶領域501のアドレスを知ることができるので、これを避けてデータ整合性診断を実施する。確実に回避するためには、記憶領域501の直前の記憶領域502に対してデータ整合性診断を実施すればよい。
【0039】
ただし、演算装置101がデータ整合性診断を実施している間に、データ転送装置102がアクセスするアドレスが巡回し、記憶領域502に到達する可能性がある。そこで、データ整合性診断を実施している途中でデータ転送装置102がアクセスする記憶領域503の範囲をあらかじめ確定しておき、データ整合性診断を実施する記憶領域502が記憶領域503と重ならないように、1回で診断する記憶領域サイズを適切に定めておく必要がある。
【0040】
図6は、演算装置101が記憶装置103に対してデータ整合性診断を実施する処理フローを示す図である。以下、図6の各ステップについて説明する。
【0041】
(図6:ステップS600)
演算装置101は、所定のタイミングで本処理フローを開始する。開始基準は、図4の処理フローを開始する基準と同様でよい。
【0042】
(図6:ステップS601)
演算装置101は、データ転送装置102が備えるレジスタを参照して、データ転送装置102が記憶装置103にアクセスしているアドレスを取得する。
【0043】
(図6:ステップS602)
演算装置101は、データ整合性診断を実施している途中でアクセスがデータ転送装置102と競合しない記憶領域502の開始アドレスおよびサイズを決定する。例えば以下のような基準にしたがって、記憶領域502を決定することができる。各基準例を適宜組み合わせることもできる。
【0044】
(図6:ステップS602:基準例その1)
データ整合性診断を実施している最中は、本来の制御演算は停止するのが通常である。そのため、データ整合性診断を実施する記憶領域502のサイズは、制御演算を停止することが許容される時間に鑑みて定めることが望ましい。
【0045】
(図6:ステップS602:基準例その2)
データ転送装置102が記憶装置103にアクセスしてデータ転送を実施する周期は、あらかじめ定まっている場合がある。また、演算装置101が自らデータ転送装置102に対してデータ転送を指示する場合もある。そこで、(a)データ転送装置102が記憶装置103にアクセスする周期、(b)データ転送装置102が1度にデータ転送を実施する記憶領域501のサイズ、(c)演算装置101が単位記憶容量に対してデータ整合性診断を実施するために要する時間、などに基づき、アクセスが競合しない記憶領域502の開始アドレスおよびサイズを逆算することができる。
【0046】
(図6:ステップS602:基準例その3)
データ整合性診断を実施する記憶領域502のサイズをできる限り小さくする。例えばブロック単位など、演算装置101が記憶装置103にアクセスする最小アクセス単位とすればよい。その上で、データ整合性診断を実施するたびに、データ転送装置102が現在アクセスしているアドレスを照会し、その直前アドレスに対してデータ整合性診断を実施する。これにより、診断時間は長くかかるものの、アクセス競合を確実に回避することができる。
【0047】
(図6:ステップS603)
演算装置101は、ステップS602で決定した記憶領域502に対してデータ整合性診断を実施する。
【0048】
<実施の形態1:まとめ>
以上のように、本実施形態1に係る組込制御装置100において、演算装置101は、データ転送装置102がアクセスしていない記憶領域502に対してデータ整合性診断を実施する。これにより、記憶装置103上のデータを破壊することなく、またデータ転送装置102の動作を停止させることなく、記憶装置103に対する診断を実施することができる。
【0049】
また、本実施形態1に係る組込制御装置100において、演算装置101は、データ転送装置102がデータ転送を実施する周期、データ転送装置102が1度にデータ転送を実施する記憶領域501のサイズ、演算装置101が所定の記憶容量単位に対してデータ整合性診断を実施するために要する時間に基づき、データ整合性診断を実施している途中にデータ転送装置102がアクセスしない記憶装置103上の記憶領域の範囲を確定した上で、データ整合性診断を実施する。これにより、演算装置101とデータ転送装置102の間で記憶装置103に対するアクセス競合が生じる可能性を減じることができる。
【0050】
なお、本実施形態1では、記憶装置103に書き込んだデータと読み取ったデータが一致するか否かによってデータ整合性診断を実施したが、その他の手法を用いてデータ整合性診断を実施してもよい。ただし、アクセス競合が生じることを回避する目的に鑑みて、記憶装置103に何らかのデータを書き込むことにより診断を実施する手法を前提とすることを付言しておく。
【0051】
<実施の形態2>
実施形態1では、データ整合性診断を実施している途中でデータ転送装置102がアクセスしない記憶領域範囲を確定した上で、その記憶領域に対してデータ整合性診断を実施することを説明した。本発明の実施形態2では、記憶装置103上の記憶領域を、演算装置101がアクセスする領域とデータ転送装置102がアクセスする領域に初めから分割しておき、両者のアクセスが競合しないようにする構成例を説明する。
【0052】
図7は、本実施形態2における記憶装置103上の記憶領域の構成例を示す図である。本実施形態2において、記憶装置103上の記憶領域は、演算装置101がアクセスする第1記憶領域701とデータ転送装置102がアクセスする第2記憶領域702に分割されている。演算装置101は、第1記憶領域701に対してのみデータ整合性診断を実施する。データ転送装置102は、第2記憶領域702に対してのみアクセスする。
【0053】
なお、演算装置101が第1記憶領域701全体にわたってデータ整合性診断を完了した後は、演算装置101とデータ転送装置102が互いに同期して、第1記憶領域701と第2記憶領域702を入れ替える。これにより、記憶装置103の全記憶領域にわたってデータ整合性診断を実施することができる。
【0054】
第1記憶領域701と第2記憶領域702を入れ替えるタイミングは、演算装置101とデータ転送装置102が互いに同期していれば、任意でよい。例えば、記憶装置103に対するアクセスが少ないとき、演算装置101の演算負荷が小さいとき、などに入れ替えればよい。現在の第1記憶領域701と第2記憶領域702の切替状態についての情報は、例えばデータ転送装置102が備えているレジスタなどに格納してもよいし、演算装置101がRAMなどの適当な記憶装置に保持させておいてもよい。
【0055】
図8は、本実施形態2において演算装置101が記憶装置103に対してデータ整合性診断を実施する処理フローを示す図である。以下、図8の各ステップについて説明する。
【0056】
(図8:ステップS801)
演算装置101は、データ整合性診断を開始する前に、第1記憶領域701と第2記憶領域702それぞれについて、演算装置101とデータ転送装置102いずれがアクセスする設定となっているかを特定する。
【0057】
(図8:ステップS802)
演算装置101は、データ転送装置102がアクセスしていない方の記憶領域に対してデータ整合性診断を実施する。データ整合性診断の手順は、実施形態1の図4と同様でよい。
【0058】
(図8:ステップS803)
演算装置101は、第1記憶領域701と第2記憶領域702それぞれに演算装置101とデータ転送装置102いずれがアクセスするかについての設定を切り替える。
【0059】
<実施の形態2:まとめ>
以上のように、本実施形態2に係る組込制御装置100において、記憶装置103の記憶領域は、演算装置101がアクセスする第1記憶領域701とデータ転送装置102がアクセスする第2記憶領域702に分割されている。これにより、演算装置101とデータ転送装置102の間でアクセス競合が生じなくなるので、データ整合性診断を安全に実施することができる。
【0060】
なお、本実施形態2では記憶装置103の記憶領域を2つに分割した例を示したが、演算装置101やデータ転送装置102の数などに応じて、3つ以上に分割してもよい。
【0061】
<実施の形態3>
以上の実施形態1〜2において、データ転送装置102の例としてDMA機能を有する装置を挙げたが、演算装置101の動作とは独立して記憶装置103にアクセスする装置であれば、実施形態1〜2と同様の手法を適用することができる。例えば、演算装置101の動作とは独立して動作する第2演算装置が記憶装置103にアクセスする場合においても、実施形態1〜2と同様の手法を適用することができる。
【0062】
以上、本発明者によってなされた発明を実施形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【符号の説明】
【0063】
100:組込制御装置、101:演算装置、102:データ転送装置、103:記憶装置、104:バス、201:タイマ、202:AD変換器、203:AD変換結果レジスタ、301:通信装置、302:送信用レジスタ。

【特許請求の範囲】
【請求項1】
データを格納する記憶装置と、
制御演算を実行する演算装置と、
前記演算装置の動作とは独立して前記記憶装置へ直接アクセスしてデータを転送するデータ転送装置と、
を備え、
前記データ転送装置は、前記記憶装置に順次アクセスし、
前記演算装置は、前記データ転送装置がアクセスしていない前記記憶装置上の記憶領域に対して、前記記憶装置が格納しているデータの整合性診断を実施する
ことを特徴とする組込制御装置。
【請求項2】
前記記憶装置の記憶領域は、
前記演算装置がアクセスする第1記憶領域と、前記データ転送装置がアクセスする第2記憶領域とに分けられており、
前記データ転送装置および前記演算装置は、
前記第1記憶領域と前記第2記憶領域を互いに同期して切り替えながら、それぞれ前記転送および前記整合性診断を実施する
ことを特徴とする請求項1記載の組込制御装置。
【請求項3】
前記データ転送装置は、
アクセス先アドレスが増加する順に前記記憶装置に順次アクセスし、
前記演算装置は、
前記データ転送装置がデータ転送を実施する周期、前記データ転送装置が1度にデータ転送を実施する記憶領域のサイズ、前記演算装置が所定の記憶容量単位に対して前記整合性診断を実施するために要する時間に基づき、前記整合性診断を実施している途中に前記データ転送装置がアクセスしない前記記憶装置上の記憶領域範囲を確定した上で、
前記記憶領域範囲内かつ前記データ転送装置がアクセスしている前記記憶装置上のアドレスよりも前のアドレスに対して前記整合性診断を実施する
ことを特徴とする請求項1または2記載の組込制御装置。
【請求項4】
前記演算装置は、前記データ転送装置がデータを書き込み中でない前記記憶装置上の記憶領域に対して前記整合性診断を実施する
ことを特徴とする請求項1から3のいずれか1項記載の組込制御装置。
【請求項5】
前記演算装置は、前記データ転送装置がデータを読み取り中でない前記記憶装置上の記憶領域に対して前記整合性診断を実施する
ことを特徴とする請求項1から4のいずれか1項記載の組込制御装置。
【請求項6】
前記データ転送装置は、前記演算装置とは別の第2演算装置であり、
前記演算装置は、
前記整合性診断を実施する前に、前記第2演算装置が前記記憶装置にアクセスしているアドレスを取得し、そのアドレス以外の記憶領域に対して前記整合性診断を実施する
ことを特徴とする請求項1から5のいずれか1項記載の組込制御装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2012−141721(P2012−141721A)
【公開日】平成24年7月26日(2012.7.26)
【国際特許分類】
【出願番号】特願2010−293214(P2010−293214)
【出願日】平成22年12月28日(2010.12.28)
【出願人】(509186579)日立オートモティブシステムズ株式会社 (2,205)
【Fターム(参考)】