(57)【要約】【課題】アサーションイベントが発生した際のログを適切に記録することができつつも、パーティショニングを実現することを課題とする。【解決手段】  互いに関連する複数のＣＰＵコアからのメッセージを統一的にロギングする車載用制御装置のロギングシステムであって、  各ＣＰＵコアからのメッセージ出力は各ＣＰＵコア固有のシフトレジスタに入力されるとともに、該シフトレジスタに情報が格納された旨のイベント出力を各ＣＰＵコアから外部に出力し、前記シフトレジスタはそれぞれのＣＰＵ分のレジスタが直列に縦続接続されるとともに、前記イベント出力の複数の論理和によってロギング動作が励起され、クロック同期により前記複数のシフトレジスタの情報をシリアル通信にて一括して読み出し、読み出したログ情報を記憶装置に格納することを特徴とする。【選択図】図１
2015095061.tif 000002
【特許請求の範囲】
【請求項１】
互いに関連する複数のＣＰＵコアからのメッセージを統一的にロギングする車載用制御装置のロギングシステムであって、
各ＣＰＵコアからのメッセージ出力は各ＣＰＵコア固有のシフトレジスタに入力されるとともに、該シフトレジスタに情報が格納された旨のイベント出力を各ＣＰＵコアから外部に出力し、前記シフトレジスタはそれぞれのＣＰＵ分のレジスタが直列に縦続接続されるとともに、前記イベント出力の複数の論理和によってロギング動作が励起され、クロック同期により前記複数のシフトレジスタの情報をシリアル通信にて一括して読み出し、読み出したログ情報を記憶装置に格納することを特徴とする車載用制御装置のロギングシステム。
【請求項２】
前記各ＣＰＵコアに固有のシフトレジスタは、当該ＣＰＵのメモリ空間のみに配置されており別ＣＰＵコアからはアクセス不可能であること、およびロギング結果を格納する記憶装置は全てのＣＰＵコアより直接書き込み不可能であることを特徴とする
請求項１記載の車載用制御装置のロギングシステム。
【請求項３】
前記記録装置内にイベント発生時間を計時する時計を内包する構成であって、前記イベント出力の複数の論理和によってロギング動作が励起されるに際して、該時計のタイムスタンプをログ結果に付加することを特徴とする
請求項１記載の車載用制御装置のロギングシステム。
【請求項４】
前記各ＣＰＵコア固有のシフトレジスタは、シリアル・ペリフェラル・インタフェース（Ｓｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ，  ＳＰＩ）を用いることを特徴とする
請求項１記載の車載用制御装置のロギングシステム。
【請求項５】
前記各ＣＰＵコア固有のシフトレジスタは、ＪＴＡＧ（Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ）のオプションレジスタを用いることを特徴とする
請求項１記載の車載用制御装置のロギングシステム。
【請求項６】
前記記録装置は、複数のＣＰＵで構成されるＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）システムに対して後付けおよび取り外し可能な別体として構成され、少なくとも記録装置側が出力する通信クロック出力、複数ＣＰＵが搭載されるＥＣＵシステム側が出力するシリアル通信出力、同複数ＣＰＵが搭載されるＥＣＵシステム側が出力するイベントの論理和出力、の最小３信号で結線されることを特徴とする
請求項１記載の車載用制御装置のロギングシステム。
【請求項７】
前記各ＣＰＵコア固有のシフトレジスタを経由してログ情報として収集される内容は、ソフトウェア・アサーション・ログおよびそれに準じる制御動作上の異常警告で、機能安全上のエビデンス結果と見なし得る情報内容であることを特徴とする
請求項１記載の車載用制御装置のロギングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車載ソフトウェアの動作ログを収集するロギングシステムに関する。
【背景技術】
【０００２】
近年車載用機能安全規格ＩＳＯ２６２６２が制定されるとともに、車載用機器に対する安全性・信頼性に対する要求の厳格化や国際規格への準拠の義務化が進展している。特に車載ソフトウェアに対しては、車の挙動の中核的特性を担うことともに、その全体的な（網羅的な）挙動解析の困難さから、新たな検証手法の登場が待たれている。
【０００３】
また、昨今車載用電子機器（ＥＣＵ：Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔと呼ばれる）が一つの車に複数台搭載されており、車載ネットワークを通じて相互に影響を及ぼしあって全体的な動作を実行している。したがって、当該車載ソフトウェアの検証は、単一ＣＰＵのときと比較して格段に難しくなっている。この状況は複数ＥＣＵを経済効果のために集約した統合化ＥＣＵ（構成基盤の上に複数のＣＰＵが搭載されている）もしくはマルチコアＣＰＵを採用してコアごとに別々の処理を実行して性能を向上させたＥＣＵでも同じである。検証の難しさは、複数のＣＰＵ（もしくはコア）の挙動を同一時間軸上で並行に追跡する困難さに起因している。
【０００４】
加えて製品の市場リリースは必ずしもソフトウェア検証の終了という確証に基づいて、それ以降に設定されるものではない。すると、量産段階において稀に不具合が組み込みソフトウェアに含まれ得る状態で出荷されるおそれもある。
【０００５】
しかしながら、そのような稀頻度の不具合が発生したときに如何に乗員を保護するかは前述の機能安全の範疇であり、これを記録して次回の製品開発（差分開発による機能と信頼性の向上）に如何に活用するかは機能安全ライフサイクルの活動に関わる。この鍵を握っている手法は、ソフトウェア挙動のロギングシステムである。
【０００６】
外界の情報とそれに対応するソフトウェア挙動のロギングは人工衛星や探査衛星などの宇宙機で知られた手法であり車載応用の用途では一般化していない。しかしながら、前述の機能安全対応手法として、もしくはマルチコア・マルチＣＰＵの検証手法の一つとして普及すると思われる。
【０００７】
その際、実現の決め手になるのはコスト上昇分と装置の付け外しの簡便さに左右されると思われる。前述の宇宙機の場合は、事故が発生したときの逸失利益を考慮すると、ロギングシステムを追加することのコストなどは微々たるものであろう。
【０００８】
しかしながら自動車のような耐久消費財についてはできるだけコストが安いことと、オプションとして追加設定するときの接続機構の単純さが求められる。
【０００９】
従来技術は、必ずしも車載機器応用では無いが、例えば特許文献１に示すように複数のＣＰＵに対して高分解能の（高分解能として外挿演算可能な）時計1個を設置しておき統一的な時系列を考慮してログを採取する技術が知られている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特許第３３９１９９０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、上記特許文献１では、複数のＣＰＵがその動作ログを吐き出すエリアが共通ＲＡＭに設定されている。これはどういうことかというと、複数のＣＰＵが共通ＲＡＭを介して互いの動作干渉を引き起こす可能性がある。また、異なるＣＰＵが自分と関係の無い動作ログを書き換える可能性がある。
【００１２】
機能安全にはソフトウェア・パーティショニングという概念が導入されていて、特定の不具合動作を起こす機構及び資源が他と隔離されており、不具合の影響が他に波及しないことが重要となる。この点から見て公知例のロギングシステムは落第であって、ロギングシステムを付加したためにパーティショニング機能が逸脱を引き起こしている。
【００１３】
そこで、本発明は、アサーションイベントが発生した際のログを適切に記録することができつつも、パーティショニングを実現することを課題とする。
上記機能安全上のパーティショニングに関する課題、もしくは実装時に問題となる機器接続の課題を解決するためになされたものである。
【課題を解決するための手段】
【００１４】
本発明は、互いに関連する複数のＣＰＵコアからのメッセージを統一的にロギングする車載用制御装置のロギングシステムであって、各ＣＰＵコアからのメッセージ出力は各ＣＰＵコア固有のシフトレジスタに入力されるとともに、該シフトレジスタに情報が格納された旨のイベント出力を各ＣＰＵコアから外部に出力し、前記シフトレジスタはそれぞれのＣＰＵ分のレジスタが直列に縦続接続されるとともに、前記イベント出力の複数の論理和によってロギング動作が励起され、クロック同期により前記複数のシフトレジスタの情報をシリアル通信にて一括して読み出し、読み出したログ情報を記憶装置に格納することを特徴とする。
【発明の効果】
【００１５】
本発明に係るロギングシステムによれば、複数のＣＰＵ及びロギング装置間をシリアルバスで接続しているため、特定のＣＰＵが別のＣＰＵの資源（別体であるロギング装置自体の資源も含めて）にアクセスすることができず、干渉することがない。従って、アサーションイベントが発生した際のログを適切に記録することができつつも、パーティショニングを実現することができる。
【図面の簡単な説明】
【００１６】
【図１】実施形態１に係るロギングシステムの構成図である。
【図２】実施形態１に係るログメッセージの出力内容を示すプログラムリストである。
【図３】実施形態１に係るＣＰＵの内部機構を示すブロック図である。
【図４】実施形態２に係るＣＰＵの内部機構を示すブロック図である。
【図５】実施形態１および２に係る複数ＣＰＵ間の外部配線およびロギング装置間の配線を示す接続図である。
【図６】実施形態１および２に係るロギング装置の内部機構を示すブロック図である。
【図７】ロギング装置の内部動作手順を示すフローチャートである。
【発明を実施するための形態】
【００１７】
＜実施の形態１＞
本実施形態に係るロギングシステムは、ＣＰＵからのログメッセージを格納するレジスタをシフトレジスタとして構成し、複数のＣＰＵで該複数のシフトレジスタを縦列接続してシリアルバスを構成し、メッセージの一括ダンプを行うものである。一括ダンプのタイミングは少なくとも一つ以上のＣＰＵがログメッセージを該シフトレジスタに書き込んだイベントタイミングの論理和で行われ、そのときにメッセージに押下されるタイムスタンプは、ロギングシステム側に設置された唯一の時計により行われる。以下に具体的に説明する。
【００１８】
図1は、本発明の実施例の一つを図示したものである。ＣＰＵ１１０・１２０（もしくはＣＰＵコア１１１・１２１）は、図1では２組存在しているが、２組に限ることなく３組以上存在しても良い。
【００１９】
各ＣＰＵのメッセージ送出用に用いるシフトレジスタ１１２・１２２は、直列に縦列接続され同一クロックでシフト動作を行うように構成される。シリアル接続すなわちシリアルバスを用いているので、操作の主体はバスマスタたる（クロック源１４２を供給する）ロギング装置１４０にあり、特定のＣＰＵが他のＣＰＵもしくはロギング装置の動作に干渉することはできない。したがって機能安全上のソフトウェア・パーテショニングは完全に確保されることになる。
【００２０】
また、ロギングすべき対象のＣＰＵが増加しても、直列接続のシフトレジスタの数が増えるだけで、一括ダンプの方法は統一的なものが使える。（発信機１４２から出すパルス数と、シリアル・パラレル変換器１４５の段数およびイベント論理和回路１３０の入力数は変化するが、アルゴリズムの本質は変わりない。）
ＣＰＵコア１１１・１２１は、ログ情報をシフトレジスタ１１２・１２２に書くのと同じタイミングでイベント出力１１３・１２３を発生させる。この信号は、シフレジスタにログとして意味のあるデータが格納されているので、ロギング装置１４０に記録を促すオンデマンド信号となる。これらの信号は論理和回路１３０で論理和が取られロギング装置１４０に伝えられる。
【００２１】
すなわち少なくとも一つのログ情報がシフトレジスタに準備された時に一括シリアルダンプが実行されるのであって、ログ情報が出力されていないシフトレジスタからの情報は、後で判別可能な無効な初期値データとなる。
【００２２】
この初期値データはシフトレジスタ初期化データ部１４３が発生させ、予め全てのシフトレジスタに格納されていたものである。この初期値格納の仕組みは、前述の一括シリアルダンプの動作が逐次実行される間に、シフト動作により空いたビットの隙間を埋めるようにシフトアウトの反対桁より該初期値が格納され、シリアルダンプが完了したときにはシフトレジスタの全桁が自動的に初期化される機構による。
【００２３】
したがって、ログデータは、少なくとも一つのＣＰＵメッセージの桁（１５１参照）に有効なデータが入っており、残りのＣＰＵの桁は無効か、同時にログタイミングが重なった場合、複数のＣＰＵ桁に有効データが入っているかの複数のバリエーションが発生することになる。何れにせよ、ログタイミングが発生した時系列順で確実にデータが収集され、時間の前後関係で矛盾が発生しないことはこの仕組みから自明となる。
【００２４】
ロギング装置１４０は、前述のとおり複数のシフトレジスタに格納されたメッセージをシリアルバス経由で読み出し、シリアル・パラレル変換器１４５にてキャラクタデータに変換する。その際、タイマー１４４によってオンデマンド信号（イベント論理和１３０の出力信号）が発生したときのタイムスタンプを前述のデータとともに格納する。これにより、該タイムスタンプを目印として時系列順にログを追跡し解釈することが容易となる。
【００２５】
図２は、各ＣＰＵが実行する組み込みソフトウェアソースコード２００の実例を示したものである。この中に異常があればログを取りたい条件をアサーション命令として埋め込んでおく。例えばアサーション命令２０１は、アサーションの一例であって、整数割り算の除数が０であるか、商がオーバフローしそうな時にａｓｓｅｒｔ関数のカッコ内の条件式が偽となる。このときａｓｓｅｒｔ関数は、シフトレジスタ１１２もしくは１２２にメッセージを書き込み、該当ＣＰＵのイベント出力端子１１３・１２３によりロギング装置１４０に読み出しを要求するよう関数ライブラリを構成しておく。
【００２６】
アサーションログ２１０は、ロギング装置１４０が保存した情報の一例であって、その中でアサーション命令２０１によりログダンプが発生したときの記録（複数ＣＰＵに対して一括採集されタイムスタンプが押される）を２１１に、またその中でアサーション命令２０１のみに起因する情報を２１２に示す。
【００２７】
アサーションメッセージ２１２では、一例としてアサーション命令で偽となったときの条件式、そのプログラムファイル名、行番号を出力してソフトウェア不具合を特定しやすいようにしている。図中“（ｔｉｍｅ＿ｓｔａｍｐ）”はロギング装置１４０が付加したタイムスタンプ値であり、“ＣＰＵ＿Ａ”，“ＣＰＵ＿Ｂ”もどちらのＣＰＵが発したログメッセージかわかり易くするためロギング装置１４０が付加した目印である。
【００２８】
図２では、“ＣＰＵ＿Ａ”に対してアサーションが発生し、“ＣＰＵ＿Ｂ”に対して何もログイベントが発生していないので、“ＣＰＵ＿Ｂ”のメッセージは“ｎｏｎｅ”となっている。
【００２９】
図３は、シフトレジスタ１１２・１２２をＣＰＵの周辺デバイスの一つであるシリアル・ペリフェラル・インタフェース（ＳＰＩ：Ｓｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ）で実現したものである。シリアル・ペリフェラル・インタフェースはクロック同期のシリアル通信に利用可能な汎用デバイスで、外部クロック源３０６に同期してシリアル入力３０４から外部データをシフトインし、シリアル出力３０５から内部データをシフトアウトすることができる。したがって、シフトレジスタのカスケード接続に適する。シリアル・ペリフェラル・インタフェースのシフトレジスタ１１２自体は内部バスを通じてＣＰＵコア１１１よりデータを転送可能で、このデータを前述のアサーションログとすればよい。
【００３０】
図２の２０１で示すアサーション命令は図３ではプログラムメモリ（ＲＯＭ）３０１の中に記述されていて（２０１の命令相当のマシン語が格納されているということ）アサーション条件が発生したときにそのメッセージをシフトレジスタ１１２に書き込むとともに、周辺Ｉ／Ｏデバイス３０３を通じてログダンプ要求をイベント出力端子１１３より外部出力する。イベント出力端子１１３も元からＣＰＵに存在しているデジタル信号入出力３０７端子群の一つであるので本発明は現状のＣＰＵで容易に実現可能である。
＜実施の形態２＞
図４は、本発明の別の実施形態を示したもので、シフトレジスタとしてＪＴＡＧ（Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ）のオプションレジスタ１１２を利用したものである。
【００３１】
ＪＴＡＧは、集積回路や基板の検査、デバッグなどに使える、バウンダリスキャンテストやテストアクセスポートの標準  ＩＥＥＥ  １１４９．１  の通称である。半導体技術の進歩により集積回路チップのピン間隔も狭くなりプローブを立てての検査が困難になってきている。表面実装のＢＧＡ（ｂａｌｌ  ｇｒｉｄ  ａｒｒａｙ）などのパッケージに至っては、物理的に不可能である。そのため検査時に、チップ内部の回路を数珠繋ぎにして内部状態を順番に読み出すしくみが考え出された。これをバウンダリスキャンテスト（Ｂｏｕｎｄａｒｙ  Ｓｃａｎ  Ｔｅｓｔ）といいそれを規格化したのがＪＴＡＧである。１９９０年にＩＥＥＥ  １１４９．１として標準化されている。
【００３２】
ＪＴＡＧにはオプションレジスタというデバイス固有のレジスタが存在し、これを実装メーカが自由に機能拡張して使ってよいことになっている。これをシフトレジスタ１１２相当に用いれば本発明をＪＴＡＧの機能に沿った形で実現することができる。
【００３３】
通常、ＪＴＡＧのデバイスはＣＰＵコア１１１と情報のやり取りができるような内部バス接続を行っていない。これはＪＴＡＧがＩＣチップとプリント基板との電気的接続を検証する目的で使用されていることによる。
【００３４】
ただし、ＪＴＡＧをオンチップＩＣＥ（Ｉｎ−ｃｉｒｃｕｉｔ  ｅｍｕｌａｔｏｒ）に拡張しているＣＰＵ実装メーカも存在しており、そのときにはＣＰＵ内部バスに接続してレジスタ値を読み書きしたり、制御メモリ（ＲＡＭ）３０２の内容を読み書きしたりできるものもある。
【００３５】
しかしその時においてもＣＰＵコア１１１とＪＴＡＧデバイスとは本来無関係であって本発明向けに拡張するにはＣＰＵコア１１１がシフトレジスタ（オプションレジスタ）１１２内容を操作可能のように改造しなければならない。
【００３６】
また、従来のＪＴＡＧ・オンチップＩＣＥでは、ＣＰＵのファームウェアが定期的なバスタイミングでＣＰＵ周辺の変数データ（レジスタやＲＡＭ値）をＪＴＡＧの拡張レジスタに書き込むタイプのものがある。この場合にはＣＰＵ内部バスとＪＴＡＧとは既に接続されているので、ＣＰＵが実行するプログラミングモデルからＪＴＡＧレジスタを可視（操作可能）にするような命令語の拡張をするだけで済む。こうすることによってプログラムメモリ３０１に格納されたアサーション命令２０１の結果をアサーションメッセージ２１２としてＪＴＡＧ経由で出力することができる。
【００３７】
シフトレジスタ（オプションレジスタ）１１２の内容は、ＪＴＡＧのＴｅｓｔ  Ｄａｔａ  Ｏｕｔ端子４０５と次段に接続された同様のＪＴＡＧのＴｅｓｔ  Ｄａｔａ  Ｉｎ端子４０４を経由してシリアルダンプされることは図３のシリアル・ペリフェラル・インタフェースと同様である。またそのときの外部クロックはＪＴＡＧのＴｅｓｔ  Ｃｌｏｃｋ端子４０６の信号が使われる。
【００３８】
このモードへのＪＴＡＧの遷移はＪＴＡＧのＴＡＰコントローラ４１２の機能を用いて行われる。状態の遷移は、ＪＴＡＧのＴｅｓｔ  Ｃｌｏｃｋ端子４０６、ＪＴＡＧのＴｅｓｔ  Ｍｏｄｅ  Ｓｅｌｅｃｔ端子４０７、ＪＴＡＧのＴｅｓｔ  Ｒｅｓｅｔ端子４０８の信号の組み合わせにより行われる。
【００３９】
ＪＴＡＧの機能はＣＰＵにとっては検査用の隠し機能であって、図３の実施形態１のようにＣＰＵ周辺デバイスであるシリアル・ペリフェラル・インタフェースを本発明用に明示的に消費しないという利点がある。
【００４０】
これは量産移行後の市場におけるフィールドテスト等で、ロギングシステムを一時的に後付し、ＪＴＡＧポートにアクセスして動作ログを採取するという目的に適する
＜実施の形態１および２に共通な項目＞
以下、実施の形態１および２に共通なシフトレジスタのカスケード接続の一実施例やロギング装置の一実施例について記述する。
【００４１】
図５は、前述のＣＰＵ個々のシフトレジスタおよびロギング装置１４０との接続方法を示したものである。
【００４２】
シフトレジスタの接続は直列接続（カスケード接続）であって、ロギング装置１４０のシリアルバス出力端子ＤＯ５０１よりＣＰＵ１１０のシフトレジスタ入力端子５０２、シフトレジスタ出力端子５０３よりＣＰＵ１２０のシフトレジスタ入力端子５０４、シフトレジスタ出力端子５０５よりロギング装置１４０のシリアルバス入力端子ＤＩ５０６へと接続を行う。これは転送するＣＰＵの段数が増加してもカスケード数が変わるだけで方式そのものに変化は無い。
【００４３】
シフトレジスタ１１２・１２２がシフト動作を行うクロック源はロギング装置１４０が提供し（すなわちシリアルバスのバスマスタになるということ）ロギング装置のクロック出力端子５０８から供出したクロックをＣＰＵ１１０のシリアルバスクロック入力５０９と、ＣＰＵ１２０のシリアルバスクロック入力５１０とに並列に導入する。シフトレジスタの数が増えても並列導入は同じである。
【００４４】
ログのダンプ要求を伝えるイベント出力は、各々のＣＰＵ１１０・１２０よりイベント出力端子１１３・１２３を経てイベント論理和回路１３０の入力になる。シフトレジスタの数が増えてもイベント論理和回路１３０の入力数を増やせばよい。したがって、最速のイベント発生タイミングを表わす要求がロギング装置のイベント入力端子５０７に伝えられることになる。
【００４５】
図６にロギング装置１４０の内部ブロック図を、図７にロギング装置内部のシーケンサー１４１の動作手順をフローチャートの形で示す。説明の便宜の点から図７のフローチャートに従って解説を行い、その都度図６の内部ブロック図の対応を説明する。
【００４６】
図７のアルゴリズムは図６のシーケンサー１４１内部で実装されているものであり、各構成、機能、処理部などは、それらの全部または一部を、例えば集積回路で設計することによりハードウェアとして実現することもできるし、プロセッサがそれぞれの機能を実現するプログラムを実行することによりソフトウェアとして実現することもできる。
【００４７】
図７・Ｓ７０１のステップでは、図６のロギング装置のイベント入力５０７にログのダンプ要求が送られてくるのを待ち続ける。要求が無ければ再度Ｓ７０１に入り直して入力をチェックし続け、あればステップＳ７０２への遷移を行う。
【００４８】
Ｓ７０２では、ダンプ要求が発生した時刻をロギング装置内のタイムスタンプ生成用時計１４４から採取し、ログに付加する準備を行う。次にステップＳ７０３でシリアルダンプのために規定クロック数パルスを出力する準備を行う。具体的には発信機（クロック供給源）１４２を起動し、クロックカウント変数をリセット（０に初期化）する。
【００４９】
ここでクロックカウント変数とはシリアルバスで接続されている機構全体を今まで何クロック分シフトしたかのカウントを行う変数のことである。
【００５０】
続く判定ステップＳ７０４では規定クロック数シリアルダンプが行われたかがチェックされシリアルダンプ継続中ならばステップＳ７０５とステップＳ７０６を実行する。
【００５１】
ステップＳ７０５では、発信機１４２より１クロック分（１ｂｉｔ分）の信号をロギング装置のクロック出力５０８を経由してシフトレジスタ１１２・１２２に供給する。この同一クロック信号はシリアル・パラレル変換器１４５にも内部的に供給されている。このとき、シフトレジスタ１１２・１２２よりシフトアウトした１ｂｉｔデータが、ロギング装置のシリアルバス入力５０６を経由してシリアル・パラレル変換器１４５に入り、反対にシフトレジスタの空いたｂｉｔにシフトレジスタ初期化データ１４３の値（初期化データであるので図６ではｎｕｌｌ  ｄａｔａと表記）がシフトインされる。
【００５２】
続くステップＳ７０６ではクロックカウント変数をインクリメントし判定ステップＳ７０４に戻る。
【００５３】
規定出力分クロックを出力すると、ステップＳ７０７に移るが、このときログ情報の所在はどうなっているかというと、ロギング開始前にシフトレジスタ１１２・１２２に入っていたデータは全てシリアル・パラレル変換器１４５に転送され、変わりにシフトレジスタはシフトレジスタ初期化データ１４３の値で埋め尽くされた状態になっている。
【００５４】
したがって、続くステップＳ７０７ではシリアル・パラレル変換器１４５でアサーションログをｂｉｔ列からキャラクタベースに変換（シリアルからパラレルに復元）しロギング装置の内部パラレルバス６０１に出力する準備を行う。
【００５５】
続くステップＳ７０８では前述のタイムスタンプとキャラクタベースのアサーションログを組み合わせてログ文字列データ１５１を生成しファイルドライバ６０２を経由してログ記録用フラッシュメモリ６０３に内容を書き出す。
【００５６】
これら発信機（クロック供給源）１４２、シフトレジスタ初期化データ１４３、タイムスタンプ生成用時計１４４、シリアル・パラレル変換器１４５、ファイルドライバ６０２等も前述のシーケンサー１４１と同様に、各構成、機能、処理部などは、それらの全部または一部を、例えば集積回路で設計することによりハードウェアとして実現することもできるし、プロセッサがそれぞれの機能を実現するプログラムを実行することによりソフトウェアとして実現することもできる。
【００５７】
ログ記録用フラッシュメモリ６０３にイベント単位でのログ文字列データ１５１を書き出した後は、処理は再びステップＳ７０１に戻りイベント入力５０７を待ち続けることになる。
【００５８】
以上、本発明の実施形態１及び２によれば、従来の機能安全上のパーティショニングに関する課題、もしくは実装時に問題となる機器接続の課題を解決することができる。
【００５９】
即ち、従来であれば、ロギングエリア用共通ＲＡＭをＣＰＵから直接書き込み可能なメモリ空間にマッピングしたため、ロギングエリアをＣＰＵバスに直結しなければならなくなっており、したがって、配線接続量がそれなりに増加しロギング装置だけの後付や取り外しが簡単に行えない構成となっていた。一方、本実施形態によれば、機能安全のパーティショニングに配慮してマルチコア・マルチＣＰＵのロギング装置を簡便に構成することができる。
【００６０】
シリアルバスと（ログ要求）イベントの論理和信号を利用しているので、事象発生の時系列の前後関係を厳密に記録することができて、各ＣＰＵとロギング装置との結線数が少なく後付け取り外しが容易なロギング装置とすることができる。
【００６１】
タイムスタンプ用時計をロギング装置側に保持しているので、各ＣＰＵの内部時間に係らずグローバル時間を管理できて、なおかつ、ロギング機能を追加したときのコスト上昇分をロギング装置側に集約することができ、コスト上昇の少ない装置を構成することができる。
【符号の説明】
【００６２】
１１０・１２０：ＣＰＵ、１１１・１２１：ＣＰＵコア、１１２・１２２：シフトレジスタ、１１３・１２３：イベント出力端子、１３０：イベント論理和回路、１４０：ロギング装置、１４１：シーケンサー、１４２：発信機（クロック供給源）、１４３：シフトレジスタ初期化データ、１４４：タイムスタンプ生成用時計、１４５：シリアル・パラレル変換器、１５０：ログデータ、１５１：該当出力データ記述、２００：組み込みソフトウェアソースコード、２０１：アサーション命令、２１０：アサーションログ、２１１・２１２：アサーションメッセージ、３０１：プログラムメモリ（ＲＯＭ）、３０２：制御メモリ（ＲＡＭ）、３０３：周辺入出力デバイス、３０４：ＳＰＩ（シリアルペリフェラルインターフェース）のシリアル入力端子、３０５：ＳＰＩのシリアル出力端子、３０６：ＳＰＩのシリアルクロック、３０７：ＣＰＵの入出力端子、４０４：ＪＴＡＧのＴｅｓｔ  Ｄａｔａ  Ｉｎ端子、４０５：ＪＴＡＧのＴｅｓｔ  Ｄａｔａ  Ｏｕｔ端子、４０６：ＪＴＡＧのＴｅｓｔ  Ｃｌｏｃｋ端子、４０７：ＪＴＡＧのＴｅｓｔ  Ｍｏｄｅ  Ｓｅｌｅｃｔ端子、４０８：ＪＴＡＧのＴｅｓｔ  Ｒｅｓｅｔ端子、４１０：ＪＴＡＧのインストラクションレジスタ、４１１：ＪＴＡＧのバイパスレジスタ、４１２：ＪＴＡＧのＴＡＰコントローラ、４１３：ＪＴＡＧのセル、５０１：ロギング装置のシリアルバス出力、５０２・５０３・５０４・５０５：各ＣＰＵのシリアルバス入出力とリンク配線、５０６：ロギング装置のシリアルバス入力、５０７：ロギング装置のイベント入力、５０８：ロギング装置のクロック出力、５０９・５１０：各ＣＰＵのシリアルバスクロック入力、６０１：ロギング装置の内部パラレルバス、６０２：ファイルドライバ、６０３：ログ記録用フラッシュメモリ。
【図１】
2015095061.tif 000003
【図２】
2015095061.tif 000004
【図３】
2015095061.tif 000005
【図４】
2015095061.tif 000006
【図５】
2015095061.tif 000007
【図６】
2015095061.tif 000008
【図７】
2015095061.tif 000009