イー・フォース株式会社様

Ethernetの異常動作をTRQerSで可視化、顧客が抱えるトラブルを迅速に解決

eForce
企業名:
イー・フォース株式会社
事業内容:
リアルタイムOSやミドルウェアの開発・販売
導入製品:
動的解析ツール「TRQerS」
適用目的:
顧客システムの不具合解析、顧客サポートの迅速化

イー・フォース株式会社(以下、イー・フォース)は、μITRON仕様のリアルタイムOSやTCP/IPプロトコルスタックなどを開発・販売しているOS専業ベンダ。同社の製品は、FA(factory automation)制御機器やデジタルカメラ、スマートメータなどに採用されている。
そんな同社は、顧客から依頼されたEthernetシステムの不具合解析に動的テスト/解析ツール「TRQerS」を適用した。原因の究明は困難を極めたが、TRQerSでシステム内部の動作を可視化することにより、問題解決に要する期間を短縮できた。
ここでは、トラブルシューティングの経緯や導入の効果などについて、同社 開発部の横田 敬久氏と、セールスグループ セールスマネージャーの野田 周作氏に話を伺った。

イー・フォース株式会社 セールスグループ セールスマネージャー野田 周作(のだ・しゅうさく)氏

2013年にイー・フォースに入社し、主に営業・マーケティングに従事。半導体メーカでの経験を生かし、ハードウェアからソフトウェアまでの幅広い相談に応じる。見た目とは裏腹に、軽快なフットワークが持ち味の営業グループリーダ。

イー・フォース株式会社 開発部 横田 敬久(よこた・たかひさ)氏

2014年にイー・フォースに入社し、OS開発に従事。μITRONとの付き合いはもう10年近く。マイコンの開発環境やエネルギー管理システムの開発経験もあり、さまざまな視点からの柔軟な発想で、日々、OS開発や技術サポートに取り組む孤高のエンジニア。技術士(情報工学部門・総合技術監理部門)。

適用対象
FA用カメラのEthernet通信で異常動作が発生
トラブルシューティング
CPUの投機的実行がトラブルの引き金に
TRQerSの評価
問題解決に至る時間を短縮できた
OSとTRQerSの連携
システムコールや割り込みの情報をOSから取得
協業の意義
「顧客の問題を解決したい」という思いを現実に

適用対象

FA用カメラのEthernet通信で異常動作が発生

イー・フォースは、同社のリアルタイムOSを採用しているFA機器メーカから不具合解析の依頼を受けた。製造ラインなどで使われているラインセンサカメラの挙動がおかしいという。カメラにはARM® Cortex®-A9コアを搭載したFPGAが組み込まれており、その上で同社のAMP OS「μC3 Standard+M」が動いていた。

異常が見つかったのはEthernetの送信動作だった。最初は問題なく動作しているのに、特定の環境下で1週間以上連続稼働させるとシステムがハングアップするという。現象の再現が難しく、メーカにはその異常がハードウェアに起因するものなのか、ソフトウェアに起因するものなのか、把握できない状況だった。

「当社に正式な解析依頼が来たのが、昨年(2015年)9月の中ごろでした。不具合が発生する環境の条件が不明だったため、なかなか現象を再現できませんでした。12月末になって初めて不具合の再現が可能となり、さらに通信量を意図的に増やすなどの工夫を重ねて、3日程度の連続稼働で現象を再現できるようになりました。動的解析ツールを使えばハングアップが起きた時点から時間をさかのぼって解析できるのではないかと思い、2016年2~3月ころにTRQerSを導入しました」(横田氏)。

トラブルシューティング

CPUの投機的実行がトラブルの引き金に

イー・フォースは、TRQerSを使ってトレース解析を行った。時間とともに割り込みが遅延し、最終的にシステムがハングアップする様子をTRQerSのチャート表示で確認した(図2)。プライベートタイマは規則正しく割り込みを発生している。OSの動作が遅くなっているわけではない。OSの時刻もずれていない。Ethernetの割り込みを阻害している別の要因があるのではないか。CPUコアのキャッシュメモリやストアバッファの動作が怪しいのではないか、と推測していった。

「TRQerSを導入するまでは、検査用の通信プログラムを用意したり、プログラムに独自のデバッグコードを仕込んだりしていました。しかしこの方法では、内部の細かい状態を追うことは容易ではありません。TRQerSを使うことで、ハングアップする直前の状態や動作がおかしくなったあとの状態を、簡単に確認することができました」(横田氏)。

動作異常の原因は、ソフトウェアではなく、FPGAの中のARM Cortex-A9コアの動作にあった。Cortex-A9の“投機的実行”の機能(分岐命令の実行履歴に基づいてプログラムの実行経路を予測し、その処理が必要かどうかが確定する前に実行する機能)が引き金となって、不具合が発生していた。

