DT10をご愛用いただいているお客様には、マルチCPUや冗長化システムといった複数CPUを搭載する製品を
開発するケースが増えているようで、こんな要望も増えてきています。
「複数CPUを搭載したシステムで、それぞれのCPUを同時にトレースしたい。」
「それぞれのCPUの実行経路を時間を同期させて解析したい。」

通常、1つのCPUに対して、DT10で実行経路のトレースはできますが、
当時、複数のCPUを同時にトレースするには、お客様にとって負担となる提案しかありませんでした。
お客様の課題解決に至った試作機の開発から製品化までのエピソードをご紹介します。

CONTENTS

・複数CPUを搭載する製品開発のデバッグにおけるお客様の課題
・当時はお客様に負担となる提案しかできなかった…
・ハートランドの行動指針を体現!すぐに試作機を作ってみた!
・ついにお客様の課題解決
・ピンチをチャンスに!新たなデバッグ環境を提案
・まとめ

複数CPUを搭載する製品開発のデバッグにおけるお客様の課題

お客様は、以下のような課題をもっていました。

・複数のCPUで同一の処理を行う冗長化システムにおいて、各CPUが同じタイミングで処理が
 実行されているかを確認したい。また、異なる動作をしたCPUで何が起きたのかを特定したい。
・親子関係にあるマルチCPUのシステムで、片方の処理を待たせている状況や処理順番を可視化して、
 システム全体のパフォーマンスの改善を検討したい。
・デッドロックや各CPUがどういった順番で実行されているかを可視化して、
 どこで想定外の動きをしているかの不具合解析を容易にしたい。

従来、複数CPUの動きを検証できるツールもなく、各CPUにJTAGを接続したとしても、
それぞれのトレース結果を同期させることや長時間実行しないと再現しない不具合の検証は、
大変困難だったようです。

そこで、動的テストツールDT10に白羽の矢が立った訳ですが…

当時はお客様に負担となる提案しかできなかった…

当時、これらの課題をDT10を使って解決するといった提案は、
「CPUの数の分だけ、それぞれにDT10でデータを取得する環境を構築する」といったものでした。
つまり、DT10アプリケーションをインストールしたPCとDynamicTracerを、
CPUの数の分だけ用意する必要があり、準備コストも手間も掛かります。

▼当時の提案におけるデバッグ環境

当時の提案におけるデバッグ環境

また、トレースログとなるテストレポートを同じタイミングで取得するため、
複数台のPCで「トレース開始」ボタンを同時にクリックするという、非常に原始的な方法でした。
取得したテストレポートの確認も、それぞれのPCからCSVにエクスポートして、
1台のPCにデータを集約して、EXCELで編集したり、比較するといった方法です。

再現性が低い不具合を解析する場合で、心が折れずにこの作業を何回まで繰り返せるでしょうか?
設備費用とセッティングやデータ確認に手間の掛かってしまう(今だから言える)御粗末な提案は、
試してみようとも思わないお客様がほとんどでした。

現行のDT10のハードウェアシステムでは、実現困難なのでしょうか?

ハートランドの行動指針を体現!すぐに試作機を作ってみた!

不本意ながらも、他のお客様からの類似要望に同様の提案を繰り返すというストレス状況が継続する中、
すぐに対応するのは難しいのかなと諦めかけたことで、ゾーン状態(超集中状態)に入ったのか、
この問題を解決できそうな「ひらめき」が突然起こりました。
ひらめきは、”無”から”有”を生み出すものではありません。既存オプション品をヒントに解決策を見出したのです。

ヒントとなった既存オプション製品は、
非同期バスの接続方式で使用される「リレーボックス」というインターフェースボードです。
アドレス20Bitとデータ16Bit分の複数の信号線が入力できるこのボードをベースに、
1台のDynamicTracerに対して、複数を対象として、トレース信号を同時に入力ができるのではないか?
また、ファームウェアを変更すれば、マルチトレースした入力データを整理してバッファリングできる。

我々は、ハートランド・データ社の行動指針を体現するべく、早速、手作りで試作品を作ることにしました。
 意欲的であれ。失敗を恐れず「今無いモノ」を追求する
 迅速であれ。素早く大胆に決断・行動する
 誠実であれ。お客様と仲間のために汗をかく

▼開発時の画像

開発時の画像

▼Multi-Tracerによるデバッグ環境の構成

Multi-Tracerによるデバッグ環境の構成

3つのデモボードを並べて、GPIO4Bit接続で複数CPUの同時トレースを確認します。
1台のPCで、3つのCPUの実行経路情報が同一時間軸で確認できるようになりました。
関数遷移スコープでは、システムの動きを俯瞰して、各CPUの処理順序やタイミングが把握できます。

▼関数遷移スコープでのプロセスや関数の遷移の確認

関数遷移スコープでのプロセスや関数の遷移の確認

ついにお客様の課題解決

早速、試作品をお客様にお試しいただき、課題を解決。
世界にひとつだけのハンドメイド基板が製品化に向けて、動き出します。

<お客様の声>
「冗長化システムの各CPUの動きが同一であることが、一目瞭然で確認できた。」
「ターゲットとDynamicTracerを何度も繋ぎなおして、実行する手間がなくなったので助かった。」
「2つのCPUの動きや関係性を可視化できるようになったので、
 今まで見逃している問題が見つけられるかもしれない。今までにないデバッグができそう。」

ピンチをチャンスに!新たなデバッグ環境を提案

行動指針の体現と発想の連鎖は、まだまだ続きます。

複数CPUをトレースして、そのCPU間の通信バスもモニタできると、今までにない解析ができるのでは?
通信ラインモニター「DataCatcher3」も扱う弊社にとっては、10年以上携わる得意分野でもあり、
通信バスのモニタ機能を実装することは容易でした。

2016年10月に開催したDT10ユーザー様限定の活用セミナーにおいて、試作品をサプライズ提案。
早速「使ってみたい!」という方が多数!このときの反響は予想以上のものとなりました。

数年間くすぶっていた課題が、新たな製品としてカタチを変えて、
2017年3月、今までにない新しいデバッグ環境を提供するDT10の新しいインターフェースユニット
「Multi-Tracer」がこうして誕生しました。

まとめ

Multi-Tracerは、複数のCPUのデバッグにおいて、CPUどうしのシーケンス確認を容易にします。
また、ソフトウェア処理と実際の通信タイミングを同一時間軸で確認することもできるツールです。

皆さまの製品の開発において、Multi-Tracerの使いどころはありませんか?

無料トライアルのお申し込みや、ターゲットとの接続方法・通信ラインの対応等、
Multi-Tracerの詳細をご確認になりたい場合は、こちらからお問合せください。
http://hldc.co.jp/03/01/13851/

また、Multi-Tracerについて、もっと知りたい!という方のために、オンラインセミナーを開催します。
詳細は以下のページをご覧ください。
http://hldc.co.jp/seminar-and-event/seminar/seminar-by-type/online/os-027/