(57)【要約】【課題】制御装置のトレース情報を記録するための部品追加を抑制する。【解決手段】情報処理装置は、第１モードでは制御対象への制御を実現する所定の制御プログラムを実行し、第２モードでは前記制御プログラムの動作を疑似する疑似プログラムを実行する情報処理装置であって、前記制御プログラムを格納するリードオンリメモリと、前記第２モードにおいて前記疑似プログラムを保持するランダムアクセスメモリと、第１モードでは前記リードオンリメモリの前記制御プログラムを実行し、前記第２モードでは前記ランダムアクセスメモリの前記疑似プログラムを実行するプロセッサと、前記第１モードにおいて前記プロセッサの動作を表すトレース情報を取得して前記ランダムアクセスメモリに記録し、前記第２モードにおいて前記トレース情報を取得して外部のデバッグ用装置に出力するデバッグ機能部と、を有している。【選択図】図２
2018132914.tif 000002
【特許請求の範囲】
【請求項１】
第１モードでは制御対象への制御を実現する所定の制御プログラムを実行し、第２モードでは前記制御プログラムの動作を疑似する疑似プログラムを実行する情報処理装置であって、
前記制御プログラムを格納するリードオンリメモリと、
前記第２モードにおいて前記疑似プログラムを保持するランダムアクセスメモリと、
第１モードでは前記リードオンリメモリの前記制御プログラムを実行し、前記第２モードでは前記ランダムアクセスメモリの前記疑似プログラムを実行するプロセッサと、
前記第１モードにおいて前記プロセッサの動作を表すトレース情報を取得して前記ランダムアクセスメモリに記録し、前記第２モードにおいて前記トレース情報を取得して外部のデバッグ用装置に出力するデバッグ機能部と、
を有する情報処理装置。
【請求項２】
前記ランダムアクセスメモリを、前記第１モードでは前記デバッグ機能部からアクセス可能にし、前記第２モードでは前記プロセッサからアクセス可能にするスイッチを更に有する、請求項１に記載の情報処理装置。
【請求項３】
前記スイッチは、前記プロセッサから設定可能なレジスタに設定された値によって、前記ランダムアクセスメモリを前記デバッグ機能部からアクセス可能するか、前記プロセッサからアクセス可能にするかを切り替える、請求項２に記載の情報処理装置。
【請求項４】
前記制御プログラムは、前記ランダムアクセスメモリが前記デバッグ機能部からアクセス可能となるように前記レジスタを設定し、
前記疑似プログラムは、前記ランダムアクセスメモリが前記プロセッサからアクセス可能となるように前記レジスタを設定する、
請求項３に記載の情報処理装置。
【請求項５】
前記デバッグ機能部は、前記第１モードにおいては、前記ランダムアクセスメモリにリングバッファを構成し、該リングバッファに前記トレース情報を記録する、請求項１に記載の情報処理装置。
【請求項６】
前記情報処理装置は、前記デバッグ機能部からアクセス可能な退避用メモリを更に有し、
前記デバッグ機能部は、所定の条件が満たされたとき、前記ランダムアクセスメモリに記録されている前記トレース情報を前記退避用メモリに退避する、
請求項５に記載の情報処理装置。
【請求項７】
前記所定の条件は所定の障害の発生である、請求項６に記載の情報処理装置。
【請求項８】
前記デバッグ機能部は、前記トレース情報を記録する前記退避用メモリのアドレスである退避先アドレスを管理しており、前記トレース情報を前記退避用メモリに記録すると、前記トレース情報を上書きしないように前記退避先アドレスを更新する、請求項６に記載の情報処理装置。
【請求項９】
前記退避用メモリは前記プロセッサの処理を介さず外部にデータを取り出し可能である、請求項６に記載の情報処理装置。
【請求項１０】
前記制御対象は自動車である、請求項１に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
制御装置における情報処理装置の動作をトレース情報として蓄積する技術に関する。
【背景技術】
【０００２】
近年、自動車の制御は複雑化している。そのため複雑な制御をマイコンにより実現するＥＣＵ（Ｅｌｅｔｒｉｃ  Ｃｏｎｒｏｔｏｌ  Ｕｎｉｔ）が多くの自動車に搭載されている。ＥＣＵでは、自動車の様々な制御がソフトウェアとしてプログラミングされており、プロセッサでそのソフトウェアプログラムを実行する。ＥＣＵには自動車から様々な情報が入力され、それを基に自動車に対して状況に応じた複雑な制御を行っている。
【０００３】
市場に出ると自動車は様々な状況に使用されるのでＥＣＵに入力される情報も様々に変化する。そのため、市場に出た自動車に搭載されているＥＣＵのマイコンが何らかの誤動作を起こした場合にその原因を特定するのは容易ではない。誤動作時のマイコンの動作を解析しようとしても誤動作を再現することができず、解析ができない場合もある。ＥＣＵの誤動作の原因特定は多大な労力と時間を要する作業となっている。
【０００４】
誤動作の解消は、市場で誤動作が発生する条件を絞り込んでいくことで誤動作の原因を特定し、その条件において誤動作が発生しないように、誤動作の原因に対する恒久的な対策を実施する。しかし、市場では想定外の条件が積み重なって誤動作を生じさせている場合が多く、誤動作を発生させる条件を絞り込む調査に膨大な時間を費やしている。
【０００５】
どのような条件が積み重なって誤動作に至ったかは誤動作が生じたときの状況だけから特定するのは難しい。そのため、ＥＣＵ内にメモリを内蔵し、マイコンの動作をトレース情報として継続的にメモリに蓄積する技術が特許文献１に開示されている。
【０００６】
特許文献１の技術を用いれば、時間経過に伴うマイコンの動作を示すトレース情報がメモリに蓄積されるので、誤動作が生じたときに、その誤動作の原因の特定に役立てることができる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平８−９５９４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１の技術では、トレース結果を格納するためのメモリをＥＣＵに新たに追加搭載する必要がある。そのためメモリの追加によりＥＣＵが大型化し、コスト高になってしまうという問題がある。
【０００９】
本発明は、制御装置のトレース情報を記録するための部品追加を抑制する技術を提供することである。
【課題を解決するための手段】
【００１０】
本発明の一態様による情報処理装置は、第１モードでは制御対象への制御を実現する所定の制御プログラムを実行し、第２モードでは前記制御プログラムの動作を疑似する疑似プログラムを実行する情報処理装置であって、前記制御プログラムを格納するリードオンリメモリと、前記第２モードにおいて前記疑似プログラムを保持するランダムアクセスメモリと、第１モードでは前記リードオンリメモリの前記制御プログラムを実行し、前記第２モードでは前記ランダムアクセスメモリの前記疑似プログラムを実行するプロセッサと、前記第１モードにおいて前記プロセッサの動作を表すトレース情報を取得して前記ランダムアクセスメモリに記録し、前記第２モードにおいて前記トレース情報を取得して外部のデバッグ用装置に出力するデバッグ機能部と、を有している。
【発明の効果】
【００１１】
開発モード（第２モード）においてプロセッサが実行する疑似プログラムを保持させておくランダムアクセスメモリを、量産モード（第１モード）においてトレース情報を記録するのに利用するので、トレース情報を記録するための部品追加を抑えることができる。
【図面の簡単な説明】
【００１２】
【図１】制御装置のソフトウェア開発におけるデバッグ環境を示す図である。
【図２】本実施形態における制御装置のソフトウェア開発におけるデバッグ環境を示す図である。
【図３】本実施形態における量産製品の制御装置を示すブロック図である。
【図４】本実施形態におけるデバッグ時の動作を示すフローチャートである。
【発明を実施するための形態】
【００１３】
本発明の実施形態の制御装置について図面を参照して詳細に説明する。本実施形態の制御装置は各種情報を取得し、それらの情報に基づいて制御対象へ制御信号を送信する装置であり、複雑な処理を実行する。そのため、制御装置はマイコンを搭載し、マイクロコンピュータ（以下「マイコン」ともいう）上でプロセッサがソフトウェアプログラムを実行することで複雑な処理を実行している。複雑な処理を実現するソフトウェアにはデバッグが不可欠である。そのため制御装置に搭載されるマイコンにはデバッグ環境が準備されている。
【００１４】
まず制御装置のソフトウェアを開発するためのデバッグ環境について説明する。
【００１５】
図１は、制御装置のソフトウェア開発におけるデバッグ環境を示す図である。図１を参照すると、デバッグ環境として、開発対象の制御装置１０１にはデバッガー１０９が接続され、更のそのデバッガー１０９にパーソナルコンピュータ（ＰＣ）１１０が接続されている。
【００１６】
制御装置１０１にはマイコン１０２が搭載されている。マイコン１０２は、エミュレーションＲＡＭ（ＥＲＡＭ）１０３、フラッシュメモリ（Ｆｌａｓｈ）１０４、グローバルＲＡＭ（Ｇｌｏｂａｌ  ＲＡＭ）１０５、プロセッサ（ＣＰＵ）１０６、ＥＥＰＲＯＭ１０７、デバッグ機能部１０８、システムインターコネクト１１１、フラッシュインタフェース１１２、周辺バス１１３、および周辺機能部１１４を有している。ＥＲＡＭ１０３、ＥＥＰＲＯＭ１０７、およびデバッグ機能部１０８はデバッグ用に設けられた部分である。上述したデバッガー１０９はデバッグ機能部１０８に接続されている。
【００１７】
プロセッサ１０６はシステムインターコネクト１１１に接続されている。システムインターコネクト１１１にはグローバルＲＡＭ１０５、ＥＥＰＲＯＭ１０７、フラッシュインタフェース１１２、周辺バス１１３、およびデバッグ機能部１０８が接続されている。
【００１８】
プロセッサ１０６はシステムインターコネクト１１１を介してグローバルＲＡＭ１０５およびＥＥＰＲＯＭ１０７にアクセスすることができる。
【００１９】
フラッシュインタフェース１１２にはＥＲＡＭ１０３およびフラッシュメモリ１０４が接続されている。プロセッサ１０６は、システムインターコネクト１１１およびフラッシュインタフェース１１２を介してＥＲＡＭ１０３およびフラッシュメモリ１０４にアクセス可能である。
【００２０】
制御装置１０１が制御対象（不図示）を制御する量産モードにおいてプロセッサ１０６が実行する制御プログラムはフラッシュメモリ１０４に搭載される。制御装置１０１の量産製品は量産モードである。量産モードでは、プロセッサ１０６は、フラッシュメモリ１０４に格納された制御プログラムを実行する。プロセッサ１０６は、グローバルＲＡＭ１０５を利用しながら制御プログラムを実行する。
【００２１】
周辺バス１１３には複数の周辺機能部１１４が接続されている。周辺機能部１１４は、制御装置１０１の制御に利用される各種機能部である。例えば、周辺機能部１１４は、制御対象あるいはその周辺に設置されたセンサからのセンサ入力を取得するセンサインタフェースである。センサ入力はセンサで観測された情報を示す入力信号である。あるいは、周辺機能部１１４は、制御対象への制御出力を送信する制御インタフェースである。制御出力は制御対象に対して指示する制御を示す出力信号である。プロセッサ１０６は、制御プログラムの処理に応じて適宜、周辺機能部１１４と信号を送受信する。
【００２２】
制御装置１０１のソフトウェア開発におけるデバッグ時の用いる開発モードにおいてプロセッサ１０６が適宜実行する疑似プログラムは、書き換えが容易なＥＲＡＭ１０３に搭載される。開発時の製品（試作品）は開発モードである。開発モードでは、プロセッサ１０６は、ＥＲＡＭ１０３に格納された疑似プログラムを実行する。疑似プログラムは制御プログラムを疑似するソフトウェアプログラムである。
【００２３】
開発者は、デバッグ機能部１０８を、外部装置であるデバッガー１０９を経由してパーソナルコンピュータ１１０でモニタしたり、制御したりしながら、制御プログラムのデバッグを行う。デバッグでは開発者は疑似プログラムを書き換えながら繰り返し実行する。デバッグ機能部１０８を介してパーソナルコンピュータ１１０から実行可能なデバッグ機能として、トレース機能、キャリブレーション機能、およびエミュレーション機能がある。
【００２４】
トレース機能は、プロセッサ１０６により実行されるソフトウェアの動作をステップ毎に確認するために、プロセッサ１０６の動作および状態を情報を蓄積する機能である。トレース機能において、デバッグ機能部１０８は、プロセッサバスであるシステムインターコネクト１１１上を流れる信号を観測し、プロセッサ１０６の動作を示すトレース情報を取得する。トレース情報は、例えば、プロセッサ１０６が実行した一連の命令をデバッグ機能部１０８が、デバッグに利用しやすいように、圧縮した情報である。デバッグ機能部１０８は、取得したトレース情報をデバッガー１０９に出力する。開発者は、デバッガー１０９経由でパーソナルコンピュータ１１０に入力されるトレース情報を元に、疑似プログラムを実行したプロセッサ１０６の動作を辿ることが可能となる。なお、このトレース機能は、開発時の製品（試作品）では有効とされているが、量産製品ではプログラムの各種情報を読み取られないように無効とされるのが一般的である。
【００２５】
キャリブレーション機能は、制御対象への制御に用いる制御パラメータの設定値をチューニングする機能である。制御パラメータはＲＯＭデータとも呼ばれ、量産製品ではフラッシュメモリ１０４に格納されるが、デバッグではＥＲＡＭ１０３上に保持されている。制御パラメータは例えば自動車の各部に対する制御に利用されるパラメータである。チューニングとは、それら制御パラメータの値を変更しながら結果を観測して最適な値を調べ、最適な制御パラメータを決定することである。開発者は、パーソナルコンピュータ１１０からデバッガー１０９を介してデバッグ機能部１０８を操作し、ＥＲＡＭ１０３上のＲＯＭデータをチューニングする。
【００２６】
エミュレーション機能は、疑似ソフトウェアをＥＲＡＭ１０３にダウンロードし、疑似ソフトウェアをプロセッサ１０６に実行させる機能である。エミュレーション機能では、プロセッサ１０６が動作中にフラッシュメモリ１０４をエミュレーション用メモリであるＥＲＡＭ１０３でエミュレートすることができる。つまり、プロセッサ１０６に、フラッシュメモリ１０４上の制御パラメータを利用して制御プログラムを実行させる代わりに、ＥＲＡＭ１０３上の制御パラメータを利用して疑似プログラムを実行させることができる。やはり、このエミュレーション機能は開発時の製品（試作品）では有効とされるが、量産製品ではプログラムの各種情報を読み取られたり、制御プログラムを改造されたりしないように無効とされるのが一般的である。
【００２７】
これらトレース機能、キャリブレーション機能、およびエミュレーション機能を組み合わせてデバッグが行われる。パーソナルコンピュータ１１０には、デバッガー１０９を利用するためのアプリケーションソフトウェア（以下「デバッガーアプリケーション」という）がインストールされている。また、パーソナルコンピュータ１１０には、開発対象である制御用のソフトウェアプログラム（以下「制御プログラム」ともいう）に関する各種情報を保持している。開発者は、パーソナルコンピュータ１１０にてデバッガーアプリケーションを実行し、制御プログラムの各種情報を参照しながら、エミュレーション機能、キャリブレーション機能、およびトレース機能を利用したデバッグを行う。
【００２８】
図２は、本実施形態における制御装置のソフトウェア開発におけるデバッグ環境を示す図である。図２を参照すると、デバッグ環境として、開発対象の制御装置２０１にはデバッガー２０９が接続され、更のそのデバッガー２０９にパーソナルコンピュータ（ＰＣ）２１０が接続されている。
【００２９】
制御装置２０１にはマイコン２０２が搭載されている。マイコン２０２は、図１に示した各部のそれぞれに対応するエミュレーションＲＡＭ（ＥＲＡＭ）２０３、フラッシュメモリ（Ｆｌａｓｈ）２０４、グローバルＲＡＭ（Ｇｌｏｂａｌ  ＲＡＭ）２０５、プロセッサ（ＣＰＵ）２０６、ＥＥＰＲＯＭ２０７、デバッグ機能部２０８、システムインターコネクト２１１、フラッシュインタフェース２１２、周辺バス２１３、および周辺機能部２１４に加え、更に、バススイッチ２２１、バススイッチ２２２、デバッグ用バス２２３、および通信機能部２２４を有している。ＥＲＡＭ２０３、ＥＥＰＲＯＭ２０７、およびデバッグ機能部２０８はデバッグ用に設けられた部分である。上述したデバッガー２０９はデバッグ機能部２０８に接続されている。
【００３０】
デバッグ用バス２２３はデバッグ用に設けられたバスである。バススイッチ２２１、２２２は、開発モードと量産モードでバス接続を切り替えるスイッチであり、プロセッサ２０６により切り替えが可能である。したがって、量産製品に用いる制御プログラムにおいてバススイッチ２２１、２２２を量産モードに設定すればよい。また、試作製品に用いる疑似プログラムにおいてバススイッチ２２１、２２２を開発モードに設定すればよい。
【００３１】
バススイッチ２２１は開発モードではオン（閉）となり、量産モードではオフ（開）となる。バススイッチ２２２は開発モードではオフ（開）となり、量産モードではオン（閉）となる。制御装置２０１の開発時の製品（試作品）ではマイコン２０２は開発モードで使用され、制御装置２０１の量産製品ではマイコン２０２は量産モードで使用される。図２に示されているバススイッチ２２１、２２２の状態は開発モードの状態、つまり図２の制御装置２０１は試作品である。
【００３２】
通信機能部２２４は診断ツール２２５を接続するインタフェース部である。通信機能部２２４は、診断ツール２２５からの要求に応じて、周辺バス２１３およびシステムインターコネクト２２１を介してＥＥＰＲＯＭ２０７にアクセスすることができる。診断ツール２２５は、通信機能部２２４と通信を行いてＥＥＰＲＯＭ２０７からデータを読みだすことができる。後述するように本実施形態では量産モードで取得されるトレース情報がＥＥＰＲＯＭ２０７に退避される。ＥＥＰＲＯＭ２０７に格納されたトレース情報は通信機能部２２４を介して診断ツール２２５により取り出すことができる。
【００３３】
プロセッサ２０６はシステムインターコネクト２１１に接続されている。システムインターコネクト２１１にはグローバルＲＡＭ２０５、ＥＥＰＲＯＭ２０７、フラッシュインタフェース２１２、周辺バス２１３、およびデバッグ機能部２０８が接続されている。
【００３４】
プロセッサ２０６はシステムインターコネクト２１１を介してグローバルＲＡＭ２０５およびＥＥＰＲＯＭ２０７にアクセスすることができる。
【００３５】
フラッシュインタフェース２１２には、フラッシュメモリ２０４が接続されており、さらにバススイッチ２２２を介してＥＲＡＭ２０３が接続されている。上述したようにバススイッチ２２２は量産モードでオフとなり、開発モードでオンとなる。バススイッチ２２１は量産モードでオンとなり、開発モードでオフとなる。そのため、プロセッサ２０６は、開発モードでは、システムインターコネクト２１１およびフラッシュインタフェース２１２を介してＥＲＡＭ２０３およびフラッシュメモリ２０４にアクセス可能である。また、プロセッサ２０６は、量産モードでは、システムインターコネクト２１１およびフラッシュインタフェース２１２を介してフラッシュメモリ２０４にアクセス可能であるが、ＥＲＡＭ２０３へはアクセスできない。
【００３６】
量産モードにおいてプロセッサ２０６が実行する制御プログラムはフラッシュメモリ２０４に搭載される。量産モードでは、プロセッサ２０６は、フラッシュメモリ２０４に格納された制御プログラムを実行する。プロセッサ２０６は、グローバルＲＡＭ２０５を利用しながら制御プログラムを実行する。
【００３７】
周辺バス２１３には複数の周辺機能部２１４および通信機能部２２４が接続されている。周辺機能部２１４は、制御装置２０１の制御に利用される各種機能部である。例えば、周辺機能部２１４は、制御対象あるいはその周辺に設置されたセンサからのセンサ入力を取得するセンサインタフェースである。センサ入力はセンサで観測された情報を示す入力信号である。あるいは、周辺機能部２１４は、制御対象への制御出力を送信する制御インタフェースである。制御出力は制御対象に対して指示する制御を示す出力信号である。プロセッサ２０６は、制御プログラムの処理に応じて適宜、周辺機能部２１４と信号を送受信する。
【００３８】
開発モードにおいてプロセッサ２０６が適宜実行する疑似プログラムは、書き換えが容易なＥＲＡＭ２０３に搭載される。開発モードでは、プロセッサ２０６は、ＥＲＡＭ２０３に格納された疑似プログラムを実行する。疑似プログラムは制御プログラムを疑似するソフトウェアプログラムである。
【００３９】
開発者は、デバッグ機能部２０８を、外部装置であるデバッガー２０９を経由してパーソナルコンピュータ２１０でモニタしたり、制御したりしながら、制御プログラムのデバッグを行う。デバッグでは開発者は疑似プログラムを書き換えながら繰り返し実行する。デバッグ機能部２０８を介してパーソナルコンピュータ２１０から実行可能なデバッグ機能として、トレース機能、キャリブレーション機能、およびエミュレーション機能がある。
【００４０】
トレース機能は、プロセッサ２０６により実行されるソフトウェアの動作をステップ毎に確認するために、プロセッサ２０６の動作および状態を、情報を蓄積する機能である。トレース機能において、デバッグ機能部２０８は、プロセッサバスであるシステムインターコネクト２１１上を流れる信号を観測し、プロセッサ２０６の動作を示すトレース情報を取得する。トレース情報は、例えば、プロセッサ２０６が実行した一連の命令をデバッグ機能部２０８が、デバッグに利用しやすいように、圧縮した情報である。デバッグ機能部２０８は、取得したトレース情報をデバッガー２０９に出力する。開発者は、デバッガー２０９経由でパーソナルコンピュータ２１０に入力されるトレース情報を元に、疑似プログラムを実行したプロセッサ２０６の動作を辿ることが可能となる。なお、このトレース機能は、開発時の製品（試作品）では有効とされているが、量産製品ではプログラムの各種情報を読み取られないように無効とされる。
【００４１】
キャリブレーション機能は、制御対象への制御に用いる制御パラメータの設定値をチューニングする機能である。制御パラメータはＲＯＭデータとも呼ばれ、量産製品ではフラッシュメモリ２０４に格納されるが、デバッグではＥＲＡＭ２０３上に保持されている。制御パラメータは例えば自動車の各部に対する制御に利用されるパラメータである。開発者は、パーソナルコンピュータ２１０からデバッガー２０９を介してデバッグ機能部２０８を操作し、ＥＲＡＭ２０３上のＲＯＭデータをチューニングする。
【００４２】
エミュレーション機能は、疑似ソフトウェアをＥＲＡＭ２０３にダウンロードし、疑似ソフトウェアをプロセッサ２０６に実行させる機能である。エミュレーション機能では、プロセッサ２０６が動作中にフラッシュメモリ２０４をエミュレーション用メモリであるＥＲＡＭ２０３でエミュレートすることができる。つまり、プロセッサ２０６に、フラッシュメモリ２０４上の制御パラメータを利用して制御プログラムを実行させる代わりに、ＥＲＡＭ２０３上の制御パラメータを利用して疑似プログラムを実行させることができる。エミュレーション機能は開発時の製品（試作品）では有効とされるが、量産製品ではプログラムの各種情報を読み取られたり、制御プログラムを改造されたりしないように無効とされる。
【００４３】
これらトレース機能、キャリブレーション機能、およびエミュレーション機能を組み合わせてデバッグが行われる。パーソナルコンピュータ２１０には、デバッガー２０９を利用するためのアプリケーションソフトウェア（以下「デバッガーアプリケーション」という）がインストールされている。また、パーソナルコンピュータ２１０には、開発対象である制御用のソフトウェアプログラム（以下「制御プログラム」ともいう）に関する各種情報を保持している。開発者は、パーソナルコンピュータ２１０にてデバッガーアプリケーションを実行し、制御プログラムの各種情報を参照しながら、エミュレーション機能、キャリブレーション機能、およびトレース機能を利用したデバッグを行う。
【００４４】
図３は、本実施形態における量産製品の制御装置を示すブロック図である。量産製品の制御装置２０１は図２に示した開発環境の制御装置２０１と同じマイコン２０２を搭載している。図３に示した量産製品の制御装置２０１はバススイッチ２２１、２２２の設定が図２に示した試作製品と異なる。また、量産製品の制御装置２０１は、図２の試作製品とは異なりデバッガー２０９と接続するインタフェースを持たない。
【００４５】
上述したように、量産モードあるいは量産製品では、バススイッチ２２２はオフとなり、バススイッチ２２１はオンとなる。そのため、プロセッサ２０６は、量産モードでは、システムインターコネクト２１１およびフラッシュインタフェース２１２を介してフラッシュメモリ２０４にアクセス可能であるが、ＥＲＡＭ２０３へはアクセスできない。その代り、ＥＲＡＭ２０３はデバッグ機能部２０８からアクセス可能である。
【００４６】
量産製品の制御装置２０１では、デバッグ機能部２０８は、システムインターコネクト２１１上を流れる信号を観測して取得したトレース情報をＥＲＡＭ２０３に記録する。デバッグ機能部２０８はプロセッサ２０６が正常に動作を続ける間はトレース情報を取得し、ＥＲＡＭ２０３上に構成したリングバッファに記録し続ける。
【００４７】
また、所定の異常が発生したとき、デバッグ機能部２０８はトレース情報の取得を停止し、そのときにＥＲＡＭ２０３に存在しているトレース情報をＥＥＰＲＯＭ２０７に退避させる。つまり、デバッグ機能部２０８は、ＥＲＡＭ２０３に記録されているトレース情報を読みだしてＥＥＰＲＯＭ２０７に書き込む。このＥＥＰＲＯＭ２０７に退避されたトレース情報は、診断ツール２２５により通信機能部２２４および周辺バス２１３を介して取り出すことができる。
【００４８】
以上のように、本実施形態では、開発モードにて疑似プログラムおよび制御パラメータが格納されるＥＲＡＭ２０３を用いて、量産モードでトレース情報を蓄積するので、トレース情報を記録するための記録装置の部品を別途追加しなくてよい。
【００４９】
また、量産製品の制御装置２０１と試作品の制御装置２０１はハードウェアとしてはデバッガー２０９へのインタフェースの有無が違うだけである。この違いはインタフェースの有無はコネクタを取り付けるか否かにより実現できるので試作品と量産製品を共通設計とすることができる。
【００５０】
以上説明したように、本実施形態のマイコン２０２は、量産モード（第１モード）では制御対象への制御を実現する所定の制御プログラムを実行し、開発モード（第２モード）では制御プログラムの動作を疑似する疑似プログラムを実行する情報処理装置である。そして、マイコン２０２は、リードオンリメモリ（フラッシュメモリ２０４）、ランダムアクセスメモリ（ＥＲＡＭ  ２０５）、プロセッサ２０６、およびデバッグ機能部２０８を有している。フラッシュメモリ２０４は制御プログラムを格納する。ＥＲＡＭ  ２０５は、開発モードにおいて疑似プログラムを保持する。プロセッサ２０６は、量産モードではフラッシュメモリ２０４の制御プログラムを実行し、開発モードではＥＲＡＭ  ２０５の疑似プログラムを実行する。デバッグ機能部２０８は、量産モードにおいてプロセッサ２０６の動作を表すトレース情報を取得してＥＲＡＭ２０３に記録し、開発モードにおいてトレース情報を取得して外部のデバッグ用装置（デバッガー２０９）に出力する。開発モード（第２モード）においてプロセッサが実行する疑似プログラムを保持させておくランダムアクセスメモリを、量産モード（第１モード）においてトレース情報を記録するのに利用するので、トレース情報を記録するための部品追加を抑えることができる。
【００５１】
また、ＥＲＡＭ２０３を、量産モードではデバッグ機能部２０８からアクセス可能にし、開発モードではプロセッサ２０６からアクセス可能にするバススイッチ２２１、２２２を更に有する。そのため、ＥＲＡＭ２０３をプロセッサ２０６とデバッグ機能部２０８のどちらに接続するかを切り替えるバススイッチ２２１、２２２を設けているので、疑似プログラムを用いる開発用と常時プロセッサ２０６の動作をトレースする量産用の両方に同一のマイコン２０２をスイッチ切り替えで兼用することができる。
【００５２】
また、バススイッチ２２１、２２２は、プロセッサ２０６から設定可能なレジスタに設定された値によって、ＥＲＡＭ２０３をデバッグ機能部２０８からアクセス可能するか、プロセッサ２０６からアクセス可能にするかを切り替える。バススイッチ２２１、２２２をソフトウェアにより切り替えることができるので、開発モード（第２モード）を使用する試作品と、量産モード（第１モード）を使用する量産品に共通のハードウェアを採用することができ、開発コストの削減、開発期間の短縮に寄与することができる。
【００５３】
また、制御プログラムは、ＥＲＡＭ２０３がデバッグ機能部２０８からアクセス可能となるようにレジスタを設定し、疑似プログラムは、ＥＲＡＭ２０３がプロセッサ２０６からアクセス可能となるようにレジスタを設定する。制御ソフトウェアと疑似プログラムとでレジスタに設定する値を変えることで、開発モード（第２モード）を使用する試作品と、量産モード（第１モード）を使用する量産品を実現することができる。
【００５４】
また、デバッグ機能部２０８は、第１モードにおいては、ＥＲＡＭ２０３にリングバッファを構成し、そのリングバッファにトレース情報を記録する。リングバッファを構成してトレース情報を記録するので、トレース情報の記録を継続的に実行することができ、継続的に生成されるトレース情報のうち新しい部分がランダムアクセスメモリに存在する状態を維持することができる。２０
【００５５】
また、マイコン２０２は、デバッグ機能部２０８からアクセス可能な退避用メモリ（ＥＥＰＲＯＭ）２０７を更に有し、デバッグ機能部２０８は、所定の条件が満たされたとき、ＥＲＡＭ２０３に記録されているトレース情報をＥＥＰＲＯＭ２０７に退避する。所定の条件が発生したらその直前のトレース情報が上書きされないようにリングバッファからＥＥＰＲＯＭ  ２０７に退避させるので、所望されるトレース情報を残しておくことができる。
【００５６】
また、所定の条件は所定の障害の発生である。これにより、障害発生時およびその直前のトレース情報を消去されないように保存することができる。
【００５７】
また、デバッグ機能部２０８は、レース情報を記録するＥＥＰＲＯＭ  ２０７のアドレスである退避先アドレスを管理しており、トレース情報をＥＥＰＲＯＭ  ２０７に記録すると、トレース情報を上書きしないように退避用アドレスを更新する。トレース情報を退避する毎に、そのトレース情報が上書きされないように、次にトレース情報を書き込む領域を更新していくので、複数の事象のトレース情報を取得することができる。
【００５８】
また、ＥＥＰＲＯＭ  ２０７はプロセッサ２０６の処理を介さず外部にデータを取り出し可能である。このように、プロセッサ２０６の処理を介さずにデータを取り出すことができるので、異常な状態でもデータを容易に取り出して異常の原因分析に供することができる。
【００５９】
また、本実施形態による制御装置２０１の制御対象は自動車である。小型、軽量、低コスト化が望まれる自動車搭載に適した処理装置を実現することができる。
【００６０】
以下、本実施形態による制御装置２０１の処理について説明する。
【００６１】
図４は、本実施形態におけるデバッグ時の動作を示すフローチャートである。
【００６２】
まず、デバッグ機能部２０８は、マイコン２０２が搭載されている制御装置２０１の電源が投入されると（ステップ３０１）、制御プログラムあるいは疑似プログラムがバススイッチ２２１、２２２を設定する（ステップ３０２）。
【００６３】
デバッグ機能部２０８は、マイコン２０２の設定が量産モードであるか否か判定する（ステップ３０３）。量産モードでなく開発モードであれば、デバッグ機能部２０８は、トレース情報を取得してデバッガー２０９に出力する開発モードの動作を行う（ステップ３０４）。
【００６４】
一方、マイコン２０２の設定が量産モードであれば、デバッグ機能部２０８は、トレース情報を取得し、ＥＲＡＭ２０３に記録する（ステップ３０５）。デバッグ機能部２０８は、異常が検出されたか否か判定する（ステップ３０６）。異常が検出されない間は、デバッグ機能部２０８はトレース情報を取得し、ＥＲＡＭ２０３に記録するという動作を繰り返す。このときデバッグ機能部２０８はＥＲＡＭ２０３に所定サイズのリングバッファを構成し、そこにトレージ情報を書き込む。
【００６５】
一方、異常が検出されたときには、デバッグ機能部２０８は、その時点でＥＲＡＭ２０３に存在しているトレース情報をＥＥＰＲＯＭ２０７に転送し、記録させる。そして、異常が繰り返し検出したときに退避したトレース情報が上書きされしまうことがないように、記録先のアドレスを変更し、ステップ３０５に記載されている通常動作に戻る（ステップ３０８）。
【００６６】
なお、ＥＥＰＲＯＭ２０７に記録されたトレース情報は、マイコン２０２の通信機能部２２４を介し、外部機器である診断ツール２１５を使用して外部に取り出すことができる。
【符号の説明】
【００６７】
１０１…制御装置、１０２…マイコン、１０３…ＥＲＡＭ、１０４…フラッシュメモリ、１０５…グローバルＲＡＭ、１０６…プロセッサ、１０７…ＥＥＰＲＯＭ、１０８…デバッグ機能部、１０９…デバッガー、１１０…パーソナルコンピュータ、１１１…システムインターコネクト、１１２…フラッシュインタフェース、１１３…周辺バス、１１４…周辺機能部、２０１…制御装置、２０２…マイコン、２０３…ＥＲＡＭ、２０４…フラッシュメモリ、２０５…グローバルＲＡＭ、２０６…プロセッサ、２０７…ＥＥＰＲＯＭ、２０８…デバッグ機能部、２０９…デバッガー、２１０…パーソナルコンピュータ、２１１…システムインターコネクト、２１２…フラッシュインタフェース、２１３…周辺バス、２１４…周辺機能部、２１５…診断ツール、２２１…バススイッチ、２２２…バススイッチ、２２３…デバッグ用バス、２２４…通信機能部、２２５…診断ツール
【図１】
2018132914.tif 000003
【図２】
2018132914.tif 000004
【図３】
2018132914.tif 000005
【図４】
2018132914.tif 000006