自動車向けプロセッサの開発環境を試す(3/4 ページ)

» 2007年03月01日 00時00分 公開
[David Marsh,EDN]

DSPを使いこなす

 オーディオデータの圧縮から振動解析に至るまで、一連のデータに対し、リアルタイムで繰り返し計算を実行したいなら、DSPエンジンに勝るものはない。にもかかわらず、多くのエンジニアはこのDSP技術が複雑で高価すぎると思い込み、利用したがらない。しかし実際のところ、DSPの中で低価格帯に位置するTI社の固定小数点タイプDSP「TMS320F2808」は、100端子BGAパッケージで、価格は11.60米ドル(1000個購入時)からである。リアルタイム制御をターゲットとするこのチップは、36KバイトのSARAM(single access RAM)と128Kバイトのフラッシュメモリーを100MHz動作のDSPコア「C28x」とともに集積し、通常のマイクロコントローラ周辺機能に加え、デュアルCANポートと16チャンネルのPWMモジュールが追加されている。また、2KバイトのワンタイムプログラマブルROMブロックと、独立した8KバイトのブートROMもある。チップにはリアルタイム処理に必要なハードウエアデバッグ機能があり、付属のTI社のDSP開発環境「CCStudio(Code Composer Studio)」スイートを利用することができる。ソフトウエアサポートとしては、TI社のDSP/BIOSカーネルと、高速固定小数点演算プログラムやデジタルモーター制御アルゴリズムなどのライブラリ群がある。

 米Spectrum Digital社からは、469米ドルのF2808 eZdspシステムキットが提供されており、コンパクトな開発ボード、CD-ROM、USBケーブル、電源および入門パンフレットが含まれている。ボードにはターゲットとするTMS320F2808、「TMS320DA255」、米Actel社のFPGA、2つのスイッチアレイ、およびシリアルブートEEPROMなどが搭載されている。2つの9端子D型コネクタにはプライマリのCANとSCIバスがあり、それぞれのセカンダリは0.1インチのヘッダーに存在する。最後のヘッダーはオプションでJTAGエミュレータをサポートする。同キットではUSB接続をこの目的に使用する。2つのヘッダーをあまり近づかないように配置したため、オプションで汎用I/Oとアナログ信号を接続することができ、外部信号レベルはTMS320F2808のI/Oレベルの3.3Vを超えないようにしている。TMS320F2808がラッチアップして破壊する危険性を避けるため、外部信号を入力する前に開発ボードに通電することも必要である。従って、通常の自動車または産業用の5Vレベルで動作するすべてのカスタムインターフェースに対し、ホットプラグが可能となるようにレベル変換トランシーバを用意するとよい。

 Windows XP Proを搭載したマシンにCCStudioをインストールする作業は、10分ほどで完了する。その際に自動的にUSBドライバやボードサポートパッケージ、フラッシュバーナーユーティリティがインストールされる。インストールの完了は、デスクトップの診断アイコンを起動することにより確認できる。ここで、インストールによりTMS320F2808の例と同様にCCStudioのTMS320F2812バージョンのアイコンも作成されたが、これはキットの動作には関係なく、CD-ROMには認証コードが存在しないため、CCStudioのF2812バージョンを登録することはできないことが分かった。また、キットに付属していたソフトウエアは、フリーキットバージョンではなく、Platinumバージョンである。

 Spectrum Digital社のダウンロードサイト上にあるF2808の部分には、ハードウエアリファレンスガイドと回路図、およびユーザーをCCStudioの総合チュートリアルへと導く入門ガイドなどのドキュメントがある。この貴重なチュートリアルは、3つのモジュールから成り、ユーザーにIDE、DSP/BIOSリアルタイムカーネル、リアルタイムエミュレーションの機能を提供する。これにはいくつかうまくできた個所がある。例えば、IDEは自動的にプロジェクトに必要なincludeファイルをインポートする。アセンブリ言語の命令に関する説明も、それをクリックしてF1キーを押せば表示することができる。さらにIDEには、パソコンのファイルからボードにテストデータをインポートし、プローブポイントメカニズムを利用してファイルI/Oに結果データを返すなど、かなり便利な機能がある。例えば、特殊なブレークポイントであるプローブポイントは、ターゲットを一時的に停止して、プロセッサを再起動する前に自動的にデータ転送を行う。これはリアルタイム検証よりもプログラム開発に適した技法である。結果のデータはViewメニューでパラメータを設定し、サンプル正弦波入力データと出力の変化を表示することにより、グラフ化することができる(図3)。

図3 データをグラフ化した結果 図3 データをグラフ化した結果 CCStudioを用いれば、ホストコンピュータからデータファイルをインポートし、グラフ化などの処理を行なうことが可能である。

 IDEのその他の主な機能としては、最適化が必要なコード個所の特定を支援するプロファイルや、CCStudioの設定の自動化、ランタイム機能の実行を可能とするGEL(general extension language:汎用拡張言語)などがある。

 DSP/BIOSカーネルは、モジュールの集合として構成され、それらをアプリケーションに接続して、リアルタイムスケジューリング、同期、ホスト/ターゲット間通信を実現することができる。プログラム実行時に動作を監視するためのコードを生成する方式を採用しており、カーネルのプリエンプティブなマルチスレッド機能を使用するためのコードが自動的に生成される。構成ツールはユーザープログラムに必要なDSP/BIOSオブジェクトのみをリンクし、メモリー、割り込みハンドラ、スレッド優先度の設定を可能とする。チュートリアルではまず、hello-worldメッセージをコンソールに表示するためのstdio.hのputs関数のサイクル数を測定する方法を示している。これにより、DSP/BIOS呼び出しログからI/Oが高速化されている様子が観測できるはずである。しかし診断では正常に処理が完了したと報告されるにもかかわらず、この処理は遅くなった。おそらくRTDX(real time data exchange)サブシステム内で問題が生じているためだと思われる。一方、次のサンプルでは、DSP/BIOS内のリアルタイム解析関数を用いたスレッド実行測定が完璧に行え、定めた期限までにプロセスを完了させることを保証する能力がこの環境にあることを示している。CPU負荷のグラフを利用すれば、この状態をより明確に示すことができる。GEL環境のロード関数を用いてダミーのサイクルを追加することにより、時間軸を観測することが可能である(図4)。DSP/BIOSチュートリアルに含まれるその他の内容としては、リアルタイム動作の解析や仮想I/O機器の接続などがあり、「試してみると便利な機能」が盛り込まれている。

 ここで紹介した内容では物足りないという読者は、TI社のウェブサイトから、学生やエンジニアに好評なDSP入門関連の無償ドキュメントなど、さまざまな情報を入手するとよい*6)。自動車関連ユーザーには、Spectrum Digital社のF2808のページにあるeZdspF2808診断およびデモソースコードVersion 2のドキュメントが特に興味深いだろう。このコードには、TMS320F2808診断用のソースおよびプロジェクトファイルに加え、CANループバックテストプログラムが含まれている。CCStudioのTMS2000バージョンに対する1年間有効なライセンスは495米ドル、すべてのTMS320ファミリの開発で利用可能なユニバーサルバージョンは3595米ドルである。

図4 CCStudioの開発画面 図4 CCStudioの開発画面 CCStudioは、自動コード生成によりプログラムのリアルタイム性を保証する。

脚注

※6…Marsh, David, "The home-study route to DSP," EDN Europe, September 2003, p.29.


Copyright © ITmedia, Inc. All Rights Reserved.