IPA


開発成果一覧へ

 



2006年度上期 未踏ソフトウェア創造事業  採択案件評価書

 


1.担当PM

   高田 浩和 (株式会社ルネサステクノロジ システムコア技術統括部 CPU開発第二部)


2.採択者氏名

開発代表者

藤田 憲正 (株式会社トランス・ニュー・テクノロジー 研究開発グループ 京都研究室)

共同開発者

なし


3.プロジェクト管理組織


   株式会社トランス・ニュー・テクノロジー


4.委託金支払額


  6,188,380


5.テーマ名


 PCIバスを利用した組み込み向けデバッグ支援システムの開発

 


6.関連Webサイト


 なし


7.テーマ概要


 本提案では、複雑化した組み込みシステムのデバッグ効率を改善する、低コストなデバッグ支援システムの開発を目的とする。
 近年、組み込みシステムの高性能化が進んでいる。組み込みシステムは大規模で複雑になり、ソフトウェアのデバッグ作業は困難なものとなっている。バグの種類によっては、非常に手間のかかるデバッグ作業を余儀なくされる。
 一方、高性能化によって組み込みシステムにもPCIバスが多く用いられるようになっている。システムの構成にもよるが、PCIバスには、メインメモリアクセスを除く多くのバスサイクルが発生している。これらのバスサイクルを観測し時刻情報と共に記録し、これらを利用してやることによって、デバッグ作業を効率化できるシステムを目指す。
 このPCIバスを観測し解析するデバッグ手法は、既存の機器であるPCIバスアナライザを用いれば簡単に実現できる。しかし、PCIバスアナライザは、機器のコストが非常に高く、組み込みソフトウエアに多い予算規模の小さい開発現場では到底使えない。
 そこで本提案では、既存のFPGAが搭載されたPCIバスカードエッジを持つ2枚のボードとPCを組み合わせて利用することによって、低コストでPCIバスアナライザ相当の機能を実現し、さらにデバッグ支援機能を実現するソフトウェアの開発を行うことによって、組み込みシステムのデバッグ環境の改善を目指す。
 なお、開発したソフトウェアは、特に問題がない限りオープンソースとして公開することを考えている。

 


8.採択理由


 PCIバスを用いたシステム組み込みシステムのデバッグ容易化を目的として、低コストな簡易PCIバスアナライザを開発する。ハードウェア記述言語(HDL)を用いた、FPGAボードに搭載するハードウェアの開発が中心となる。非常にニッチなテーマではあるが開発に成功すれば有用性は高い。個人プロジェクトであるからこそ実現可能なテーマであり、未踏プロジェクトで支援するのが適当と判断し採択をした。HDLを含め、開発成果はオープンソースとして公開する予定。

 


9.開発目標


 このようなPCIバスを観測し解析するデバッグ手法は、既存の機器であるPCIバスアナライザを用いれば簡単に実現できる。しかし、市販のPCIバスアナライザは、ハードウェアデバイスの開発をターゲットとしている傾向があり、ソフトウェアのエンジニアには扱いにくいという問題がある。また、そもそも機器のコストが非常に高く、予算規模の小さい開発現場ではなかなか使用することができない。

 そこで本プロジェクトでは、既存のハードウェアを組み合わせて利用することによってPCIバスアナライザ相当の機能と前述のデバッグ支援機能を実現するソフトウェアの開発を行うことを目標とした。

 具体的には、FPGAが搭載されたPCIバスカードエッジを持つ2枚のボードとデータ処理用のPCを1台用意する。FPGAボードの一方をデバッグ対象のPCIバスの信号を観測するプローブカードとして使用し、もう一方をデータ処理用PCへのデータ転送カードとして使用する。また、この2枚のボード間は適切なケーブルで接続する。

 本プロジェクトでは、