「当社のOSでは、MMU(memory management unit)のテーブルを編集してキャッシュのON/OFFを設定します。このとき、お客さまが使用する設定によっては、(キャッシュ上の)メモリマップされていないアドレスを指してしまうケースが発生していました。これだけだとプログラム的には問題ないはずなのですが、Ethernetドライバの変数がこの領域のアドレスと同じ値を指したとき、問題が生じます。CPUの“投機的実行”が働くと、プログラム上はその領域を読みにいっていないのに、実際のCPUはその領域を読みにいっている、という状況が生じていました」(横田氏)

TRQerSの評価

問題解決に至る時間を短縮できた

現在、イー・フォースではTRQerSを「顧客サポート時の解析ツール」と位置づけて使っている。

「TRQerSのおかげで、キャッシュやメモリアクセスまわりの動作に問題があるのではないか、という推測が早期に成り立ちました。不具合の現象を可視化してくれたことにより作業効率が上がり、問題解決に至る時間を短縮できたと考えています」(横田氏)。

TQRerSを実際に使ってみて、同社はその操作性や解析の精度について十分満足している。ただし、機能については改善の要望があるという。TRQerSは、クライアントとなるパソコンと接続して稼働させることが前提となっている。トレースの途中で何らかの理由によりパソコンとの接続が絶たれた場合、TRQerSがそれまで収集していたトレースデータを取り出す手段がない。

「例えばTRQerSをパソコンにつないでロングランさせたとき、パソコンの電源が落ちるかもしれません。また、お客さまの機器にTRQerSをつないだまま何日間も連続稼働させ、不具合の症状が起きたときにパソコンをつなぎ直してトレースデータを拾いたいというケースもあります。そのとき、TRQerSの中のデータを消さずに取り出す方法があると非常に便利だと思います」(横田氏)。

現状のTRQerSには、このような仕組みはない。ただし、TRQerSの後継機種である「TRQerAM」はスタンドアローン(パソコンなし)で稼働する仕様となっており、イー・フォースの要望に100%対応できる見通しである。

OSとTRQerSの連携

システムコールや割り込みの情報をOSから取得

TRQerSには、システムコールや割り込みの情報をOSから取得する機能が用意されている(図3)。OSベンダが、あらかじめOSコードの中のディスパッチ(タスクの切り替え)が発生する個所にTRQerSのチェックポイントを埋め込み、その機能の有効/無効をOSユーザが選択できるようになっている。今回、イー・フォースがTRQerSの導入を決めた背景には、こうした機能を実現するライブラリを解析前に用意できたことがある。

「TRQerSがリリースされる以前から、当社のOSはadviceLUNA(横河ディジタルコンピュータ製JTAG ICE)のシステムマクロトレース機能に対応した実績がありました。TRQerSとOSの連携機能は、adviceLUNAのシステムマクロトレースとほぼ同じです。そのため、adviceLUNA用に開発したライブラリがTRQerSでもそのまま使えました。“すぐに使えて”、“サポートも安心”という状況があり、TRQerSの導入はスムーズに進みました」(横田氏)。

協業の意義

「顧客の問題を解決したい」という思いを現実に

イー・フォースは、同社のリアルタイムOS製品である「μC3 Standard」のユーザに対して、前述のライブラリの提供を始めており、すでに医療機器メーカや計測機器メーカなどがこのライブラリを使用しているという。

「μC3 Standardは割り込み禁止区間を極力なくし、応答性能の向上に力点を置いて開発されています。一方TRQerSには、チェックポイントの挿入に伴うオーバーヘッドが比較的少なく、実動作に近いトレースが取れるという特徴があります。TRQerSとμC3を組み合わせると、大きな相乗効果を発揮すると考えています」(野田氏)。

TRQerSには、さまざまな入出力インターフェースを介してトレースデータを外部の専用ハードウェアへ転送する方式(ハードウェアモデル)に加えて、専用ハードウェアを使わず、トレースデータをユーザシステムのメモリに記録する方式(ソフトウェアモデル)が用意されている。イー・フォースは、TRQerSがこうした幅広い選択肢を用意していることも評価しているという。

「今回、当社が経験した案件は、オフィシャルには、お客さまのほうで問題の切り分けをしていただきたいものです。しかし、当社としましては、『OSの問題ではないのでサポートを放棄する』ということではなく、『お客さまの問題を解決したい』という思いがあります。TRQerSは、こうした当社の思いをかなえてくれたツールであると言えます。当社のケースと同じように、このツールがリアルタイムOSユーザの問題解決や、開発期間短縮の一助になれば、と考えています。

μC3はTRQerSを使用する上で必要となるAPIライブラリに対応しています。特に、TRQerSソフトウェアモデルは専用ハードウェアを必要としないため、コストセンシティブなユーザに最適だと思います。
μC3/StandardとTRQerSには、共に無償評価版が用意されていますので、是非一度μC3とTRQerSを体感してみてください」(野田氏)。

μC3/Standard 製品概要https://www.eforce.co.jp/products/microc3s
μC3/Standard 評価版https://www.eforce.co.jp/download
TRQerS 評価版https://ksv107.konishi-p.co.jp/product/dynamic_tool/contact/index.php?m=Mail&conid=30