(57)【要約】【課題】データ転送の信頼性を向上する。【解決手段】転送するデータをレジスタに格納するＡ／Ｄ変換器１００と、データを保持するＤＭＡ１用バッファ１０４およびＤＭＡ２用バッファ１０５と、レジスタに格納されたデータをＤＭＡ１用バッファ１０４に転送するＤＭＡコントローラ１０１と、レジスタに格納されたデータをＤＭＡ１用バッファ１０４に転送するＤＭＡコントローラ１０２と、ＤＭＡ１用バッファ１０４に保持されたデータとＤＭＡ２用バッファ１０５に保持されたデータとの少なくとも一方をレジスタに格納されたデータと比較することにより診断を行い、ＤＭＡ１用バッファ１０４に保持されたデータとＤＭＡ２用バッファ１０５に保持されたデータとのいずれを出力するかを選択するＡ／Ｄ変換値選択部１０６とを有する。【選択図】図１
2019028750.tif 000002
【特許請求の範囲】
【請求項１】
転送するデータをレジスタに格納するレジスタ処理部と、
転送されてくるデータを保持する第１のバッファおよび第２のバッファと、
前記レジスタに格納されたデータを前記第１のバッファに転送する第１のデータ転送コントローラと、
前記レジスタに格納されたデータを前記第２のバッファに転送する第２のデータ転送コントローラと、
前記第１のバッファに保持されたデータと前記第２のバッファに保持されたデータとの少なくとも一方を前記レジスタに格納されたデータと比較することにより診断を行い、診断結果である第１の診断結果情報に基づいて、前記第１のバッファに保持されたデータと前記第２のバッファに保持されたデータとのいずれを出力するかを選択する選択部と、を有するデータ転送装置。
【請求項２】
前記選択部は、前記データの出力先の動作に同期して診断を行い、前記第１のバッファに保持されたデータと前記第２のバッファに保持されたデータとのうちいずれを出力するかを選択する、請求項１に記載のデータ転送装置。
【請求項３】
前記第１のデータ転送コントローラおよび前記第２のデータ転送コントローラのそれぞれにおけるデータ転送の診断を行うフェイル処理部を更に有し、
前記レジスタ処理部は、前記転送するデータを前記レジスタに格納すると、データ転送開始のトリガを出力し、
前記フェイル処理部は、前記データ転送開始のトリガに応じたタイミングにて、前記第１のバッファに保持されたデータと前記第２のバッファに保持されたデータとの少なくとも一方を前記レジスタに格納されたデータと比較することにより診断を行い、診断結果を第２の診断結果情報として記録し、
前記選択部は、前記データの出力先の動作に同期して、前記第１の診断結果情報および前記第２の診断結果情報に基づいて、前記第１のバッファに保持されたデータと前記第２のバッファに保持されたデータとのうちいずれを出力するかを選択する、請求項２に記載のデータ転送装置。
【請求項４】
前記選択部は、前記データの出力先の動作に同期して、出力するデータに関する前記第２の診断結果情報として前記第１のデータ転送コントローラおよび前記第２のデータ転送コントローラの少なくとも少なくとも一方におけるデータ転送が異常であることを示す値が記録されている場合は前記第２の診断結果情報に基づいて、また、前記出力するデータに関する前記第２の診断結果情報として前記第１のデータ転送コントローラおよび前記第２のデータ転送コントローラの少なくとも少なくとも一方におけるデータ転送が異常であることを示す値が記録されていない場合は診断を行い、また、診断結果である前記第１の診断結果情報に基づいて、前記第１のバッファに保持されたデータと前記第２のバッファに保持されたデータとのうちいずれを出力するかを選択する、請求項３に記載のデータ転送装置。
【請求項５】
前記フェイル処理部は、前記第１のデータ転送コントローラおよび前記第２のデータ転送コントローラのうち、前記データ転送の診断を行った結果、異常が発生したと診断したデータ転送コントローラの動作を停止させる、請求項３に記載のデータ転送装置。
【請求項６】
前記第１のデータ転送コントローラは、前記データ転送開始のトリガに同期して、前記レジスタに格納されたデータを前記第１のバッファに転送し、
前記第２のデータ転送コントローラは、前記レジスタに格納されたデータの前記第１のバッファへの転送完了をトリガとして、前記レジスタに格納されたデータを前記第２のバッファに転送し、
前記フェイル処理部は、前記レジスタに格納されたデータの前記第２のバッファへの転送完了をトリガとして、前記診断を行う、請求項５に記載のデータ転送装置。
【請求項７】
前記第２のデータ転送コントローラは、前記第１のデータ転送コントローラの動作が停止している場合、前記データ転送開始のトリガに同期して、前記レジスタに格納されたデータを前記第２のバッファに転送し、
前記フェイル処理部は、前記第２のデータ転送コントローラの動作が停止している場合、前記レジスタに格納されたデータの前記第１のバッファへの転送完了をトリガとして、前記診断を行う、請求項６に記載のデータ転送装置。
【請求項８】
前記レジスタ処理部は、アナログ信号を連続的にデジタル信号に変換し前記デジタル信号を前記レジスタに格納し、前記デジタル信号を前記レジスタに格納すると、前記データ転送開始のトリガを出力する、請求項１に記載のデータ転送装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ダイレクトメモリアクセスによるデータ転送を診断する技術に関する。
【背景技術】
【０００２】
センサ出力のオーバーサンプリングのように一定周期でデータをサンプルし、バッファリングする仕組みにおいて、入出力装置がＣＰＵを介さずにデータにアクセスすることを可能とするＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）が用いられている。ＤＭＡでは、ＤＭＡコントローラがＣＰＵを介さずにデータ転送を行うことで、ＣＰＵに負荷を掛けることなく、かつ、ＲＡＭなどへの高速なデータの転送が可能になる。
【０００３】
その一方でＤＭＡには、データ転送に何らかの異常が発生すると、転送されたＲＡＭ上のデータを参照する処理が正しく実行されなかったり、他の処理が参照するＲＡＭ上の他のデータが破壊されたりする虞がある。
【０００４】
そこで、ＤＭＡの異常を診断する方法が提案されており、例えば、特許文献１に開示されている。特許文献１に開示された技術では、ＤＭＡコントローラの入力値と出力値との整合性を確認することで、ＤＭＡコントローラ自体の異常を検出する。ＤＭＡコントローラの異常を検出すると、フェイルセーフとして、診断結果に従い、ＣＰＵがアクセスするデータを切換える。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００１−２１６２０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に開示された技術は、ＤＭＡコントローラの入力値と出力値との整合性を確認することでＤＭＡコントローラ自体の異常を検出するものである。そのため、ＤＭＡコントローラへのアドレスの入力値が異常値となってもＤＭＡコントローラの入力値と出力値とが一致していることにより、データ転送の異常は検出されず、データ転送の信頼性が十分でない場合があった。このように、ＤＭＡコントローラ自体に異常がなくても、例えば、ＤＭＡコントローラに入力されるアドレス値が異常値であると、転送されたデータがＲＡＭの本来書き込まれるべきアドレスとは異なるアドレスに書き込まれ、他の処理が参照するＲＡＭ上のデータが破壊されてしまう可能性がある。
【０００７】
本発明の目的は、データ転送の信頼性を向上する技術を提供することである。
【課題を解決するための手段】
【０００８】
上記目的を達成するために本発明は、転送するデータをレジスタに格納するレジスタ処理部と、転送されてくるデータを保持する第１のバッファおよび第２のバッファと、前記レジスタに格納されたデータを前記第１のバッファに転送する第１のデータ転送コントローラと、前記レジスタに格納されたデータを前記第２のバッファに転送する第２のデータ転送コントローラと、前記第１のバッファに保持されたデータと前記第２のバッファに保持されたデータとの少なくとも一方を前記レジスタに格納されたデータと比較することにより診断を行い、診断結果である第１の診断結果情報に基づいて、前記第１のバッファに保持されたデータと前記第２のバッファに保持されたデータとのいずれを出力するかを選択する選択部と、を有する。
【発明の効果】
【０００９】
本発明によれば、ＤＭＡによるデータ転送機能に異常が生じた場合でも、データの出力先が異常なデータを参照することを回避できる。また、ＤＭＡによるデータ転送機能を制御するマイコンの仕様（診断機能の有無）に依存することなく、データ転送機能の診断をソフトウェアで実現することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明のデータ転送装置の実施の一形態を示す図である。
【図２】図１に示したデータ転送装置の初期化処理を説明するためのフローチャートである。
【図３】図１に示したＤＭＡ診断・フェイル処理部における診断・フェイル処理を説明するためのフローチャートである。
【図４】図１に示したＡ／Ｄ変換値選択部における処理を説明するためのフローチャートである。
【図５】図１に示したデータ転送装置においてＤＭＡコントローラが異常と判定された場合の具体的な動作を説明するための図である。
【図６】図１に示したデータ転送装置にてＤＭＡコントローラに異常が発生した場合の全体的な動作の流れ説明するためのタイミングチャートである。
【発明を実施するための形態】
【００１１】
以下に、本発明の実施の形態について図面を参照して説明する。
【００１２】
図１は、本発明のデータ転送装置の実施の一形態を示す図である。図１において、実線矢印はデータフローを示し、破線矢印はトリガ要因を示している。また、●（黒丸）はバッファ内の最新値を示し、○（白丸）はバッファ内の過去値を示している。
【００１３】
本形態は図１に示すように、Ａ／Ｄ変換器１００と、ＤＭＡコントローラ１０１，１０２と、ＤＭＡ診断・フェイル処理部１０３と、ＤＭＡ１用バッファ１０４と、ＤＭＡ２用バッファ１０５と、Ａ／Ｄ変換値選択部１０６とを有している。
【００１４】
Ａ／Ｄ変換器１００は、本願発明におけるレジスタ処理部となるものである。Ａ／Ｄ変換器１００は、例えばスロットルポジションセンサー等から出力されたアナログ信号を、変換周期１０１ａで連続的にデジタル信号に変換する。Ａ／Ｄ変換器１００は、アナログ信号からなる一群のデータのデジタル信号への変換が完了すると、変換したデジタル信号を一群のデータ毎にＡ／Ｄ変換値１０１ｃとしてレジスタに格納し、データ転送開始のトリガとなるＡ／Ｄ変換終了１０１ｂを出力する。
【００１５】
ＤＭＡ１用バッファ１０４は、本願発明における第１のバッファとなるものである。ＤＭＡ１用バッファ１０４は、ＤＭＡコントローラ１０１を介してＡ／Ｄ変換器１００のレジスタから転送されてくるＡ／Ｄ変換値１０１ｃを保持する。
【００１６】
ＤＭＡ２用バッファ１０５は、本願発明における第２のバッファとなるものである。ＤＭＡ２用バッファ１０５は、ＤＭＡコントローラ１０２を介してＡ／Ｄ変換器１００のレジスタから転送されてくるＡ／Ｄ変換値１０１ｃを保持する。
【００１７】
ＤＭＡコントローラ１０１は、本願発明における第１のデータ転送コントローラとなるものである。ＤＭＡコントローラ１０１は、Ａ／Ｄ変換器１００から出力されたＡ／Ｄ変換終了１０１ｂをトリガとして、レジスタに格納されたＡ／Ｄ変換値１０１ｃをＤＭＡ１用バッファ１０４に転送する。ＤＭＡコントローラ１０１は、Ａ／Ｄ変換値１０１ｃのＤＭＡ１用バッファ１０４への転送が完了すると、ＤＭＡ１転送完了１１２を出力する。
【００１８】
ＤＭＡコントローラ１０２は、本願発明における第２のデータ転送コントローラとなるものである。ＤＭＡコントローラ１０２は、ＤＭＡコントローラ１０１から出力されたＤＭＡ１転送完了１１２をトリガとして、レジスタに格納されたＡ／Ｄ変換値１０１ｃをＤＭＡ２用バッファ１０５に転送する。ＤＭＡコントローラ１０２は、Ａ／Ｄ変換値１０１ｃのＤＭＡ２用バッファ１０５への転送が完了すると、ＤＭＡ２転送完了１２３を出力する。
【００１９】
ＤＭＡ診断・フェイル処理部１０３は、本願発明におけるフェイル処理部となるものである。ＤＭＡ診断・フェイル処理部１０３は、ＤＭＡコントローラ１０２から出力されたＤＭＡ２転送完了１２３をトリガとして、ＤＭＡ１用バッファ１０４に保持されたＤＭＡ１用バッファ最新値１１６及びＤＭＡ２用バッファ１０５に保持されたＤＭＡ２用バッファ最新値１２６と、レジスタに格納されたＡ／Ｄ変換値１０１ｃとをそれぞれ比較することにより、ＤＭＡコントローラ１０１，１０２におけるデータ転送の診断を行い、その診断結果を第２の診断結果情報となるＤＭＡ診断結果１３６として記録、出力する。また、ＤＭＡ診断・フェイル処理部１０３は、ＤＭＡコントローラ１０１，１０２のうち、データ転送の診断を行った結果、転送不良と診断したＤＭＡコントローラの動作を停止させる。
【００２０】
Ａ／Ｄ変換値選択部１０６は、本願発明における選択部となるものである。Ａ／Ｄ変換値選択部１０６は、データの出力先となるアプリケーション１０７の起動周期１０７ａに同期して、ＤＭＡ診断結果１３６を参照し、また、ＤＭＡ１用バッファ１０４に保持されたＤＭＡ１用バッファ最新値１１６及びＤＭＡ２用バッファ１０５に保持されたＤＭＡ２用バッファ最新値１２６と、レジスタに格納されたＡ／Ｄ変換値１０１ｃとをそれぞれ比較することで、後述するＡ／Ｄ変換値選択部フロー（図４参照）で示す診断判定を行い、診断結果である第１の診断結果情報に基づいて、ＤＭＡ１用バッファ最新値１１６とＤＭＡ２用バッファ最新値１２６とのいずれか一方を選択し、Ａ／Ｄ変換値１６７としてアプリケーション１０７に供給する。
【００２１】
アプリケーション１０７は、アプリケーションの起動周期１０７ａ毎に、Ａ／Ｄ変換値選択部１０６とともに実行され、Ａ／Ｄ変換値１６７を使用した演算を行う。なお、Ａ／Ｄ変換値選択部１０６は、アプリケーションの周期だけでなく、例えば、ＤＭＡによる転送完了毎等、その他の周期でも実行が可能である。
【００２２】
以下に、上記のように構成されたデータ転送装置の動作について説明する。
【００２３】
まず、初期化処理について説明する。
【００２４】
図２は、図１に示したデータ転送装置の初期化処理を説明するためのフローチャートである。
【００２５】
図１に示したデータ転送装置を初期化する場合はまず、Ａ／Ｄ変換値１００の変換周期１０１ａを設定する（ステップ２００）。
【００２６】
次に、ＤＭＡコントローラ１０１によって、レジスタに格納されたＡ／Ｄ変換値１０１ｃをＤＭＡ１用バッファ１０４に転送するためのトリガ要因を設定する（ステップ２０１）。なお、初期値としては、Ａ／Ｄ変換器１００から出力されたＡ／Ｄ変換終了１０１ｂをトリガ要因として設定する。
【００２７】
また、ＤＭＡコントローラ１０２によって、レジスタに格納されたＡ／Ｄ変換値１０１ｃをＤＭＡ２用バッファ１０５に転送するためのトリガ要因を設定する（ステップ２０２）。なお、初期値としては、ＤＭＡコントローラ１０１から出力されたＤＭＡ１転送完了１１２をトリガ要因として設定する。
【００２８】
次に、ＤＭＡ診断・フェイル処理部１０３にてＤＭＡコントローラ１０１，１０２におけるデータ転送の診断を行うためのトリガ要因を設定する（ステップ２０３）。なお、初期値としては、ＤＭＡコントローラ１０２から出力されたＤＭＡ２転送完了１２３をトリガ要因として設定する。
【００２９】
また、ＤＭＡ診断・フェイル処理部１０３から出力されるＤＭＡ診断結果１３６を初期化しておく（ステップ２０４）。
【００３０】
このようにＤＭＡコントローラ１０１，１０２によるデータ転送及びＤＭＡ診断・フェイル処理部１０３における診断のトリガ要因として、Ａ／Ｄ変換器１００におけるＡ／Ｄ変換終了１０１ｂを始めとして、その後のＤＭＡコントローラ１０１，１０２におけるＤＭＡ転送完了１１２，１２３を用いることで、トリガ要因を別途設定する必要がなくなるとともに、ＤＭＡコントローラ１０１，１０２におけるデータ転送及びＤＭＡ診断・フェイル処理部１０３における診断の一連の順序が乱れてしまうことがない。
【００３１】
次に、ＤＭＡ診断・フェイル処理部１０３における診断・フェイル処理について説明する。
【００３２】
図３は、図１に示したＤＭＡ診断・フェイル処理部１０３における診断・フェイル処理を説明するためのフローチャートである。なお、本形態では、フローの前半で、ＤＭＡコントローラ１０１を診断し、フローの後半で、ＤＭＡコントローラ１０２を診断する構成としている。
【００３３】
まず、ＤＭＡ診断・フェイル処理部１０３は、Ａ／Ｄ変換器１００によってレジスタに格納されたＡ／Ｄ変換値１０１ｃと、ＤＭＡコントローラ１０１によってレジスタから転送され、ＤＭＡ１用バッファ１０４に格納されたＤＭＡ１用バッファ最新値１１６とを比較し、これらが異なるかどうかを判定する（ステップ２１０）。
【００３４】
Ａ／Ｄ変換値１０１ｃとＤＭＡ１用バッファ最新値１１６とが異なる場合は、ＤＭＡ診断・フェイル処理部１０３は、ＤＭＡコントローラ１０１におけるデータ転送が異常であると判定し、ＤＭＡ診断結果１３６として、ＤＭＡコントローラ１０１におけるデータ転送が異常であることを示す値を記録する（ステップ２１１）。なお、ＤＭＡコントローラ１０１におけるデータ転送が異常であるかどうかの判定は、Ａ／Ｄ変換値１０１ｃとＤＭＡ１用バッファ最新値１１６とを比較することに限らず、ＤＭＡコントローラ１０１によるデータの転送先アドレスがＤＭＡ１用バッファ１０４の領域外であるかどうかによっても行うことができる。
【００３５】
また、ＤＭＡ診断・フェイル処理部１０３は、異常であると判定したＤＭＡコントローラ１０１の動作を停止させる（ステップ２１２）。
【００３６】
ＤＭＡコントローラ１０１の動作が停止すると、その後、ＤＭＡコントローラ１０２が、レジスタに格納されたＡ／Ｄ変換値１０１ｃをＤＭＡ２用バッファ１０５に転送するためのトリガ要因として、ＤＭＡコントローラ１０１から出力されるＤＭＡ転送完了１１２を利用することができなくなるため、トリガ要因を、ＤＭＡ１転送完了１１２から、Ａ／Ｄ変換器１００から出力されるＡ／Ｄ変換終了１０１ｂに変更する（ステップ２１３）。
【００３７】
次に、ＤＭＡ診断・フェイル処理部１０３は、Ａ／Ｄ変換器１００によってレジスタに格納されたＡ／Ｄ変換値１０１ｃと、ＤＭＡコントローラ１０２によってレジスタから転送され、ＤＭＡ２用バッファ１０５に格納されたＤＭＡ２用バッファ最新値１２６とを比較し、これらが異なるかどうかを判定する（ステップ２１４）。
【００３８】
Ａ／Ｄ変換値１０１ｃとＤＭＡ２用バッファ最新値１２６とが異なる場合は、ＤＭＡ診断・フェイル処理部１０３は、ＤＭＡコントローラ１０２におけるデータ転送が異常であると判定し、ＤＭＡ診断結果１３６として、ＤＭＡコントローラ１０２におけるデータ転送が異常であることを示す値を記録する（ステップ２１５）。なお、ＤＭＡコントローラ１０２におけるデータ転送が異常であるかどうかの判定は、Ａ／Ｄ変換値１０１ｃとＤＭＡ２用バッファ最新値１２６とを比較することに限らず、ＤＭＡコントローラ１０２によるデータの転送先アドレスがＤＭＡ２用バッファ１０５の領域外であるかどうかによっても行うことができる。
【００３９】
また、ＤＭＡ診断・フェイル処理部１０３は、異常であると判定したＤＭＡコントローラ１０２の動作を停止させる（ステップ２１６）。
【００４０】
ＤＭＡコントローラ１０２の動作が停止すると、その後、ＤＭＡ診断・フェイル処理部１０３が、ＤＭＡコントローラ１０１，１０２におけるデータ転送の診断を行うためのトリガ要因として、ＤＭＡコントローラ１０２から出力されるＤＭＡ転送完了１２３を利用することができなくなるため、トリガ要因を、ＤＭＡ１転送完了１２３から、ＤＭＡコントローラ１０１から出力されるＤＭＡ転送完了１１２に変更する（ステップ２１７）。
【００４１】
このように、異常であると判定したＤＭＡコントローラ１０１，１０２の動作を停止することにより、その後、異常であると判定したＤＭＡコントローラ１０１，１０２がバッファにデータを転送することがなくなりバッファが更新されず、転送に異常が生じたデータをアプリケーションが参照してしまうことを回避できる。
【００４２】
また、ＤＭＡコントローラ１０１の動作が停止した場合に、レジスタに格納されたＡ／Ｄ変換値１０１ｃをＤＭＡ２用バッファ１０５に転送するためのトリガ要因を、ＤＭＡ１転送完了１１２からＡ／Ｄ変換終了１０１ｂに変更し、また、ＤＭＡコントローラ１０２の動作が停止した場合に、ＤＭＡ診断・フェイル処理部１０３が、ＤＭＡコントローラ１０１，１０２におけるデータ転送の診断を行うためのトリガ要因を、ＤＭＡ１転送完了１２３からＤＭＡ転送完了１１２に変更することにより、ＤＭＡコントローラ１０１，１０２のいずれかの動作が停止した場合でも、それ以降継続して診断を行うことができる。
【００４３】
次に、Ａ／Ｄ変換値選択部１０６における処理について説明する。
【００４４】
図４は、図１に示したＡ／Ｄ変換値選択部１０６における処理を説明するためのフローチャートである。
【００４５】
Ａ／Ｄ変換値選択部１０６は、データの出力先となるアプリケーション１０７の起動周期１０７ａをトリガとして、まず、ＤＭＡ診断・フェイル処理部１０３にて記録、出力されたＤＭＡ診断結果１３６が、ＤＭＡコントローラ１０１におけるデータ転送が異常であることを示す値であるかどうかを判定し、異常であることを示す値が記録されていない場合は、ＤＭＡ診断・フェイル処理部１０３と同様に、Ａ／Ｄ変換器１００によってレジスタに格納されたＡ／Ｄ変換値１０１ｃと、ＤＭＡコントローラ１０１によってレジスタから転送され、ＤＭＡ１用バッファ１０４に格納されたＤＭＡ１用バッファ最新値１１６とを比較し、これらが異なるかどうかを判定する（ステップ４００）。
【００４６】
Ａ／Ｄ変換値選択部１０６は、ＤＭＡ診断結果１３６が、ＤＭＡコントローラ１０１におけるデータ転送が異常であることを示す値ではなく、かつ、Ａ／Ｄ変換値１０１ｃとＤＭＡ１用バッファ最新値１１６とが一致する場合は、ＤＭＡ１用バッファ１０４に保持されたデータの参照可能と判定し、ＤＭＡ１用バッファ１０４に保持された値をアプリケーション１０７に供給することを選択する（ステップ４０１）。
【００４７】
一方、ＤＭＡ診断結果１３６が、ＤＭＡコントローラ１０１におけるデータ転送が異常であることを示す値であるか、または、Ａ／Ｄ変換値１０１ｃとＤＭＡ１用バッファ最新値１１６とが一致しない場合は、Ａ／Ｄ変換値選択部１０６は、ＤＭＡコントローラ１０２について同様の処理を行う。すなわち、Ａ／Ｄ変換値選択部１０６は、ＤＭＡ診断・フェイル処理部１０３にて記録、出力されたＤＭＡ診断結果１３６が、ＤＭＡコントローラ１０２におけるデータ転送が異常であることを示す値であるかどうかを判定し、異常であることを示す値が記録されていない場合は、Ａ／Ｄ変換器１００によってレジスタに格納されたＡ／Ｄ変換値１０１ｃと、ＤＭＡコントローラ１０２によってレジスタから転送され、ＤＭＡ２用バッファ１０５に格納されたＤＭＡ１用バッファ最新値１２６とを比較し、これらが異なるかどうかを判定する（ステップ４０２）。
【００４８】
Ａ／Ｄ変換値選択部１０６は、ＤＭＡ診断結果１３６が、ＤＭＡコントローラ１０２におけるデータ転送が異常であることを示す値ではなく、かつ、Ａ／Ｄ変換値１０１ｃとＤＭＡ２用バッファ最新値１２６とが一致する場合は、ＤＭＡ２用バッファ１０５に保持されたデータの参照可能と判定し、ＤＭＡ２用バッファ１０５に保持された値をアプリケーション１０７に供給することを選択する（ステップ４０３）。
【００４９】
一方、ＤＭＡ診断結果１３６が、ＤＭＡコントローラ１０２におけるデータ転送が異常であることを示す値であるか、または、Ａ／Ｄ変換値１０１ｃとＤＭＡ２用バッファ最新値１２６とが一致しない場合は、Ａ／Ｄ変換値選択部１０６は、ＤＭＡコントローラ１０１，１０２におけるデータ転送が異常であると判定し、ＤＭＡ１用バッファ１０４およびＤＭＡ２用バッファ１０５いずれの値もアプリケーション１０７へ供給せず、アプリケーション１０７に異常を通知することで、アプリケーション１０７が異常値を参照しない様にする（ステップ４０４）。その場合、アプリケーション１０７は、ＤＭＡ転送を介さずにデータを直接参照する等によって処理を実行することが考えられる。
【００５０】
このように、Ａ／Ｄ変換値選択部１０６において、出力するデータに関する入力側での診断結果であるＤＭＡ診断結果１３６としてＤＭＡコントローラ１０１，１０２の少なくとも少なくとも一方におけるデータ転送が異常であることを示す値が記録されている場は、ＤＭＡ診断結果１３６に基づいて、また、ＤＭＡ診断結果１３６としてＤＭＡコントローラ１０１，１０２の少なくとも少なくとも一方におけるデータ転送が異常であることを示す値が記録されていない場合は、レジスタに格納されたＡ／Ｄ変換値１０１ｃと、ＤＭＡ１用バッファ１０４に保持されたデータおよびＤＭＡ２用バッファ１０５に保持されたデータとを比較することで診断を行い、その診断結果に基づいてデータの選択を行うので、不要な処理を省きかつ信頼性の高いデータの選択を行うことができる。
【００５１】
次に、図１に示したデータ転送装置においてＤＭＡコントローラ１０１が異常と判定された場合の具体的な動作について説明する。
【００５２】
図５は、図１に示したデータ転送装置においてＤＭＡコントローラ１０１が異常と判定された場合の具体的な動作を説明するための図である。図５においても、図１と同様、実線矢印はデータフローを示し、破線矢印はトリガ要因を示している。また、●（黒丸）はバッファ内の最新値を示し、○（白丸）はバッファ内の過去値を示している。
【００５３】
図１に示したデータ転送装置において、例えばＤＭＡコントローラ１０１におけるデータ転送が異常であると判定された場合、ステップ２１２にてＤＭＡコントローラ１０１の動作が停止することにより、図５に示すように、ＤＭＡ１用バッファ１０４の更新が停止する。
【００５４】
また、ステップ２１３において、ＤＭＡコントローラ１０２のデータ転送のトリガ要因が、ＤＭＡ１転送完了１１２からＡ／Ｄ変換終了１０１ｂとされているため、ＤＭＡコントローラ１０１の動作が停止しているものの、以降も継続して、Ａ／Ｄ変換器１００のレジスタに格納されたＡ／Ｄ変換値１０１ｃを、ＤＭＡコントローラ１０２を介してＤＭＡ２用バッファ１０５に転送することで、アプリケーション１０７はＡ／Ｄ変換値１６７を取得することができる。
【００５５】
また、図示はしていないが、ＤＭＡコントローラ１０２におけるデータ転送が異常であると判定された場合であっても、同様に、Ａ／Ｄ変換器１００のレジスタに格納されたＡ／Ｄ変換値１０１ｃを、ＤＭＡコントローラ１０１を介してＤＭＡ１用バッファ１０４に転送することで、アプリケーション１０７はＡ／Ｄ変換値１６７を取得することができる。
【００５６】
したがって、ＤＭＡコントローラ１０１，１０２のいずれか一方がデータ転送において異常が生じた場合であっても、データの出力先であるアプリケーション１０７は転送されてきたデータを参照し、決められた演算を継続して行うことができる。
【００５７】
以下に、図１に示したデータ転送装置にてＤＭＡコントローラ１０１，１０２に異常が発生した場合の全体的な動作の流れについて説明する。
【００５８】
図６は、図１に示したデータ転送装置にてＤＭＡコントローラ１０１，１０２に異常が発生した場合の全体的な動作の流れ説明するためのタイミングチャートである。
【００５９】
図１に示したデータ転送装置においては、図６に示すように、Ａ／Ｄ変換値の変換周期１０１ａをトリガにしてＡ／Ｄ変換器１００にてＡ／Ｄ変換６０１が起動した後、まず、Ａ／Ｄ変換終了１０１ｂがＡ／Ｄ変換器１００から出力されると、Ａ／Ｄ変換終了１０１ｂをトリガとしてＤＭＡコントローラ１０１が、Ａ／Ｄ変換器１００がレジスタに格納したＡ／Ｄ変換値１０１ｃをＤＭＡ１用バッファ１０４に転送するＤＭＡ１転送６０２を実行する。この際、レジスタに格納されたＡ／Ｄ変換値１０１ｃは、Ａ／Ｄ変換器１００にてＡ／Ｄ変換６０１が完了したことで更新される。
【００６０】
ＤＭＡコントローラ１０１が、レジスタに格納されたＡ／Ｄ変換値１０１ｃをＤＭＡ１用バッファ１０４に転送し、その旨を示すＤＭＡ１転送完了１１２がＤＭＡコントローラ１０１から出力されると、ＤＭＡ１転送完了１１２をトリガとしてＤＭＡコントローラ１０２が、Ａ／Ｄ変換器１００がレジスタに格納したＡ／Ｄ変換値１０１ｃをＤＭＡ２用バッファ１０５に転送するＤＭＡ２転送６０３を実行する。この際、ＤＭＡ１用バッファ１０４は、ＤＭＡコントローラ１０１がＤＭＡ１転送６０２を完了することで更新される。
【００６１】
その後、ＤＭＡコントローラ１０２が、レジスタに格納されたＡ／Ｄ変換値１０１ｃをＤＭＡ２用バッファ１０５に転送し、その旨を示すＤＭＡ２転送完了１２３がＤＭＡコントローラ１０２から出力されると、ＤＭＡ２転送完了１２３をトリガとしてＤＭＡ診断・フェイル処理部１０３が、上述したように、ＤＭＡコントローラ１０１，１０２におけるデータ転送を診断する診断・フェイル６０４を実行する。この際、ＤＭＡ２用バッファ１０５は、ＤＭＡコントローラ１０２がＤＭＡ２転送６０３を完了することで更新される。また、ＤＭＡ診断結果１３６は、ＤＭＡ診断・フェイル処理部１０３が診断・フェイル６０４を完了することで更新される。
【００６２】
ここで、上述した一連の処理を実行している際、タイミング６２１にてＤＭＡコントローラ１０１に異常が発生した場合の動作を説明する。
【００６３】
Ａ／Ｄ変換器１０１ｃがレジスタに格納したＡ／Ｄ変換値１０１ｃは、Ａ／Ｄ変換器１００にてＡ／Ｄ変換６０１が完了したことで更新される。
【００６４】
また、ＤＭＡ１用バッファ１０４は、ＤＭＡコントローラ１０１がＤＭＡ１転送６０２を完了することで更新され、ＤＭＡ２用バッファ１０５は、ＤＭＡコントローラ１０２がＤＭＡ２転送６０３を完了することで更新される。この際、ＤＭＡ１用バッファ１０４は、タイミング６２１にてＤＭＡコントローラ１０１に異常が発生していることで、正しくないデータによって更新されていることになる。
【００６５】
また、ＤＭＡ診断結果１３６は、ＤＭＡ診断・フェイル処理部１０３が診断・フェイル６０４を完了することで更新される。そのため、ＤＭＡ診断結果１３６は、タイミング６２１にてＤＭＡコントローラ１０１に異常が発生したにも関わらず、その後、ＤＭＡ診断・フェイル処理部１０３が診断・フェイル６０４を完了しなければ、ＤＭＡコントローラ１０１に異常が発生した旨が反映したものとはならない。それにより、ＤＭＡコントローラ１０１に異常が発生したタイミング６２１から、その後、ＤＭＡ診断・フェイル処理部１０３が診断・フェイル６０４を完了したタイミング６２３までの間は、タイミング６２１にてＤＭＡコントローラ１０１に異常が発生したことでＤＭＡ１用バッファ１０４の値が正しくないにも関わらず、ＤＭＡ診断結果１３６はＤＭＡコントローラ１０１，１０２ともに正常を示す値のままである。
【００６６】
そのため、アプリケーション１０７において、ＤＭＡ診断結果１３６に従って、ＤＭＡコントローラ１０１によって転送されたＤＭＡ１用バッファ１０４が参照されてしまうと、正しい処理を実行することができなくなってしまう。
【００６７】
ここで、上述したように、アプリケーションの起動周期１０７ａによりアプリケーション１０７が起動した場合、Ａ／Ｄ変換値選択部１０６が図４に示したフローを実行する。そのため、ＤＭＡコントローラ１０１に異常が発生したタイミング６２１から、その後、ＤＭＡ診断・フェイル処理部１０３が診断・フェイル６０４を完了したタイミング６２３までの間、すなわち、ＤＭＡ診断・フェイル処理部１０３にて診断が完了する前のタイミング６２４にてアプリケーション１０７が起動した場合、Ａ／Ｄ変換値選択部１０６が、ＤＭＡコントローラ１０１の異常を判断することができ、それにより、ＤＭＡ２用バッファ１０５の値を選択してアプリケーション１０７に供給することができる。
【００６８】
次に、上述した動作の後、タイミング６３１にてＤＭＡコントローラ１０２に異常が発生した場合の動作を説明する。
【００６９】
上述したように、ＤＭＡコントローラ１０１は、異常が発生したことで、ＤＭＡ診断・フェイル処理部１０３の制御によってタイミング６２３以降動作が停止している。
【００７０】
Ａ／Ｄ変換器１０１ｃがレジスタに格納したＡ／Ｄ変換値１０１ｃは、Ａ／Ｄ変換器１００にてＡ／Ｄ変換６０１が完了したことで更新される。
【００７１】
また、ＤＭＡ２用バッファ１０５は、ＤＭＡコントローラ１０２がＤＭＡ２転送６０３を完了することで更新される。この際、ＤＭＡ２用バッファ１０５は、タイミング６３１にてＤＭＡコントローラ１０２に異常が発生していることで、正しくないデータによって更新されていることになる。
【００７２】
また、ＤＭＡ診断結果１３６は、ＤＭＡ診断・フェイル処理部１０３が診断・フェイル６０４を完了することで更新される。そのため、ＤＭＡ診断結果１３６は、タイミング６３１にてＤＭＡコントローラ１０２に異常が発生したにも関わらず、その後、ＤＭＡ診断・フェイル処理部１０３が診断・フェイル６０４を完了しなければ、ＤＭＡコントローラ１０２に異常が発生した旨が反映したものとはならない。それにより、ＤＭＡコントローラ１０２に異常が発生したタイミング６３１から、その後、ＤＭＡ診断・フェイル処理部１０３が診断・フェイル６０４を完了したタイミング６３３までの間は、タイミング６３１にてＤＭＡコントローラ１０２に異常が発生したことでＤＭＡ２用バッファ１０５の値が正しくないにも関わらず、ＤＭＡ診断結果１３６はＤＭＡコントローラ１０１のみが異常である旨を示す値のままである。
【００７３】
そのため、アプリケーション１０７において、ＤＭＡ診断結果１３６に従って、ＤＭＡコントローラ１０２によって転送されたＤＭＡ２用バッファ１０５が参照されてしまうと、正しい処理を実行することができなくなってしまう。
【００７４】
ここで、上述したように、アプリケーションの起動周期１０７ａによりアプリケーション１０７が起動した場合、Ａ／Ｄ変換値選択部１０６が図４に示したフローを実行する。そのため、ＤＭＡコントローラ１０２に異常が発生したタイミング６３１から、その後、ＤＭＡ診断・フェイル処理部１０３が診断・フェイル６０４を完了したタイミング６３３までの間、すなわち、ＤＭＡ診断・フェイル処理部１０３にて診断が完了する前のタイミング６３４にてアプリケーション１０７が起動した場合、Ａ／Ｄ変換値選択部１０６が、ＤＭＡコントローラ１０２の異常を判断することができ、それにより、ＤＭＡコントローラ１０１，１０２の異常をアプリケーション１０７に通知することができる。
【００７５】
このように、Ａ／Ｄ変換値選択部１０６が、Ａ／Ｄ変換器１００がレジスタに格納したＡ／Ｄ変換値１０１ｃと、ＤＭＡ１用バッファ１０４，１０５に保持されたデータとを直接参照し、異常が発生したＤＭＡコントローラが転送したデータを選択出力しないことにより、アプリケーションが、正しく転送されたＡ／Ｄ変換値を参照することができる。
【００７６】
上述したように、レジスタに格納されたデータを２つのバッファに転送し、レジスタに格納されたデータと、バッファに転送されて保持されたデータとを比較し、その比較結果に基づいて、いずれのバッファに保持されたデータを出力するかを選択するので、ＤＭＡによるデータ転送機能に異常が生じた場合でも、データの出力先が異常なデータを参照することを回避でき、データ転送の信頼性を向上することができる。また、転送元となるレジスタに格納されたデータと、転送されてバッファに保持されたデータとを比較するので、意図したデータが意図した場所に転送されているかどうか確認することとなり、データ転送の信頼性を向上することができる。さらには、ＤＭＡによるデータ転送機能を制御するマイコンの仕様（診断機能の有無）に依存することなく、データ転送機能の診断をソフトウェアで実現することができる。
【００７７】
また、データの出力先の動作に同期してデータの選択を行うことで、データ転送における異常の発生と、データ選択動作とのタイムラグにより、転送に異常のあったデータが出力されることを回避できる。
【００７８】
また、データの出力先の動作に同期した診断で得られた第１の診断結果情報と、データの入力側のタイミングであるデータ転送開始のトリガに応じたタイミングにおける診断で得られた第２の診断結果情報との両方を用いて、２つのバッファに保持されたデータの選択を行うので、データの入力と出力が非同期で行われる場合であっても、異常なデータが選択されるのを抑制することができる。
【００７９】
なお、本形態においては、Ａ／Ｄ変換器１００にてアナログ信号をデジタル信号に変換されたＡ／Ｄ変換値１０１ｃをＤＭＡ転送する構成を例に挙げて説明したが、シリアル通信のデータ転送をＤＭＡを用いて行う構成であれば本発明を適用することができる。
【符号の説明】
【００８０】
１００…Ａ／Ｄ変換器、１０１，１０２…ＤＭＡコントローラ、１０１ａ…Ａ／Ｄ変換値の変換周期、１０１ｂ…Ａ／Ｄ変換終了、１０１ｃ，１６７…Ａ／Ｄ変換値、１０３…ＤＭＡ診断・フェイル処理部、１０４…ＤＭＡ１用バッファ、１０５…ＤＭＡ２用バッファ、１０６…Ａ／Ｄ変換値選択部、１０７…アプリケーション、１０７ａ…アプリケーションの起動周期、１１２…ＤＭＡ１転送完了、１１６…ＤＭＡ１用バッファ最新値、１２３…ＤＭＡ２転送完了、１２６…ＤＭＡ２用バッファ最新値、１３６…ＤＭＡ診断結果
【図１】
2019028750.tif 000003
【図２】
2019028750.tif 000004
【図３】
2019028750.tif 000005
【図４】
2019028750.tif 000006
【図５】
2019028750.tif 000007
【図６】
2019028750.tif 000008