● プローブカードのFPGAに載せるソフトウェア(HDL

● データ転送カードのFPGAに載せるソフトウェア(HDL

● データ処理用PCで動作するデバッグ支援ソフトウェア

をそれぞれ開発する。

 


10.進捗概要


 未踏申請時点では、まったくアイデアレベルの提案であったため、プロトタイプも存在せず、スクラッチからの開発となった。ボードの購入に時間がかかったこともあって、8月の時点でようやくHDL周りの設計に取りかかることができ、前半が終わる頃は、開発は当初の予定よりも大分遅れていた感がある。その分、スケジュールのしわ寄せが後半に及んだが、開発者の社内外の協力者の助力を得ながら、後半は順調に開発を進め、なんとか中間成果報告会(12月中旬)の時点では、ほぼ簡易PCIアナライザとしての、基本機能を確認することができた。その後も、最終成果報告前に合宿を開いて最後の追い込みを行うなどして、最終成果報告会では、ほぼ当初の目標どおりのシステムを完成させることができた。

 


11.成果


 本プロジェクトでは、以下のハードウェア/ソフトウェアからなる、デバッグ支援システムを開発した。、

● 簡易PCIバスアナライザ・ハードウェア

● 簡易PCIバスアナライザ制御ソフトウェア

● 簡易PCIバスアナライザ・ユーザインターフェイス・ソフトウェア

● デバッグ支援ソフトウェア

 

以下、それぞれ簡単に説明する。

 

● 簡易PCIバスアナライザ・ハードウェア
簡易PCIバスアナライザ・ハードウェアは、PCIカードエッジを持つFPGA評価ボードに搭載するFPGA構成情報である。FPGA評価ボード2枚を用い、1枚は、ターゲットのPCIバスよりデータを取得し、データを送り出す機能を持つ。もう1枚は、送り出されたデータを解析用PCに転送する機能を持つ。それぞれ別のFPGA構成情報としてHDL(ハードウェア記述言語)で記述する。

 

● 簡易PCIバスアナライザ制御ソフトウェア
上述の「簡易PCIバスアナライザ・ハードウェア」を制御するソフトウェアであり、PCIバス上を流れるデータの取得を行うためのものである。Linux上で動作するソフトウェア。

● 簡易PCIバスアナライザ・ユーザインターフェイス・ソフトウェア
取得したPCI上を流れるデータをグラフィカルに表示するソフトウェア。Linux版とWindows版を用意する。

● デバッグ支援ソフトウェア取得したPCIバス上を流れるデータを解析し、PCI I/OアクセスやPCIメモリアクセス、PCIコンフィギュレーションアクセスといった、ソフトウェアでの動作と対応する形で解析結果を表示する。

 

 本プロジェクトで開発を行った結果、簡易PCIバスアナライザのハードウェア/ソフトウェアの機能はいずれも動作する状態となり、デバッグ支援システムとしての動作を実現することができた。さらに、「簡易PCIバスアナライザ・ハードウェア」については、FPGA評価ボード2枚構成だけでなく、より低コスト化が可能なFPGA評価ボード1枚のみを用いる構成についても実現することができた。

 

 本プロジェクトで開発した成果物の特徴は、以下の通りである。

● 割り込みを使うソフトウェアのデバッグや、マルチスレッドアプリケーションのデバッグなど、通常であれば、コードの実行順序がわかりにくくなりがちな状況において、コードの実行順序特定が可能なこと。

● ICE(In-Circuit Emulator)等であれば、実行速度に制限がかかる場合が多いが、本システムではコードの実行速度に影響を与えることなく、デバッグに必要な情報が取得可能であること。

● デバイス制御等のデバッグにおいて、ソフトウェアが原因なのか、ハードウェアが原因なのかを特定でき ない場合に客観的な立場でデバッグ情報を提供できること。

 

 

 以下、具体的な成果について示す。

1.簡易PCIバスアナライザの動作原理

 システム構成にも依存するが、PCIバスを持つコンピュータシステムにおいては、メインメモリへのアクセスを除く周辺デバイスへのアクセスサイクルの大半がPCIバス上に流れる。このアクセスサイクルを発生時刻と共に記録する。この記録を、実行したソフトウェアと照らし合わせることにより、プログラム・コードの実際の実行順序を特定することができる。これによって、割り込み等により実行順序が複雑なタイミングに依存する現象の解析が可能となる。また、そのアクセスサイクルが発生した時刻を記録することにより、特定の処理間に要した時間を計測することが可能となる。

 PCIバスの構成によっては、限定的なデバイスへのアクセスサイクルしか発生しないが、実行するソフトウェアにPCIバスにアクセスを発生させるようなマーカーコードを挿入することにより、同様にプログラム・コードの実際の実行順序を特定したり、特定の処理間に要した時間を計測したりすることが可能となる。これは、PCBIOSが行っているPOSTPower On Self Test)コード表示のような機能であり、よりわかりやすく対象となるソフトウェアをデバッグすることが可能となる。

 

 PCIバスのアクセスサイクルを記録するためには、PCIバスアナライザに相当する装置が必要となる。低コストでPCIバスアナライザに相当する機能を実現する方法として、FPGAの搭載されたPCI評価ボードを用いる。FPGAの搭載されたPCI評価ボードは、PCIバスの動作に関わるすべての信号がFPGAと接続されている。これを利用して、PCIバスの全ての信号をFPGAに対する入力としてやることにより、PCIバス上を流れる全てのデータを取得することが可能となる。

 

 本プロジェクトでは、これらPCIバスの性質とFPGAの機能を生かして、組み込みシステムソフトウェアのデバッグ支援システムを開発した。

 

2.簡易PCIバスアナライザ・ハードウェアの開発

 PCIバスのアクセスサイクルを記録するためには、PCIバスアナライザに相当する装置が必要となる。現在、市販やレンタルされているPCIバスアナライザは、非常に高価であるので、なかなか組み込みシステムの開発現場で使うのは難しい。そのため、低コストでPCIバスアナライザに相当する機能を実現する方法として、データ解析用PCFPGAの搭載されたPCI評価ボード2枚を使用した。

 

 FPGAの搭載されたPCI評価ボードは、PCIバスの動作に関わるすべての信号がFPGAに入力されている。そこで、1枚のボードを、PCIバスの信号を観測するプローブカードとして用いる。もう1枚のボードは、データ解析用PCに接続し、データ転送のために通常のPCIデバイスとして用いる。2枚のボード間は、適切なケーブルを用いて接続する。図1にシステムの構成を示す。

 

図1.システムの構成

 

 本プロジェクトで開発したシステムに用いたFPGA評価ボードは、東京エレクトロンデバイス株式会社 inrevium プロダクトグループ製PCI開発用プラットフォーム TD-BD-PCI66 (http://www.inrevium.jp/board/pci66.html)である。このFPGA評価ボードを2枚用いることにより図1のシステムを構成する。FPGA評価ボードの外観を図2に示す。

 

図2.TD-BD-PCI66 外観
 

 

このFPGA評価ボードの主要な構成要素は以下の通りである。

● PCIカードエッジ(64bit対応)

● LVDSコネクタ(WideSCSI形状互換)

● PCIFPGA Spartan-II

● LVDSFPGA Virtex-II

 

 プローブ用カードとして用いる側は、PCIバスの情報をフィルタして取得する機能をPCIFPGA Spartan-II に搭載する。また、Spartan-II からのデータをLVDSコネクタに出力する機能をLVDSFPGA Virtex-II に搭載する。また、プローブ用カード側のPCIFPGAでは、データ取得を開始・終了するトリガ条件の設定や、特定のパターンに合致するデータのみを取得するフィルタ条件の設定を可能にした。

 データ転送用カードとして用いる側は、LVDSコネクタからの入力を受け取り、PCIFPGAに渡す機能をLVDSFPGA Virtex-II に搭載する。そのデータはPCIFPGA Spartan-II に転送される。PCIFPGA Spartan-II には、通常のPCIデバイスとしてデータ転送機能を搭載する。

 これら4つのFPGAに搭載する構成情報は、全てHDL(ハードウェア記述言語)により記述し、Xilinx社製FPGA統合開発環境ISEによりコンパイル・生成を行った。

 ターゲットハードウェアをプローブする側は、32ビット33MHz動作のPCIバスに対応する。データ転送を行う側は、64ビット66MHz動作のPCIデバイスとして動作させている。

 

 また、本プロジェクトでは、FPGA評価ボードを1枚のみ使う構成についても、検討・実装を行った。1枚のみを使う構成については、図3の通りである。データ取得用PC+データ転送用ボードの代わりに、FPGA評価ボードにストレージを持たせる。ここにPCIバスより取得したデータを蓄えておき、後からデータを取り出すことによりFPGA評価ボード2枚構成とほぼ同じ機能を実現している。この構成には、Xilinx社製ML-455を用いている。図4にML-455の外観を示す。

 この時検討した、FPGA評価ボードの使用枚数についての各方式の特徴は以下の通りである。

 

○ FPGA評価ボード2枚構成

☆ 長所

・ ターゲットハードウェアのシステム構成、例えば、CPUOS、あるいは、各種ソフトウェア等と無関 係にデータ取得が可能。

・ 任意のタイミングでデータの取得が可能。

・ リアルタイムでのデータ解析の可能性が残されている。

☆ 短所

・ FPGA評価ボードを2枚用いるため、コストがかかる。

・ ケーブル経由でのデータ転送における転送速度がネックとなる。

○ FPGA評価ボード1枚構成

☆ 長所

・ FPGA評価ボードが1枚で済むためコストが安い。

・ ストレージとして選べる物は、FPGA評価ボードの種類によるが、SRAM/SDRAM等を用いた場合、余裕をもってデータ転送が行える。

☆ 短所

・ ターゲットハードウェアのシステム構成によっては、ストレージに蓄えられたデータの取得が困難 あるいは不可能である。

・ ターゲットハードウェアが不安定な状態においては、同じく、ストレージに蓄えられたデータの取得が困難あるいは不可能となる。

 

図3.システムの構成(ボード1枚)

 

図4.システムの構成(ボード1枚)

 

3.簡易PCIバスアナライザ・ソフトウェアの開発

(1)簡易PCIバスアナライザ制御ソフトウェア

 前述の簡易PCIバスアナライザのハードウェアを制御し、データを取得するためのソフトウェアである。ユーザの指示により、データ取得開始・終了、トリガ条件の設定、フィルタ条件の設定等を行う。Linux上のコマンドラインで使用する。

 

(2)簡易PCIバスアナライザ・ユーザインターフェイス・ソフトウェア

 前述の簡易PCIバスアナライザ制御ソフトウェアにより取得されたデータを表示するソフトウェアである。表示スタイルは、ロジックアナライザ風の形式となっている。検索、拡大・縮小、移動等の機能を有し、取得したデータの任意のタイミングでのPCIバスの動作を確認することが出来る。Linux版とWindows版がある。Linux版は、qtを利用しており、C++言語で実装している。Windows版は、C#言語で実装している。図5にLinux版の画面サンプルを、図6にWindows版の画面サンプルを示す。

 

      

 

図5.Linux版の動作画面サンプル

 

 

図6.Windows版の動作画面サンプル

 

(3)デバッグ支援ソフトウェア

 前述の簡易PCIバスアナライザ制御ソフトウェアにより取得されたデータのトランザクションを解析し、表示するソフトウェアである。簡易PCIバスアナライザユーザインターフェイスソフトウェアだけでは、PCIバスの動作を理解している必要があるため、ソフトウェア技術者にはわかりにくい。そこで、PCIのトランザクションを解析し表示するツールである。LinuxおよびWindowsのコマンドラインで動作する。図7に表示例を示す。

図7.デバッグ支援ソフトウェア出力サンプル

 


12.プロジェクト評価


 本プロジェクトでは、PCIバスを用いた組み込みシステムのデバッグ支援を目的として、低コストな簡易PCIバスアナライザを開発することを目指した。具体的な開発内容としては、ハードウェア記述言語 によるFPGAの実装と、取得した波形データの表示ツールの作成を行い、簡易PCIバスアナライザとしてのハードウェア/ソフトウェア環境の整備とFPGAボードでの実機動作検証までを行った。

 

 開発者の藤田氏については、ACM/ICPC(国際大学対抗プログラミングコンテスト)での活躍経験を生かし、個人レベルの高い能力を発揮しながら、所属組織の社内外の協力者の助力を得て、当初の目標どおりFPGAでボードで実際に動作するシステムの開発を成功させた。アイデアレベルの提案をみごとに実装し、9ヶ月という短い未踏プロジェクトの開発期間中に一応の完成をみたこと、そして、当初の計画にはなかったが、FPGAボードを2枚でなく1枚で構成する、より低コストなタイプのシステムについても最終的には検討を進め、実装を行うことができたことは、非常に素晴らしい。

 

 今回のプロジェクトは、単に、安価なPCIバスアナライザの開発に成功したということだけでは決してない。注目すべきは、現在、FPGAを用いることで、個人レベルでのハードウェア開発がすでに可能となっているということである。PCIバスアナライザのようなシステムについては、これまでオープンソースとして公開されたものは存在しなかった。今回の成果が、ハードウェア開発を含む、オープンソース・ソフトウェア開発プロジェクトとして公開される予定であることは、ある意味画期的な事と思われる。

 

 未踏プロジェクトの開発期間は終了したが、プロジェクトとしては、ツールの機能の拡充や、ユーザインタフェースや使い勝手の向上など、実用化に向けてツールの完成度を上げる作業がまだ残っている。デバッグ支援システムとしてはシステムの安定性も不可欠である。これからも、ソフトウェア開発者の視点でハードウェアを開発することで、より使い易いシステムにすべく、機能の追加・改良をさらに継続して進めていって欲しい。開発を継続していく中でさらにブラッシュアップされ、より洗練された実用的なシステムとなることを大いに期待している。

 


13.今後の課題


 現在のところ、まだ、FPGA評価ボードを使用していくつかのデモンストレーションが動作したばかりの状況である。有用なツールとして普及させていくためには、実際にこのシステムを使用しながら、さらに改良を重ねてゆく必要があろう。

 

 今後の課題としては、

● 実際に組込みシステムのソフトウェア開発に適用し、機能やユーザインタフェースについて、開発成果へのフィードバックを行うこと。

● 誰もが使えるツールとして普及させるために、わかりやすいユーザーズガイド等のドキュメントを用意し、公開すること。もちろん、効果的な使用方法などのノウハウやアップデート情報などについても積極的に公開すべきである。

 

 とはいえ、単にオープンソースとして公開するだけでは普及させることは難しい。ユーザや他の開発者を巻き込んだコミュニティ作りが必要となってこよう。

 望むらくは、簡易PCIバスアナライザの開発だけにとどまらず、さらにこのプロジェクトが、ソフトウェア開発者だけでなくハードウェア開発者の興味をも集めるような、これまでになかったタイプのユニークなオープンソース・プロジェクトの一つとして発展し、コミュニティを展開していってくれることを期待している。

 

 

  ページトップへ   

 

 

 


  Copyright(c) Information-technology Promotion Agency, Japan. All rights reserved 2004