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

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

ハードリアルタイムへの対応

 自動車業界では、一定時間内に処理を終えないとシステムに致命的な影響が及んでしまう「ハードリアルタイム」処理が要求されることが多い。この要求を満たすために一から設計されたドイツInfineon Technologies社のプロセッサ「TriCore」は、最新アーキテクチャの1つである。ファミリ製品に最近加わった「TC1796」は、2000年に同社が発表した「TC1775」の150MHz版である。従来のチップでは40MHzであったクロックレートを高めたTC1796には、2Mバイトのエラー訂正に対応したフラッシュメモリーが搭載され、競合製品と比較した場合のTC1775(TC1775B)の主な欠点であった部分が改善されている。ほかのオンチップメモリーとしては、16KバイトセグメントのEEPROM、192KバイトのSRAM、16Kバイトの命令キャッシュをエミュレート可能な128Kバイトのデータフラッシュメモリーなどがある。

 TriCoreの名称は、コアが「32ビットスーパースカラCPU」、「単精度浮動小数点ユニット」、RISC/CISC/DSPアーキテクチャの利点を追求した「DSPエンジン」から構成されることに由来する。プログラムバスとデータバスを分離することにより、それぞれのコアの柔軟性を確保し、独立した処理のために最適化された種々のI/O機器からメモリーシステムを隔離する。TC1796には、自律的にI/O操作を処理することが可能な32ビットPCP(peripheral control processor)も含まれている。TC1796の参考価格は約27米ドル(1000個購入時)である。

 Infineon社のTC1796スタータキットは約400米ドルで、Eurocardフォーマットに対応したボード、パラレルポートのケーブル、およびInfineon社製スタータキットディスク、オーストラリアのAltium社の「TASKING TriCore-VXツールセット」の評価版、ドイツHitex社製ボードサポートパッケージなどのソフトウエアで構成される。CD-ROMはさらに3枚付いており、ドイツHighTec EDV-Systeme社、ドイツLauterbach Datentechnik社、米pls Development Tools社製のサンプル開発環境が含まれる。そのほかには、入門マニュアルとプロセッサのI/Oを0.1インチ(約0.25cm)のヘッダーに出力するためのブレークアウトボードがある。同キットには、オンボード電源用に5.5V〜60Vを供給可能な外部ACアダプタまたはDCアダプタが必要である。オンボード電源は、Infineon社の降圧型コンバータ「TLE6389」を使用して主電源用に5Vを出力し、米Texas Instruments社製のリニアレギュレータ「TPS76801」を使って、CPUコアが必要とする3.3Vおよび2.5Vまでさらに降圧する。ボードの主要なコンポーネントは、SAK-TC1796-256F150Eプロセッサ、4Mバイトのバーストモードフラッシュメモリー、1Mバイトの非同期SRAM、および一般的なI/Oやスイッチである。ほとんどのI/Oは4つの高密度コネクタに接続されており、そのためにブレークアウトボードが必要となっている。シリアルおよびパラレルポートインターフェースには標準でフルサイズのコネクタがあり、CANインターフェースは0.1インチのヘッダーにある。

 スタータキットCD-ROMのサブディレクトリであるQuickStartには、このキットのデフォルト環境を構成するTASKINGツールセットおよびHitex HiTopデバッガと、種々のサンプルコードをインストールして実行する手順の説明が含まれている。

 詳細は割愛するが、製品の導入はスムーズにはいかなかった。まず、サンプルコードがコンパイルできなかった。原因はそれらを開発したTASKINGコンパイラのバージョンとキットに付属されたバージョンが異なるためであった。TASKINGの開発者がなぜ上位/下位互換性を持たないツールを製造してもよいと思い続けているのかは、TriCoreの初期段階からの問題であり、いまだに謎である*4)。コンパイルの問題は解決したが、今度はうまく動作しそうに見えるトレーニング用のサンプルが実行できなかった。調査した結果、初期状態のトレーニングサンプルでは、TriCoreのプログラムカウンタがフラッシュメモリー内のデフォルトの点滅LEDプログラムを指したままになっているため、ダウンロードしたプログラムは実行されないことが分かった。ボードとパソコン間の通信に関しても何らかの問題があり修正が必要である。以上のことから、誰もこのキットをきちんとテストしたことがないのではないかという印象を受けた。

 しかし、TC1796が卓越した性能を有することは明らかなので、上述の情報だけで採用を思いとどまらないでほしいと思う(別掲記事「ECU開発を簡素化する汎用プラットフォーム」を参照)。Infineon社はこれらの問題を解決するための作業を行っているという有力な情報もある。有能なソフトウエアエンジニアならばおそらくこれらの問題を解決できるに違いない。

 上述の問題を受けて、Infineon社はTriCoreファミリへのより簡単な入門版として、同社が推奨する新しい「TC116xシリーズ」のスタータキットを無償とした。TC116xファミリは産業機器の組み込み制御用途をターゲットとしており、プロセッサ間通信のためのMicro Linkインターフェースや、外部電源ICの高速制御を行うMicro Secondバスインターフェースなど、周辺機能の完全セットが提供されている。TC1796との動作上の主な相違点は、外部メモリーバスとPCPが存在しないことである。価格が約295米ドルのこのスタータキットは、「TC1166」のスーパーセットでマーキングのないプロセッサが載ったEurocardフォーマットのボードと、電源、RS-232ポート、JTAGインターフェースを駆動するパラレルポートから成る。また、短いオス‐メス変換パラレルポートケーブル、I/Oにアクセスするためのブレークアウトボード、ユニバーサル入力電源、およびスタータキットCD-ROMが添付されている。

 2006年2月時点のCD-ROMには、作業手順、TriCoreマニュアル、Infineon社のチップ構成コードジェネレータDAVE(digital application virtual engineer)バージョン2.1r22などのソフトウエアが含まれている。DAVEは、プロセッサの初期化を主な役割とするツールであるが、そのレイヤーにはターゲットチップに関する有益な情報が多く含まれているため、調べてみる価値はある。ターゲットチップとしては、TriCoreまたはTC1166ファミリがある。ツールの出力については詳細に文書化されており、開発プロジェクトでそのまま利用可能な無償ファイルがある。デフォルトのコンパイラとしてはTASKING開発環境のバージョン2.3r1があり、同キットではそれがpls社製のUDE(universal development environment)と組み合わされている。HighTec社のGNUベースの開発環境と、Lauterbach社製のTrace32デバッガのサンプル、スウェーデンEnea社とドイツEuros社のOSサンプルも提供されている。Infineon社のTriCore向けTriLib DSPライブラリの無償コピーも入手できる。起動画面では、サンプルプログラムが使用するTASKINGコンパイラ、plsデバッグエンジン、DAVEなどをインストールするためのハイパーリンクを提供している。これによって、キットを開封してから30分以内に起動および実行が可能となる。

 残念なことだが、1つ目のhello-worldプログラムはコンパイルできず、40以上ものエラーメッセージを表示したところで終了してしまった。この問題については、キットのドキュメントにはまったく記載されていないが、TASKINGのウェブサイトにあるバージョン2.3コンパイラのリリースノートに報告されているように、外部メモリーのないTriCore向けのリンカー設定が誤っていたためである。内部メモリーに対するリンカースクリプトファイルの設定を変更し、SPRAM(single port RAM)のAlloc属性をオン、種別をROMとすることで、6つのサンプルをすべて正常にコンパイルし、実行することができた。これらのサンプルは「hello-world」からさらに踏み込み、LEDを点滅させるI/Oポートプログラムにより、組み込み環境における飽和演算、割り込み、シリアルI/O、オンチップフラッシュメモリーへのプログラミングを扱うものとなっている。演算サンプルは、TriCore命令に直接対応するTASKINGのC言語拡張の能力を示すものとなっており、サンプルコードの演算時間は、32ビットANSI-Cで262.6nsであるのに対し、64ビットのTASKING実装ではわずか37.7nsに短縮される(図2)。

図2 TriCore/TC1166ファミリの開発環境 図2 TriCore/TC1166ファミリの開発環境 TASKING開発環境のコンパイラは言語拡張により、TriCoreの演算実行時間を大幅に短縮する。

 タイマー配列を用いて、TriBoardのLEDを制御するための1秒間の割り込みを生成するサンプルもあり、TriCoreが、DAVE内でそれぞれ固有の優先度レベルが設定された最大255の割り込みソースをサポートすることを示している。多くのプロセッサでは、割り込みサービスプログラムを実行するために新しいプログラムカウンタ値をロードするが、TriCoreではコードメモリーのベクターに分岐することにより、割り込み遅延を最小限に抑えている。IRQ(interrupt request:割り込み要求)を用いたシリアル出力用のプログラムは、更新されたメッセージをハイパーターミナルに出力するための例を示す。最後のサンプルは、pls社製のUDEツールセットを使い、さまざまなシリアル出力プログラムを用いてTC1166のフラッシュメモリーをプログラムするものである。これも、デフォルトのスタータキットJTAGドライバではなくInfineon社のDAS(device access server)にツールを設定し、プログラミングが完了したらTriBoardを再起動しなければうまく動作しない。

 ツールチェーンはすべて、個人の好みにより変更可能だが、最も好まれているTriCoreの設定は、TASKINGのコンパイラとHitex社のHiTopデバッガの組み合わせである。スタータキットのCD-ROMにある選択肢以外として、GNUフリーソフトから、約3000〜4000米ドルもするメンテナンスやサポート付きのソフトウエアに至るまで、Infineon社のウェブサイト上には、さまざまなコンパイラのオプションが列挙されている。Infineon社はパラレルポートの「wiggler」インターフェースを使用しているため、回路図にある簡単なロジックを複製して、独自のプロトタイプハードウエアに使用するということが容易に行える。その後、このキットに含まれるツールを用いて、基本的なハードウエアおよびソフトウエアのデバッグを低コストで行うことができる。最適な開発を行うため、TriCoreではオンチップデバッグシステムにより3レベルのデバッグをサポートする*5)。Infineon社によると、アプリケーションの約80%は、レベル1の実行時制御と内部アクセスで十分であるという。レベル2では命令トレース、レベル3ではトリガーロジック、トレース、オーバーレイメモリーを含む完全なリアルタイムのインサーキットエミュレーションが可能で、チップの内部バスを参照することができる。スタータキットの価格はレベル2で5000〜8000米ドル、レベル3で約1万米ドルとなる。

脚注

※4…Marsh, David, "Motorsport accelerates prototype design," EDN Europe, July 2002, p.20.

※5…Marsh, David, "Auto industry drives embedded boundary-scan debugging," EDN Europe, August 2001, p. 22.


Copyright © ITmedia, Inc. All Rights Reserved.